Authentication
Interchange uses WorkOS as its credential control plane. Interactive connectors use OAuth, AI agents can use Agent Registration, simple customer automation uses organization API keys, and backend integrations that require OAuth client credentials can use M2M applications.Buyer signup and organization invitations
New standalone buyer organizations are admitted in stages. When buyer admission is closed, selecting Advertiser during signup opens the buyer preview form. It asks whether the buyer is a brand or agency, which countries and channels they plan to buy, their estimated pilot budget and timing, their self-service buying experience, and whether they are comfortable testing a pre-launch product with support in Slack. Buyers whose plans match a live pilot market and channel are sent for solutions review; buyers outside the current markets stay on the launch list under the exact countries they selected. Those country-level signals guide where Interchange expands next; selecting a country does not claim that a pilot is already open there. When a work-email domain already belongs to a known organization, Interchange associates the preview request with that organization and pre-fills its canonical name. This does not grant membership in an existing account: an invitation or the account’s normal domain-approval policy is still required for access. When admission is open, the same signup creates the buyer organization and then offers three starting points: work in Interchange, build with the API, or connect an assistant. Choosing one does not remove access to the other two.Storefront signup and IU plans
Public Storefront account creation is independent from the Organization IU Rate Card rollout. A Storefront prospect can accept Scope3’s standard Terms of Service and create an account even when IU plan selection is unavailable. That acceptance creates the account’s standard agreement; it does not publish or accept an IU Rate Card, enroll the organization in a paid IU plan, grant setup credit, or enable IU charging. When the IU rollout is closed, signup does not show pricing previews or signup-code entry and rejects clients that try to submit IU plan or signup-code data. Custom signup clients can distinguish the states in the email-availability response:storefrontAccountSignupAllowed controls account creation and
storefrontIuSignupAllowed controls the IU plan-selection step. The legacy
storefrontSignupAllowed field retains its IU-step meaning during the transition.
An organization invitation is a separate, org-scoped path. Its recipient can create
an account and join the named organization even while public buyer signup is
waitlisted. The invited organization must itself be admitted to the current rollout.
The invitation does not create a second buyer organization, grant access to the wider
marketplace by itself, or replace any Terms of Service, account, or spend requirements
on the invited organization.
Seller join links are different: they are
reusable links that create sponsored buyers scoped to one storefront.
OAuth (Recommended for AI Agents)
When connecting through Claude Connectors or ChatGPT MCP Connectors, authentication is handled automatically via OAuth. Users log in with their Scope3 credentials and the agent receives a secure token.- No API keys to create or manage
- Tokens are scoped to the authenticated user
- Works with Claude.ai (Team/Enterprise), Claude Desktop, and ChatGPT
MCP protocol compatibility
The buyer and storefront MCP endpoints support both stateless MCP 2026-07-28 requests and the existing initialize/session lifecycle. MCP clients negotiate the protocol automatically; users do not enable a setting or repeat OAuth authorization to opt in. Existing connectors continue working unchanged. Specialized Murph, creative, admin, TARS, and dynamic platform-storefront MCP endpoints remain on the session lifecycle during the staged rollout.API Keys
For CLI tools, scripts, shared automation, and direct REST API integrations, use an organization API key unless the integration specifically requires OAuth client credentials.Getting Your API Key
- Visit interchange.io/user-api-keys
- Sign up or log into your Interchange account as an organization admin
- Select Account API keys
- Create a key and select only the permissions the integration needs
- Copy the key when WorkOS displays it
Org API Keys
Organization API keys are owned by the organization rather than an individual user. WorkOS creates, stores, masks, and revokes the keys; Interchange resolves the organization and applies its resource, entitlement, standing, governance, and spend policies.Permissions
Each org API key carries one or more permission scopes:
Principle of least privilege: issue each key with only the permissions it needs.
Managing keys
buyer:admin; an API
key or M2M token cannot create another credential.
Embedded key management widget
The Interchange Account API keys settings tab embeds the WorkOS API Keys widget. The widget displays a key in full only when it is created; later views show a masked value. Organization admins can inspect and revoke keys there. Organization keys can selectbuyer:read, buyer:write, and buyer:admin; account:admin is not
delegatable through the widget.
Customers that still have a scope3_ API key see a Legacy API keys
section below the WorkOS widget. Account administrators see both user keys and
older customer-scoped keys so working account-level legacy credentials remain visible during
migration; other users see only their own keys. Settings no longer offers creation,
editing, or secret reveal for those keys. Create an organization API key, update and
verify the integration that uses the legacy key, and then revoke it.
Existing legacy keys continue to authenticate until they expire or are revoked.
Applications embedding the same management surface can request a short-lived widget
session token:
token for the WorkOS frontend widget. Never expose the WorkOS server API key to a
browser.
Using Your API Key
Pass the key as a Bearer token in theAuthorization header:
- curl
- TypeScript
- Python
Agent Registration
An agent that has no credential starts withhttps://api.interchange.io/auth.md. The guide
is generated by WorkOS and describes anonymous registration, the optional user claim
ceremony, and assertion exchange.
Anonymous registrations receive a short-lived WorkOS access token and can reach only
the zero-spend Interchange sandbox. This bounded anonymous trial does not require an
organization to accept Terms of Service because the agent is not associated with a customer yet.
Before claim, the only customer-data API reads are
GET|HEAD /api/v2/buyer/advertisers[/:id]; all mutations, nested advertiser routes,
MCP calls, and money-moving routes are denied.
Access to customer data or write operations requires a service_auth claim completed
by the customer user; after claim, the customer must satisfy Terms of Service, account
grants, commercial entitlements, governance, and spend controls.
M2M Applications
Use an M2M application when a deployed customer backend requires the OAuth 2.0client_credentials flow and short-lived JWT access tokens. An organization admin can
manage applications through /api/v2/m2m-applications; creation returns the client
secret once, together with the WorkOS token endpoint and Interchange resource
indicator. The token endpoint is hosted on Interchange’s AuthKit domain for the
environment. Store the secret in a secrets manager.
M2M applications support overlapping client secrets for rotation. Revoke the old
secret only after the new secret has successfully obtained and used an access token.
Deleting the application immediately disables its local Interchange customer association;
already-issued access tokens are rejected locally even if they have not expired.
Legacy scope3_ Keys
Existing scope3_ keys remain accepted during the credential migration and can still
be revoked. They are compatibility credentials, not the target for new integrations.
Do not replace a working key until its WorkOS replacement has made a successful test
call. Interchange will publish any retirement date only after owners, usage telemetry,
customer communication, and rollback readiness meet the retirement gate.
MCP Authentication
For AI agent integrations using the Model Context Protocol:An MCP agent cannot retrieve an existing API key or M2M client secret, and it must
not mint or carry a new long-lived secret in chat. For an organization API key, the
agent directs a human organization admin to Settings → API Access. M2M does not
have a management widget yet; a human admin or their developer uses the documented
/api/v2/m2m-applications lifecycle with an interactive human session. The human
copies the one-time secret directly into the workload’s secret manager. The workload
then uses the API key, or exchanges an M2M client secret for short-lived access
tokens.- TypeScript
- Python
Base URLs
Programmatic API endpoints and buyer MCP are served at
https://api.interchange.io. The canonical storefront agent URL is https://interchange.io. Discovery endpoints under /.well-known/* (JWKS, brand.json, OAuth/OIDC metadata) return the same response on both https://api.interchange.io and https://interchange.io.Versioning
REST and MCP endpoints come in two forms — pick based on whether you want to pin to a specific major version or auto-roll with the platform.
The same pattern applies to storefront endpoints (
/api/v2/storefront vs /api/storefront, /mcp/v2/storefront vs /mcp/storefront).
The Base URLs table above lists the versioned form because it’s what we recommend for any integration you don’t plan to revisit on every major release.
Terms of Service acceptance
Every organization must accept Scope3’s Terms of Service before its authenticated members can use most of the API surface. ToS acceptance applies to the organization, not the individual. Accounts under a parent organization inherit the parent’s governing agreement; they do not accept separate account-level terms. Once a direct parent-organization ADMIN accepts, the organization and its accounts are unblocked. Only a direct ADMIN or SUPER_ADMINUserPermission on the organization that
owns the governing agreement is permitted to accept its ToS via
POST /api/v2/accept-tos (or the accept_tos MCP tool).
- An account member who is not a direct admin of its parent organization cannot accept the parent’s ToS. They must join the parent organization as an admin first.
- A direct member at a non-admin level (
BASIC,PREMIUM) also cannot accept — onlyADMIN/SUPER_ADMINlevels qualify.
When updated terms are published
When updated Terms of Service appear in Interchange, the required action depends on the kind of change:- A patch that does not materially change the terms, or is wholly favorable to customers, is a notice-only update. Existing acceptance continues without an interruption.
- A material minor or major update requires an organization administrator to accept. Before the displayed deadline, eligible administrators see the review prompt and can choose Review later; other members can continue working during that review period.
- Once the deadline passes, account activity pauses until an eligible administrator accepts. Non-admin members then see a notice telling them to contact an administrator, while the account selector remains available.
tosUpdate object on
current-user and account-switch responses. Its action is notice,
acceptance_due, or acceptance_required, with the target version, deadline,
terms URL, and change-summary URL. If Interchange cannot verify agreement
status, protected actions return a retryable service error rather than
proceeding without confirmed terms.
The user-info responses (/auth/me, POST /api/v2/accounts/switch,
POST /api/v2/accounts/create-child, and the user_get_current MCP
tool) include a canAcceptTos boolean reflecting this rule. When
showTosBox: true but canAcceptTos: false, the UI shows a blocking notice.
The global account selector remains available so the user can switch to an
unblocked organization or accept a pending organization invitation.
/auth/me also returns contractBlockReason when the active account cannot
transact, and omits it when the account is in good standing:
showTosBox answers “must this session be blocked”; contractBlockReason
answers “why can this account not transact”. They differ for a Scope3 SuperAdmin
working inside a customer account: that session is deliberately not blocked
(showTosBox: false), but the reason is still reported so the operator sees the
state a real user of that account would hit.
See the Adding an account
section of the Buyer Onboarding guide for the full account-creation flow.
Next Steps
Quick Start
Get up and running in minutes.
Built for Agents
Connect Claude, ChatGPT, Cursor, and more.
SSO Setup
Configure single sign-on for your organization.