Scope3 Account API

Account management, service tokens, and preferences

Operations 18

GET /accounts/current Get current account #
GET /accounts List customer accounts #
POST /accounts/create-child Create child account #
PATCH /accounts/{customerId}/domain Update customer domain #
DELETE /accounts/{customerId} Delete child account #
GET /accounts/{customerId}/membership Get membership settings #
PATCH /accounts/{customerId}/membership Update membership settings #
GET /browser-origins List browser origins #
POST /browser-origins Register browser origin #
DELETE /browser-origins/{id} Delete browser origin #
GET /notification-preferences Get notification preferences #
PUT /notification-preferences Update notification preferences #
GET /notification-delivery-preferences Get Slack notification settings #
PUT /notification-delivery-preferences Update a Slack notification setting #
POST /market-readiness Preview market readiness #
GET /readiness Get buyer readiness #
PATCH /readiness/operator Update buyer operator domain #
GET /accounts/liveness Get storefront liveness for accounts #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scope3-account-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scope3-account-api-openapi.yml Raw ↑
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