https://app.sideshift.app.
Platform — API key
A key created in Settings → Integrations, sent on every request.402 { "error": "Active subscription required" }.
The published API-key surface is read-oriented — 24 operations, of which 5 write
(export posts, create a program invite, and create/send/void invoices). Restricted
endpoints such as Jobs, Applicants, and payout execution are not part of this spec;
they live in a separate Full Access spec available to allowlisted partner accounts.
Platform — OAuth 2.1
OAuth 2.1 authorization code flow with PKCE (S256). Access tokens are bound to a single tenant (company_id) and carry only the scopes you request. Send them as
Authorization: Bearer <token>.
Scopes are granular and split read from write — for example
campaigns:read and
campaigns:write, payouts:read and payouts:write. Request the narrowest set your
integration needs; payouts:write and settings:write are flagged sensitive in the spec
because they move money and change company configuration.
The full scope list is on the OAuth reference.
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
Platform API-key limits, returned on every response asX-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>" }. Some endpoints add a code, such as
LEAD_NOT_FOUND.
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 rate limits are documented in its own specification, which is currently being
revised. That section will be added once the revision lands.