> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List storefronts

> List all enabled storefronts visible to the buyer. Each storefront contains inventory sources backed by agents.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml get /storefronts
openapi: 3.0.0
info:
  title: Scope3 Buyer API
  version: 2.0.0
  description: |-
    REST API for advertisers to manage advertisers, campaigns, and reporting.

    ## Authentication

    All endpoints require a Bearer token in the Authorization header:
    ```
    Authorization: Bearer your-api-key
    ```

    ## Base URL

    `https://api.interchange.io/api/v2/buyer`

    ## For AI Agents

    AI agents can use the MCP endpoint at `/mcp/v2/buyer` with three tools:
    - `initialize`: Start an MCP session
    - `api_call`: Make REST API calls
    - `ask_about_capability`: Learn about API features
servers:
  - url: https://api.interchange.io/api/v2/buyer
    description: Production server
security: []
tags:
  - name: Signup
    description: Request reviewed access to Interchange
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Advertisers
    description: Manage advertisers
  - name: Product Discovery
    description: Discover and select products
  - name: Campaigns
    description: Manage advertising campaigns
  - name: Creatives
    description: Build, manage, and sync campaign creatives via AdCP Creative Protocol
  - name: Reporting
    description: Access performance metrics
  - name: Event Sources
    description: >-
      Manage event source configurations and log conversion/marketing events for
      attribution
  - name: Property Lists
    description: Validate property lists against AAO registry
  - name: Sales Agents
    description: View and connect sales agents
  - name: Measurement
    description: Measurement sources, records, context, and freshness
  - name: Syndication
    description: Syndicate resources to ADCP agents
  - name: Tasks
    description: Track async operation status
  - name: Buyer Billing
    description: >-
      Consolidated invoicing for buyers — invoices and pending invoice items
      issued by Scope3 across the buyer customer.
  - name: MCP
    description: Model Context Protocol endpoints for AI agents
paths:
  /storefronts:
    get:
      tags:
        - Storefronts
      summary: List storefronts
      description: >-
        List all enabled storefronts visible to the buyer. Each storefront
        contains inventory sources backed by agents.
      operationId: listStorefronts
      parameters:
        - in: query
          name: name
          schema:
            description: Filter by storefront name (partial match, case-insensitive)
            type: string
          description: Filter by storefront name (partial match, case-insensitive)
        - in: query
          name: status
          schema:
            description: >-
              Filter by stored-control labels. `neutral` and `paused` match
              `isPaused`; legacy `configuring` and `transacting` match the
              compatibility field; `archived` matches archived storefronts. This
              is not transaction readiness.
            type: string
            enum:
              - configuring
              - transacting
              - archived
              - neutral
              - paused
          description: >-
            Filter by stored-control labels. `neutral` and `paused` match
            `isPaused`; legacy `configuring` and `transacting` match the
            compatibility field; `archived` matches archived storefronts. This
            is not transaction readiness.
        - in: query
          name: channel
          schema:
            description: >-
              Filter to storefronts that carry this channel. Canonical AdCP
              values such as `display`, `olv`, and `ctv` are recommended;
              legacy/custom strings remain accepted for compatibility.
            type: string
            minLength: 1
          description: >-
            Filter to storefronts that carry this channel. Canonical AdCP values
            such as `display`, `olv`, and `ctv` are recommended; legacy/custom
            strings remain accepted for compatibility.
        - in: query
          name: region
          schema:
            description: >-
              Filter to storefronts that accept briefs in this ISO 3166-1
              alpha-2 country (e.g. `FR`, `US`, `JP`). Legacy market-group and
              custom values remain accepted against legacy region declarations.
            type: string
            minLength: 1
          description: >-
            Filter to storefronts that accept briefs in this ISO 3166-1 alpha-2
            country (e.g. `FR`, `US`, `JP`). Legacy market-group and custom
            values remain accepted against legacy region declarations.
        - in: query
          name: visibility
          schema:
            description: >-
              Which storefronts to list. `public` (default) returns
              human-reviewed storefronts listed in the buyer marketplace.
              `private` returns ALL storefronts (configuring, transacting,
              archived, hidden, or pending review) owned by customers in the
              caller's parent organization.
            type: string
            enum:
              - public
              - private
        - in: query
          name: publisherDomain
          schema:
            description: >-
              Find sellers that represent this publisher. Returns storefronts
              whose declared publisher coverage includes this domain or any of
              its subdomains. Use this for vendor selection — identifying which
              sellers cover a publisher you care about. This is a coverage
              filter, not an inventory query; for domain-level product
              availability use product discovery.
            type: string
          description: >-
            Find sellers that represent this publisher. Returns storefronts
            whose declared publisher coverage includes this domain or any of its
            subdomains. Use this for vendor selection — identifying which
            sellers cover a publisher you care about. This is a coverage filter,
            not an inventory query; for domain-level product availability use
            product discovery.
        - in: query
          name: limit
          schema:
            description: 'Maximum storefronts per page (default: 20, max: 100)'
            type: integer
            maximum: 100
            minimum: 1
          description: 'Maximum storefronts per page (default: 20, max: 100)'
        - in: query
          name: offset
          schema:
            description: 'Number of storefronts to skip for pagination (default: 0)'
            type: integer
            minimum: 0
            maximum: 9007199254740991
          description: 'Number of storefronts to skip for pagination (default: 0)'
      responses:
        '200':
          description: List storefronts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuyerStorefrontList'
        '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'
      security:
        - bearerAuth: []
