https://app.sideshift.app.
Current Platform authentication
Both current authentication methods call the same/api/oauth/v1 resource endpoints and use
the same scopes, pagination, errors, idempotency, subscription checks, and rate limits.
Your own company
Create a scoped Platform API key. No redirects or token requests.
Other SideShift users
Register an app, run consent with PKCE, and exchange the code.
Scoped Platform API key
Use a Platform API key for your own scripts, scheduled jobs, backend services, and internal dashboards. Create it in Settings → Platform API & MCP → API keys, then send it only as:sspk_ prefix and dedicated header let SideShift select the API-key verifier immediately;
the server does not attempt OAuth first. Keys are bound to the selected company and may explicitly delegate direct agency children.
Every request is limited by the saved key scopes and the creator’s current permissions; child
requests also check current child access. See Team and integration permissions.
OAuth 2.1
Use OAuth authorization code with PKCE (S256) when your product connects another SideShift
company. Every access token is bound to the connected company and scopes that user approved.
Send access tokens as bearer tokens:
campaigns:read and campaigns:write.
Request the narrowest set your integration needs. Sensitive scopes are called out on the
consent screen and in the reference.
Agency sub-account requests
An agency parent can delegate a scoped Platform API key or human OAuth/MCP grant to all direct sub-accounts (including ones created later) or an explicit current subset. Choose delegation when creating a key or approving OAuth consent. Each request still has exactly one effective company: omit the header to use the connected parent, or sendX-Act-As-Company with a consented
direct child’s company id.
Use GET /companies with settings:read to resolve company ids rather than guessing them.
sspk_… key, use x-api-key instead of the
Bearer header in these examples. Key scopes and delegation are selected at creation; OAuth/MCP
delegation is chosen during consent. Company client_credentials tokens do not carry child
delegation. See Agency access for setup, examples, and error recovery.
Legacy Platform API key
Legacy integrations send the key created in Settings → Integrations on every request:Connect
A key created in Settings → Connect, sent asx-api-key.
The key prefix selects the environment - sk_test_… routes to sandbox and sk_live_… to
production, against the same base URL. There is no separate sandbox host.
Scraper
An independent key created in Scraper → API Keys, sent asx-api-key.
- Click Create key.
- Copy it immediately - the full value is shown only once.
Rate limits and errors
Current Platform resource requests allow 600 requests per minute per credential and company, whether the credential is a scoped Platform API key or an OAuth client. Responses includeX-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset; a 429 also includes
Retry-After.
The deprecated Platform API-key surface returns these headers on every response:
X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
- 100 requests per minute per API key
- 400 requests per minute for allowlisted partner accounts
{ "error": "<message>" }:
Current Platform resource errors (for both scoped API keys and OAuth) use
{ error: { code, message, requestId } }. Include requestId when contacting support. See
the API-key quickstart errors for the most common fixes.
Connect has its own per-endpoint limits - account creation 100/hour, token generation 30/min
per account, transfers 60/min, general 100/min - returning 429 with a Retry-After header.
See Connect.
Scraper accounts default to 120 requests per minute across all endpoints, with optional
account-specific limits. See Scraper billing, errors, and limits.