Scope3 Account API
Account management, service tokens, and preferences
Account management, service tokens, and preferences
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/scope3-account-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Scope3 Account API
version: 2.0.0
description: 'Operations tagged Account across 2 of this provider''s published API definitions: scope3-buyer-openapi-original.yml, scope3-storefront-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.interchange.io/api/v2/buyer
description: Production server
- url: https://api.interchange.io/api/v2/storefront
description: Production server
tags:
- name: Account
description: Account management, service tokens, and preferences
paths:
/accounts/current:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
get:
operationId: getCurrentAccount
summary: Get current account
description: Get the authenticated user's current customer account context.
tags:
- Account
security:
- bearerAuth: []
responses:
'200':
description: Get current account
content:
application/json:
schema:
$ref: '#/components/schemas/CurrentAccountResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/accounts:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
get:
operationId: listCustomerAccounts
summary: List customer accounts
description: List all customer accounts the authenticated user has active membership on.
tags:
- Account
security:
- bearerAuth: []
responses:
'200':
description: List customer accounts
content:
application/json:
schema:
$ref: '#/components/schemas/ListCustomerAccountsResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/accounts/create-child:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
post:
operationId: createChildAccount
summary: Create child account
description: Create a new child customer account. For standalone customers, creates a parent/child hierarchy first. Requires ADMIN role.
tags:
- Account
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChildAccountBody'
responses:
'201':
description: Create child account
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChildAccountResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/accounts/{customerId}/domain:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
patch:
operationId: updateCustomerDomain
summary: Update customer domain
description: Update a customer's registered organization domain. Requires ADMIN role on the target customer (direct membership, parent admin via the customer hierarchy, or SuperAdmin).
tags:
- Account
security:
- bearerAuth: []
parameters:
- in: path
name: customerId
schema:
description: Customer ID
example: '200'
type: string
minLength: 1
required: true
description: Customer ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomerDomainBody'
responses:
'200':
description: Update customer domain
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomerDomainResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/accounts/{customerId}:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
delete:
operationId: deleteChildAccount
summary: Delete child account
description: Hard-delete a child customer account. Only CHILD customers can be deleted, and the caller must be an ADMIN on the parent (or a Scope3 SuperAdmin). Refuses with 409 if the child still has linked resources.
tags:
- Account
security:
- bearerAuth: []
parameters:
- in: path
name: customerId
schema:
description: Customer ID
example: '200'
type: string
minLength: 1
required: true
description: Customer ID
responses:
'204':
description: No content
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/accounts/{customerId}/membership:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
get:
operationId: getMembershipSettings
summary: Get membership settings
description: Get membership settings for a customer org, including whether domain auto-join is enabled. Requires ADMIN role.
tags:
- Account
security:
- bearerAuth: []
parameters:
- in: path
name: customerId
schema:
description: Customer ID
example: '200'
type: string
minLength: 1
required: true
description: Customer ID
responses:
'200':
description: Get membership settings
content:
application/json:
schema:
$ref: '#/components/schemas/MembershipSettingsResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
patch:
operationId: updateMembershipSettings
summary: Update membership settings
description: Update membership settings for a customer org. Requires ADMIN role and a registered customer domain to enable domain auto-join.
tags:
- Account
security:
- bearerAuth: []
parameters:
- in: path
name: customerId
schema:
description: Customer ID
example: '200'
type: string
minLength: 1
required: true
description: Customer ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMembershipSettingsBody'
responses:
'200':
description: Update membership settings
content:
application/json:
schema:
$ref: '#/components/schemas/MembershipSettingsResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/browser-origins:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
get:
operationId: listBrowserOrigins
summary: List browser origins
description: List exact browser origins allowed to call Interchange MCP and OAuth endpoints from the selected account. Admin-only. Customer-managed origins are CORS-enabled without credentialed cookie access; browser clients must use OAuth or explicit bearer tokens.
tags:
- Account
security:
- bearerAuth: []
responses:
'200':
description: List browser origins
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserOriginsResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Admin role required.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
operationId: createBrowserOrigin
summary: Register browser origin
description: Register an exact HTTPS browser origin for browser-based MCP and OAuth calls. Provide only the origin, such as `https://mcp.example.com`; do not include paths, redirects, wildcards, query strings, fragments, or non-HTTPS schemes. Admin-only.
tags:
- Account
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBrowserOriginBody'
responses:
'201':
description: Register browser origin
content:
application/json:
schema:
$ref: '#/components/schemas/BrowserOrigin'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Admin role required.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/browser-origins/{id}:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
delete:
operationId: deleteBrowserOrigin
summary: Delete browser origin
description: Archive a browser origin so it no longer receives CORS access for browser-based MCP and OAuth calls. Admin-only.
tags:
- Account
security:
- bearerAuth: []
parameters:
- in: path
name: id
schema:
description: Browser origin registration ID
type: string
pattern: ^[1-9]\d*$
required: true
description: Browser origin registration ID
responses:
'204':
description: No content
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Admin role required.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: No active browser origin with this id.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/notification-preferences:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
get:
operationId: getNotificationPreferences
summary: Get notification preferences
description: Get notification opt-in preferences for the authenticated user.
tags:
- Account
security:
- bearerAuth: []
responses:
'200':
description: Get notification preferences
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
operationId: updateNotificationPreferences
summary: Update notification preferences
description: Set notification opt-in preferences for the authenticated user. Replaces all existing opt-ins.
tags:
- Account
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
optIns:
maxItems: 200
type: array
items:
type: object
properties:
notificationType:
description: Notification event type to opt into. The enum is shared across personas, but each event type delivers only to the customer role it is scoped to — e.g. campaign.*, creative approval outcomes, media_buy_update_proposal.*, and the media_buy.* why-visibility transition events (forward_failed, awaiting_source_moderation, source_rejected, stuck) deliver to BUYER customers; storefront.* and inventory_source.* deliver to SELLER customers. Opting into an event type outside your role delivers nothing.
type: string
enum:
- brand_agent.created
- brand_agent.updated
- brand_agent.deleted
- campaign.healthy
- campaign.unhealthy
- campaign.created
- campaign.updated
- campaign.deleted
- campaign.completed
- creative.approved
- creative.rejected
- creative.changes_requested
- creative.sync_started
- creative.sync_completed
- creative.sync_failed
- creative.created
- creative.updated
- creative.deleted
- strategy.created
- strategy.updated
- strategy.deleted
- media_buy.created
- media_buy.updated
- media_buy.deleted
- media_buy.forward_failed
- media_buy.awaiting_source_moderation
- media_buy.source_rejected
- media_buy.stuck
- media_buy_update_proposal.approved
- media_buy_update_proposal.rejected
- media_buy_update_proposal.expired
- salesagent.available
- salesagent.unavailable
- salesagent.registered
- salesagent.unregistered
- salesagent.updated
- salesagent.sync_action_required
- signalsagent.registered
- signalsagent.unregistered
- signalsagent.updated
- signalsagent.signal_activated
- signalsagent.signals_fetched
- outcomesagent.registered
- outcomesagent.unregistered
- outcomesagent.updated
- syndication.completed
- syndication.failed
- audience.synced
- audience.sync_failed
- optimization.suggestion_received
- optimization.suggestion_approved
- optimization.suggestion_rejected
- optimization.suggestion_applied
- optimization.suggestion_failed
- system.warning
- system.error
- learning_cycle.completed
- learning_cycle.failed
- hypothesis.status_changed
- hypothesis.review_requested
- hypothesis.proven
- hypothesis.disproven
- measurement.received
- measurement.stale
- opportunity.evaluated
- opportunity.recommended
- opportunity.flagged
- opportunity.explore
- storefront.composition_paused
- storefront.products_not_traffickable
- storefront_adapter_credential.action_required
- storefront_adapter_connection.mapping_required
- inventory_source.unhealthy
- inventory_source.recovered
- source.action_required
- source.action_resolved
- storefront.supply_nudge
- storefront.liveness_degraded
- storefront.liveness_recovered
- provider_fleet.incident_opened
- provider_fleet.incident_recovered
- media_buy.approval_requested
- creative.review_requested
- ad_server.approval_requested
- inventory_shortfall.review_requested
- storefront.media_buy_forward_failed
- storefront.media_buy_moderation_aging
- murph_room.mentioned
- ask.resolved
channel:
type: string
enum:
- email
- in_app
required:
- notificationType
- channel
required:
- optIns
responses:
'200':
description: Update notification preferences
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/notification-delivery-preferences:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
get:
operationId: getNotificationDeliveryPreferences
summary: Get Slack notification settings
description: Get Product Updates and source outage alert settings for the account’s primary Murph Slack channel. If the account has no connected channel, `destination` is `null` and `configurable` is `false`.
tags:
- Account
security:
- bearerAuth: []
responses:
'200':
description: Get Slack notification settings
content:
application/json:
schema:
type: object
properties:
adapter:
type: string
enum:
- slack
destination:
type:
- object
- 'null'
properties:
id:
type: string
name:
type:
- string
- 'null'
isPrimary:
type: boolean
required:
- id
- name
- isPrimary
additionalProperties: false
configurable:
type: boolean
preferences:
type: array
items:
oneOf:
- type: object
properties:
stream:
type: string
enum:
- product_updates
enabled:
type: boolean
required:
- stream
- enabled
additionalProperties: false
- type: object
properties:
stream:
type: string
enum:
- source_health_alerts
enabled:
type: boolean
thresholdMinutes:
type: integer
maximum: 9007199254740991
minimum: 1
required:
- stream
- enabled
- thresholdMinutes
additionalProperties: false
type: object
required:
- adapter
- destination
- configurable
- preferences
additionalProperties: false
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
operationId: updateNotificationDeliveryPreference
summary: Update a Slack notification setting
description: Turn Product Updates on or off, or configure source outage alerts for the account’s primary Murph Slack channel. Source outage alerts can be turned on or off and sent after 10, 30, or 60 minutes.
tags:
- Account
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: object
properties:
stream:
type: string
enum:
- product_updates
enabled:
type: boolean
required:
- stream
- enabled
additionalProperties: false
- type: object
properties:
stream:
type: string
enum:
- source_health_alerts
enabled:
type: boolean
thresholdMinutes:
anyOf:
- type: number
enum:
- 10
- type: number
enum:
- 30
- type: number
enum:
- 60
required:
- stream
additionalProperties: false
type: object
responses:
'200':
description: Update a Slack notification setting
content:
application/json:
schema:
type: object
properties:
adapter:
type: string
enum:
- slack
destination:
type: object
properties:
id:
type: string
name:
type:
- string
- 'null'
isPrimary:
type: boolean
required:
- id
- name
- isPrimary
additionalProperties: false
configurable:
type: boolean
enum:
- true
preference:
oneOf:
- type: object
properties:
stream:
type: string
enum:
- product_updates
enabled:
type: boolean
required:
- stream
- enabled
additionalProperties: false
- type: object
properties:
stream:
type: string
enum:
- source_health_alerts
enabled:
type: boolean
thresholdMinutes:
type: integer
maximum: 9007199254740991
minimum: 1
required:
- stream
- enabled
- thresholdMinutes
additionalProperties: false
type: object
required:
- adapter
- destination
- configurable
- preference
additionalProperties: false
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: No Slack channel is connected to this account.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/market-readiness:
servers:
- url: https://api.interchange.io/api/v2
description: Production server
post:
operationId: previewMarketReadiness
summary: Preview market readiness
description: Return public-safe pilot state and supply evidence for requested ISO country × canonical channel cells. Pilot state is an explicit human decision; storefront discovery never opens a market. Global platform coverage is returned as an overlay, not as a country. Supply-query failures are reported as unknown. This endpoint does not enroll a buyer or bypass the alpha opt-in gate.
tags:
- Account
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MarketReadinessRequest'
responses:
'200':
description: Preview market readiness
content:
application/json:
schema:
$ref: '#/components/schemas/MarketReadinessResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: RATE_LIMITED (per-IP public endpoint cap).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/readiness:
get:
operationId: getBuyerReadiness
summary: Get buyer readiness
description: Get platform-level activation criteria and per-destination buying readiness for the authenticated buyer account.
tags:
- Account
security:
- bearerAuth: []
parameters:
- in: query
name: limit
schema:
description: Max
# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scope3/refs/heads/main/openapi/scope3-account-api-openapi.yml