API and Integrations
REST API, webhooks, OAuth authorization, SDK for developers, and ready integrations with popularpopular platforms
Getting Started with API
viva provides a powerful REST API for automating operations, integrations with your systemsaters and creation custom apps.
ℹ️ Basic information:
- Base URL:
https://api.shookout.com/v1 - Protocol: HTTPS only (TLS 1.2+)
- Format: JSON (application/json)
- authorization: API Keys or OAuth 2.0
- Rate Limits: 100 requests/minute (Free), up to 10,000/minute (Enterprise)
- Documentation: docs.shookout.com/api
Receiving API key
-
Log into your accountGo to on shookout → Log into your account → Open Dashboard.
-
Open settings APISettings → Developer → API Keys → Click "Create New API Key".
-
Configure access permissionsSelect scope (resolution of): read:products, write:products, read:orders, write:orders, read:analytics, webhooks. Principle minimum privileges — only required rights.
-
Save keyCopy API Key and Secret — they are shown ONLY ONCE. Store them securely (for example in the .env file, NOT in the code). If lost — delete key and create new.
First request
Main endpoints
Product management
Order payments
Analytics
Account management
Webhooks (Webhooks)
Webhooks allow you to receive real-time notifications about events on the platform without constant polling of the API.
Setup webhooks
-
Create an endpoint on your serverConfigure a URL that will receive POST requests from our system. Must respond with 200 OK within the period of 5 seconds. Example: https://yoursite.com/webhooks/v-marketplace
-
Register the webhookSettings → Developer → Webhooks → Create Webhook → Enter URL → Select events you want to receiveeceive → Save.
-
Check signatureEach request is signed with HMAC-SHA256. Check the X-Webhook-Signature header for security. The secret for signing is shown when creating webwebhook.
Available events
Webhook processing example
Important for webhooks:
- Always verify the request signature — this protects against fake requests
- Respond 200 OK quickly (<5 sec) — long processing should be done asynchronously
- Implement idempotency — one webhook may arrive multiple times
- Store webhook_secret securely (use environment variables)
- Log all incoming webhooks for debugging
OAuth 2.0 authorization
for apps which work from name users use OAuth 2.0 for up to API keys.
OAuth Flow (Authorization Code)
-
Register appSettings → Developer → OAuth Apps → Create App → Specify name, redirect URI, scope → Get Client ID and Client Secret.
-
Redirect userSend user on: https://shookout.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT&scope=read:products,write:orders&response_type=code
-
Get authorization codeAfter granting access, the user will be redirected to your redirect_uri?code=AUTHORIZATION_CODEION_CODE
-
Exchange code on tokenPOST https://api.shookout.com/v1/oauth/token with client_id, client_secret, code, redirect_uri → Get access_token and refresh_token.
-
Use access tokenMake API requests with the header: Authorization: Bearer ACCESS_TOKEN. Token is valid for 1 hour.
-
Update tokenWhen access_token expires — use refresh_token to get a new one: POST /oauth/token with grant_type=refresh_token.
SDK and libraries
Official SDKs simplify integration with our API:
Installation SDK (examples)
Rate Limits
Restrictions frequent requests depend from your pricing plan:
| Pricing plan | Requests/minute | Requests/hour | Burst |
|---|---|---|---|
| Free | 100 | 2,000 | 150 |
| Basic | 500 | 10,000 | 750 |
| Pro | 2,000 | 50,000 | 3,000 |
| Business | 5,000 | 150,000 | 7,500 |
| Enterprise | 10,000 | 500,000 | 15,000 |
ℹ️ Rate Limit Headers: Each API response includes headers:
X-RateLimit-Limit— maximum requests in minuteX-RateLimit-Remaining— remaining requestsX-RateLimit-Reset— rate limit reset time (Unix timestamp)
When the limit is exceeded you receive 429 Too Many Requests with the header Retry-After.
Ready-made integrations
Integrate shookout with popular platforms without programming:
Frequently asked questions
API is free on all plans. You pay only for platform use (commission on sales). Rate limits depend from plan, but Basic Free plan (100 req/min) enough for most integrations. for high-load apps recommend Business or Enterprise.
No, API is available to all registered users. Simply create an API key in settings. If you're building an app for other users(not only for yourself) — use OAuth 2.0 and register OAuth App in Developer Settings.
Current version: v1 (stable). We guarantee backward compatibility within major versions (breaking changes only when transition to v2). Old versions is supported minimum 12 months after releasefor new versions. Follow for anonyourself API changes in Developer Newsletter.
Use Test Mode: Settings → Developer → Test Mode → Enable. In test mode: payments are not processedrocessed (use Stripe test cards), all data is isolated from production, webhooks are on test endpoints. A break between test/live ers in dashboard.
Currently only REST API. GraphQL API is planned for Q3 2025. It will be available alongside REST REST (not replaces its). If you needed GraphQL — write to us, we added you in list early tracker GraphQL beta.
API returns standard HTTP codes: 200 OK (success), 400 Bad Request (validation), 401 Unauthorizedhorized Unauthorized (no/incorrect token), 403 Forbidden (not enough rights), 404 Not Found, 429 Too Many Requests (rate limit), 500 Server Error. All errors always JSON: {"error": {"code": "...", "message": "...", "details": {...}}}. Retry for 429 and 5xx, not retry for 4xx.
Yes! Use POST /v1/uploads with multipart/form-data. Maximum file size: 500 MB via API (for large files use resumable upload)uploads — documentation in API docs). after uploads get file_id which you can with to the product in POST /v1/products.
Yes, all list endpoints support cursor-based pagination. Parameters: limit (default 20, max 100), cursor (for next page). Response includes: data[], has_more (boolean), next_cursor (string). Example: GET /v1/products?limit=50&cursor=abc123.
Available scopes: read:products, write:products, read:orders, write:orders (refunds), read:analytics, read:account, write:account, webhooks (webhook management). Use minimum necessary permissions. User sees the list of permissions of when authorization your app.
Resources for developers: (1) Full documentation API, (2) GitHub examples and SDK, (3) Developer Community forum, (4) Email support (response within 24h), (5) Discord #developers channel for quick questions.
Need help with integration?
Our developer team will help with API setup and integrations
Contact dev support