Skip to main content
GET /api/v2/buyer/campaigns/:id/products Returns the products selected for the campaign. On a DRAFT campaign, this is the current selection. After execute, products live inside the campaign’s media buys (as packages).

Request

curl https://api.interchange.io/api/v2/buyer/campaigns/cmp_987654321/products \
  -H "Authorization: Bearer $SCOPE3_API_KEY"
No request body.

Parameters

FieldTypeRequiredNotes
idstringYesCampaign ID (path parameter).
mediaBuyIdstringNoQuery parameter. Filter to products attached to the given media buy. Accepts a single value or repeated values (?mediaBuyId=mb_X&mediaBuyId=mb_Y). When set, discovery-staged products not yet on a media buy are excluded.

Response

{
  "campaignId": "cmp_987654321",
  "discoveryId": "disc_abc123",
  "products": [
    {
      "productId": "prod_xyz789",
      "productName": "Example Media - CTV Premium",
      "salesAgentId": "agent_example",
      "selectedAt": "2026-05-01T10:00:00Z",
      "mediaBuys": []
    }
  ],
  "searchContexts": [
    {
      "id": "ctx_abc",
      "brief": "Premium video for tech-savvy professionals",
      "channels": ["ctv"],
      "countries": ["US"],
      "createdAt": "2026-05-01T09:30:00Z",
      "productCount": 1
    }
  ],
  "summary": {
    "totalProducts": 1,
    "productsOnMediaBuys": 0,
    "productsPending": 1
  }
}
  • On a DRAFT campaign, the response reflects the current product selection (see productCount on the campaign).
  • After execute, products are no longer a flat selection — they live inside the campaign’s media buys as packages. Read them via the media buys on the campaign resource.

Errors

CodeWhen
NOT_FOUNDCampaign ID does not exist for the authenticated customer.
See Errors for the full error shape and recovery semantics.

Auto-select products

Let Scope3 pick a balanced product set

Execute campaign

Turn selected products into media buys

Media buy status

Poll live ADCP status after execute

Campaign overview

The campaign object and lifecycle