components:
  schemas:
    BuyerStorefrontList:
      description: Paginated list of storefront summaries available to a buyer
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/BuyerStorefrontSummary'
        total:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        hasMore:
          type: boolean
        nextOffset:
          nullable: true
          type: integer
          minimum: 0
          maximum: 9007199254740991
      required:
        - items
        - total
        - hasMore
        - nextOffset
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    BuyerStorefrontSummary:
      description: >-
        Compact storefront view returned by list endpoints. Use the storefront
        detail endpoint for the full resource.
      type: object
      properties:
        id:
          description: Storefront ID
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        platformId:
          description: Public-facing slug
          type: string
        name:
          description: Storefront display name
          type: string
        publisherDomain:
          description: Publisher domain
          nullable: true
          type: string
        brandName:
          description: >-
            Operator-owned or resolved brand name shown on storefront discovery
            cards.
          nullable: true
          type: string
        logoUrl:
          description: >-
            Operator-owned or resolved logo URL shown on storefront discovery
            cards.
          nullable: true
          type: string
        logoBackground:
          description: >-
            Backdrop the logo is designed for, from brand.json. Null when
            unknown.
          nullable: true
          type: string
        description:
          description: Operator-curated description shown on storefront discovery cards.
          nullable: true
          type: string
        website:
          description: Operator-curated website URL shown on storefront discovery cards.
          nullable: true
          type: string
        brandColors:
          $ref: '#/components/schemas/BuyerStorefrontBrandColors'
        displayStatus:
          description: >-
            Deprecated stored-control label. Legacy projections retain
            `configuring` and `transacting`; projections backed by `isPaused`
            return `neutral` or `paused`. `archived` overrides both. Use
            readiness.effectiveStatus and readiness.canTransact for actual
            availability.
          type: string
          enum:
            - configuring
            - transacting
            - archived
            - neutral
            - paused
        readiness:
          $ref: '#/components/schemas/BuyerStorefrontReadiness'
        adapterProviderType:
          description: >-
            Adapter platform type (e.g. "meta", "tiktok"). Null for non-adapter
            storefronts.
          nullable: true
          type: string
        adapterSourceKind:
          description: >-
            Adapter family for official adapter storefronts, such as sales or
            creative. Null for non-adapter storefronts.
          nullable: true
          type: string
          enum:
            - sales
            - creative
            - signals
            - measurement
            - optimization
            - composite
        creativeCapabilities:
          description: >-
            Creative-generation capabilities when this is a creative adapter
            storefront; null otherwise.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BuyerCreativeStorefrontCapability'
        adapterConnection:
          description: >-
            Buyer-specific connection state for official adapter storefronts;
            null for non-adapter storefronts or when connection state was not
            requested.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BuyerAdapterConnectionStatus'
        supportedRoutingTypes:
          deprecated: true
          description: >-
            Deprecated v2 compatibility placeholder. Every storefront returns
            both legacy values. Do not use this field for storefront type,
            targeting, eligibility, execution, connectivity, or settlement; use
            explicit capabilities, authentication state, and BillingParty
            instead.
          type: array
          items:
            type: string
            enum:
              - DECISIONED
              - ROUTED
        supportedBilling:
          description: >-
            Supported billing parties for media bought from this storefront,
            using AdCP BillingParty vocabulary (who is invoiced): `agent` means
            Interchange clears the transaction and bills the buyer;
            `operator`/`advertiser` mean the seller or connected platform bills
            the account operator or advertiser directly — Interchange never
            touches the media money. Adapter storefronts are always
            `operator`/`advertiser`.
          minItems: 1
          type: array
          items:
            type: string
            enum:
              - operator
              - agent
              - advertiser
        discoveryPerformance:
          description: >-
            Observed response-time stats from buyer product discovery. Use this
            to decide whether to ask the user before running a long discovery
            wait.
          allOf:
            - $ref: '#/components/schemas/BuyerStorefrontDiscoveryPerformance'
        discoveryCard:
          $ref: '#/components/schemas/BuyerDiscoveryCardSummary'
        channels:
          description: >-
            Ad channels this storefront supports (e.g. "display", "CTV",
            "audio"). Empty array if not specified.
          example:
            - CTV
            - display
          type: array
          items:
            type: string
        regions:
          description: >-
            Operator-curated regions this storefront covers (ISO 3166-1 alpha-2
            country codes or group codes like WORLDWIDE, EMEA, NORAM). Empty
            array if not specified.
          example:
            - UK
            - EMEA
          type: array
          items:
            type: string
        sourceCount:
          description: >-
            Total number of inventory sources in this storefront. Replaces the
            embedded `sources[]` array on summary rows.
          example: 5
          type: integer
          minimum: 0
          maximum: 9007199254740991
        connectedSourceCount:
          description: >-
            Number of inventory sources the buyer is already wired to use,
            either because no buyer credentials are required or because
            credentials are active. Combined with `sourceCount`, gives a quick
            "is this wired up" signal.
          example: 3
          type: integer
          minimum: 0
          maximum: 9007199254740991
      required:
        - id
        - platformId
        - name
        - publisherDomain
        - brandName
        - logoUrl
        - logoBackground
        - description
        - website
        - brandColors
        - displayStatus
        - readiness
        - adapterProviderType
        - adapterSourceKind
        - creativeCapabilities
        - adapterConnection
        - supportedRoutingTypes
        - supportedBilling
        - discoveryPerformance
        - discoveryCard
        - channels
        - regions
        - sourceCount
        - connectedSourceCount
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
    BuyerStorefrontBrandColors:
      description: >-
        Validated brand.json colors object for rendering buyer discovery cards.
        Null when unresolved.
      nullable: true
      type: object
      additionalProperties:
        type: string
    BuyerStorefrontReadiness:
      description: >-
        Canonical transaction eligibility for this storefront. This is
        independent of buyer credential connection state.
      type: object
      properties:
        canTransact:
          description: >-
            Whether ordinary buyer traffic may currently transact with this
            storefront.
          type: boolean
        effectiveStatus:
          description: >-
            Canonical buyer-facing availability after combining seller controls
            with readiness evidence.
          type: string
          enum:
            - archived
            - paused
            - blocked
            - live
        blockerIds:
          description: >-
            Machine-readable readiness blockers. Empty when effectiveStatus is
            `live`.
          type: array
          items:
            type: string
      required:
        - canTransact
        - effectiveStatus
        - blockerIds
      additionalProperties: false
    BuyerCreativeStorefrontCapability:
      description: >-
        Machine-readable creative generation capability summary for an adapter
        storefront.
      type: object
      properties:
        kind:
          description: Capability kind for creative-generation storefronts.
          type: string
          enum:
            - creative_generation
        modalities:
          description: >-
            Creative media modalities this adapter can generate, such as image,
            audio, or video.
          type: array
          items:
            type: string
            enum:
              - image
              - video
              - audio
        transformerIds:
          description: >-
            Transformer identifiers accepted by this adapter when generating
            creatives. Empty when the adapter discovers transformer details
            dynamically.
          type: array
          items:
            type: string
        supportedFormatIds:
          description: >-
            Representative AdCP creative format IDs this adapter can generate.
            Empty when exact formats must be discovered from
            list_creative_formats.
          type: array
          items:
            type: string
        supportedFormatCount:
          description: >-
            Number of supported AdCP creative formats known without making an
            adapter call.
          type: integer
          minimum: 0
          maximum: 9007199254740991
        supportsBuildCreative:
          description: Whether this storefront exposes build_creative.
          type: boolean
        supportsPreviewCreative:
          description: Whether this storefront exposes preview_creative.
          type: boolean
        formatDiscovery:
          description: How exact creative formats are discovered for this adapter.
          type: string
          enum:
            - canonical
            - static_catalog
            - aao_registry
      required:
        - kind
        - modalities
        - transformerIds
        - supportedFormatIds
        - supportedFormatCount
        - supportsBuildCreative
        - supportsPreviewCreative
        - formatDiscovery
      additionalProperties: false
    BuyerAdapterConnectionStatus:
      description: Buyer-specific delegated-auth status for an official adapter storefront.
      type: object
      properties:
        status:
          description: >-
            Whether this buyer already has delegated credentials for the adapter
            storefront.
          type: string
          enum:
            - not_connected
            - connected
            - needs_account_selection
            - error
        authModes:
          description: Credential flows supported by this adapter storefront for the buyer.
          type: array
          items:
            type: string
            enum:
              - oauth
              - bearer
        accountCount:
          description: >-
            Number of active provider accounts discovered for this buyer
            connection.
          type: integer
          minimum: 0
          maximum: 9007199254740991
        mappedAdvertiserCount:
          description: >-
            Distinct advertisers with an active mapping to one of this
            connection's currently active accounts. 0 on a connected storefront
            means connected-but-not-yet-buyable: a media buy for an unmapped
            advertiser fails with account_mapping_required until it is mapped
            under Settings → Connections.
          default: 0
          type: integer
          minimum: 0
          maximum: 9007199254740991
        selectedAccountName:
          description: Selected provider account display name, if one has been selected.
          nullable: true
          type: string
      required:
        - status
        - authModes
        - accountCount
        - mappedAdvertiserCount
        - selectedAccountName
      additionalProperties: false
    BuyerStorefrontDiscoveryPerformance:
      description: Observed buyer product-discovery response timing for this storefront.
      type: object
      properties:
        sampleCount:
          description: Number of buyer discovery responses included in the timing rollup.
          type: integer
          minimum: 0
          maximum: 9007199254740991
        successCount:
          description: Number of successful buyer discovery responses in the timing rollup.
          type: integer
          minimum: 0
          maximum: 9007199254740991
        timeoutCount:
          description: Number of buyer discovery calls that hit the caller wait deadline.
          type: integer
          minimum: 0
          maximum: 9007199254740991
        avgResponseTimeMs:
          description: >-
            Average storefront response time in milliseconds, or null when no
            samples exist.
          nullable: true
          type: integer
          minimum: 0
          maximum: 9007199254740991
        maxResponseTimeMs:
          description: Slowest recorded storefront response time in milliseconds.
          nullable: true
          type: integer
          minimum: 0
          maximum: 9007199254740991
        lastResponseTimeMs:
          description: Most recent recorded storefront response time in milliseconds.
          nullable: true
          type: integer
          minimum: 0
          maximum: 9007199254740991
        lastDiscoveryAt:
          description: When this storefront was last called during buyer product discovery.
          nullable: true
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
      required:
        - sampleCount
        - successCount
        - timeoutCount
        - avgResponseTimeMs
        - maxResponseTimeMs
        - lastResponseTimeMs
        - lastDiscoveryAt
      additionalProperties: false
    BuyerDiscoveryCardSummary:
      description: >-
        Compact Discovery Card for Marketplace lists. Full Advertising Policies
        are detail-only.
      type: object
      properties:
        storefrontId:
          type: string
        platformId:
          type: string
        storefrontKind:
          type: string
          enum:
            - managed
            - external_pass_through
        displayName:
          type: string
        logoUrl:
          nullable: true
          type: string
        logoBackground:
          nullable: true
          type: string
          enum:
            - dark-bg
            - light-bg
            - transparent-bg
        description:
          nullable: true
          type: string
        website:
          nullable: true
          type: string
        brandColors:
          nullable: true
          type: object
          additionalProperties:
            type: string
        channels:
          description: >-
            Aggregate channel facets for search and display. Do not combine
            these with aggregate countries as a cross-product coverage promise.
          type: array
          items:
            type: string
        countries:
          description: >-
            Aggregate ISO 3166-1 alpha-2 country facets for search and display.
            Do not combine these with aggregate channels as a cross-product
            coverage promise.
          type: array
          items:
            type: string
            pattern: ^[A-Z]{2}$
        acceptsAllCountries:
          description: >-
            True only when the storefront explicitly accepts briefs from every
            country.
          type: boolean
        coverageDeclarations:
          description: >-
            Channel and country coverage claims preserved at their source
            boundaries. A combined filter matches only when one declaration
            satisfies both dimensions.
          type: array
          items:
            description: >-
              One source-level coverage claim. Channels and countries are
              correlated within this declaration; an empty dimension is unknown,
              not unrestricted.
            type: object
            properties:
              channels:
                description: Channels accepted by this correlated source declaration.
                type: array
                items:
                  type: string
              countries:
                description: >-
                  ISO 3166-1 alpha-2 countries accepted by this correlated
                  source declaration.
                type: array
                items:
                  type: string
                  pattern: ^[A-Z]{2}$
              acceptsAllCountries:
                description: >-
                  True only when this correlated source declaration explicitly
                  accepts every country.
                type: boolean
            required:
              - channels
              - countries
              - acceptsAllCountries
            additionalProperties: false
        coverage:
          type: object
          properties:
            channels:
              type: string
              enum:
                - declared
                - partial
                - unknown
            countries:
              type: string
              enum:
                - declared
                - partial
                - unknown
          required:
            - channels
            - countries
          additionalProperties: false
        provenance:
          type: object
          properties:
            identity:
              type: object
              properties:
                displayName:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
                logoUrl:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
                description:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
                website:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
                brandColors:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
              required:
                - displayName
                - logoUrl
                - description
                - website
                - brandColors
              additionalProperties: false
            coverage:
              type: object
              properties:
                channels:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
                countries:
                  type: string
                  enum:
                    - operator
                    - registry
                    - upstream_capabilities
                    - unknown
              required:
                - channels
                - countries
              additionalProperties: false
            advertisingPolicies:
              type: string
              enum:
                - operator
                - registry
                - upstream_capabilities
                - unknown
          required:
            - identity
            - coverage
            - advertisingPolicies
          additionalProperties: false
        hasAdvertisingPolicies:
          description: >-
            Whether the full storefront detail includes a public Advertising
            Policies disclosure.
          type: boolean
        advertisingPoliciesExcerpt:
          description: >-
            Bounded Marketplace-card excerpt. Fetch storefront detail for the
            complete disclosure.
          nullable: true
          type: string
          maxLength: 500
      required:
        - storefrontId
        - platformId
        - storefrontKind
        - displayName
        - logoUrl
        - logoBackground
        - description
        - website
        - brandColors
        - channels
        - countries
        - acceptsAllCountries
        - coverageDeclarations
        - coverage
        - provenance
        - hasAdvertisingPolicies
        - advertisingPoliciesExcerpt
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````