Skip to main content
GET /api/v2/buyer/campaigns/:id/media-buy-status Refreshes the campaign’s non-terminal media buys and returns the current status Interchange has for each buy. Direct sales-agent and delegated-adapter buys are polled during this request. Storefront-routed buys are checked from persisted upstream-leg state, because one buyer-facing storefront buy can fan out to multiple upstream sources rather than one pollable storefront agent. Useful right after execute while waiting on publisher approvals.
Webhooks from sales agents are the preferred, near-real-time path. Polling this endpoint is the fallback when you can’t receive webhooks.

Request

No request body.

Parameters

FieldTypeRequiredNotes
idstringYesCampaign ID (path parameter).

Response

Returns a status result for all non-terminal media buys in the campaign. Each element in media_buys reflects one media buy checked during the request:
  • campaign_status — the stored campaign lifecycle status.
  • operational_status — the rolled-up delivery status to present to users (draft, pending_creatives, pending_start, active, paused, completed, attention_required, or no_media_buys).
  • internal_status — the Interchange status after this poll (one of DRAFT, PENDING_APPROVAL, INPUT_REQUIRED, ACTIVE, PAUSED, COMPLETED, CANCELED, FAILED, REJECTED, ARCHIVED).
  • adcp_status — the raw AdCP media-buy status string currently stored or returned by the status check.
  • media_buys[].operational_status — the per-buy delivery status behind the campaign rollup.
  • previous_internal_status / previous_adcp_status — values before this poll.
  • updatedtrue only when this request changed Interchange’s stored status. false does not mean the status is stale; it can also mean the buy was already current.
  • status_refresh_source — where this media buy’s status signal came from:
    • direct_agent — this request called the sales agent’s get_media_buys.
    • delegated_adapter — this request called the delegated adapter’s get_media_buys.
    • storefront_route_rollup — this request read persisted upstream-leg statuses for a storefront-routed buy. This can confirm active delivery without incrementing agents_queried.
    • not_submitted — the buy has no upstream media-buy ID yet.
    • refresh_failed — the refresh failed before a per-buy status signal was available; see errors and blockers.
  • agents_queried — number of direct sales-agent or delegated-adapter status calls made during this request. It can be 0 for a current storefront-routed buy when status_refresh_source is storefront_route_rollup.
  • errors — per-media-buy errors from agents that failed to respond; media_buy_id and error message are included for each failure. A partial error does not prevent successful entries from being returned.
  • blockers / media_buys[].blockers — campaign-level and per-buy reasons delivery is not ready, such as pending creative review or missing upstream IDs.
  • pending_creative_reviews — count of creative reviews still waiting.
  • has_upstream_media_buy — whether any media buy has an upstream ADCP media-buy ID.
  • has_delivery — whether the campaign currently has an active delivery signal.
Treat has_delivery, has_upstream_media_buy, operational_status, and each buy’s status_refresh_source as the delivery signal. Do not use agents_queried: 0 or updated: false alone as a stale-status or dispatch-failure signal. Only non-terminal media buys (PENDING_APPROVAL, ACTIVE, PAUSED) are polled; terminal buys are excluded.

Errors

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

Media buys

Media buy structure and the status enum

Execute campaign

Launch the campaign into media buys

Pause campaign

Halt spend across all media buys

Campaign overview

The campaign object and lifecycle