> ## 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.

# Get campaign products

> List all products staged on a campaign together with the discovery run that found each one and any media buys it has been executed into. Use to inspect what products are queued for execution before launching a campaign.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml get /campaigns/{campaignId}/products
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:
  /campaigns/{campaignId}/products:
    get:
      tags:
        - Campaigns
      summary: Get campaign products
      description: >-
        List all products staged on a campaign together with the discovery run
        that found each one and any media buys it has been executed into. Use to
        inspect what products are queued for execution before launching a
        campaign.
      operationId: getCampaignProducts
      parameters:
        - in: path
          name: id
          schema:
            description: Unique identifier for the campaign
            example: cmp_987654321
            type: string
            minLength: 1
          required: true
          description: Unique identifier for the campaign
      responses:
        '200':
          description: Get campaign products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignProductsResponse'
        '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:
    CampaignProductsResponse:
      description: >-
        Every product attached to a campaign, sourced from the campaign's media
        buys (authoritative) plus any discovery-staged products that have not
        yet been executed onto a media buy. Use this to get the full ad-product
        list for a campaign without paging through the nested `mediaBuys[]` tree
        on `get_campaign`. Pass `mediaBuyId` to narrow to a specific buy.
      type: object
      properties:
        campaignId:
          description: Campaign ID
          type: string
        discoveryId:
          description: Discovery session attached to the campaign, or null if none attached
          nullable: true
          type: string
        products:
          description: Products staged on this campaign
          type: array
          items:
            $ref: '#/components/schemas/CampaignProductEntry'
        searchContexts:
          description: Discovery runs that have contributed products
          type: array
          items:
            $ref: '#/components/schemas/CampaignSearchContextSummary'
        summary:
          description: Aggregate counts for products on the campaign
          type: object
          properties:
            totalProducts:
              description: Total number of products staged on the campaign
              type: integer
              minimum: 0
              maximum: 9007199254740991
            productsOnMediaBuys:
              description: Products already attached to a media buy
              type: integer
              minimum: 0
              maximum: 9007199254740991
            productsPending:
              description: Products staged but not yet on a media buy
              type: integer
              minimum: 0
              maximum: 9007199254740991
          required:
            - totalProducts
            - productsOnMediaBuys
            - productsPending
          additionalProperties: false
      required:
        - campaignId
        - discoveryId
        - products
        - searchContexts
        - summary
      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
    CampaignProductEntry:
      description: A product staged on a campaign with discovery and execution context
      type: object
      properties:
        productId:
          description: Unique product identifier
          type: string
        productName:
          description: Human-readable product name
          type: string
        salesAgentId:
          description: Sales agent ID that supplied this product
          type: string
        salesAgentName:
          description: Sales agent display name (from the local `adcp_agent` row)
          type: string
        publisherDomain:
          description: Publisher domain for this product
          type: string
        publisherName:
          description: Publisher display name
          type: string
        bidPrice:
          description: Bid price set on the product
          type: number
        budget:
          description: Budget allocated to this product
          type: number
        pricingOptionId:
          description: Selected pricing option ID for the product
          type: string
        pricingModel:
          description: Pricing model (e.g. CPM, fixed)
          type: string
        selectedAt:
          description: When this product was selected (ISO 8601)
          type: string
        searchContext:
          description: Discovery run (search context) that surfaced this product
          type: object
          properties:
            id:
              type: string
            brief:
              type: string
          required:
            - id
            - brief
          additionalProperties: false
        mediaBuys:
          description: >-
            Media buys this product is attached to, including the complete
            package IDs for each buy (empty if the product has not been
            executed; can contain multiple entries on multi-strategy campaigns)
          type: array
          items:
            type: object
            properties:
              mediaBuyId:
                type: string
              status:
                type: string
              name:
                type: string
              packageIds:
                description: >-
                  Complete package IDs for this product on this media buy. Use
                  these IDs for mediaBuys[].packages[] updates.
                type: array
                items:
                  type: string
            required:
              - mediaBuyId
              - status
              - name
              - packageIds
            additionalProperties: false
      required:
        - productId
        - salesAgentId
        - selectedAt
        - mediaBuys
      additionalProperties: false
    CampaignSearchContextSummary:
      description: Summary of a single discovery run within a campaign
      type: object
      properties:
        id:
          description: Search context (run) identifier
          type: string
        brief:
          description: Brief used for this run
          type: string
        channels:
          description: Channels used for this run
          type: array
          items:
            type: string
        countries:
          description: Countries used for this run
          type: array
          items:
            type: string
        createdAt:
          description: When this run was started (ISO 8601)
          type: string
        productCount:
          description: Number of products discovered in this run
          type: integer
          minimum: 0
          maximum: 9007199254740991
      required:
        - id
        - brief
        - channels
        - countries
        - createdAt
        - productCount
      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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````