Skip to main content
GET
Get directed campaign delivery (alpha)
Alpha and PostHog-gated. The campaign must have mode: "directed".
Calls the connected account’s AdCP get_media_buy_delivery operation with the mirrored upstream media-buy ID, persists the latest totals/package delivery, and returns the seller response. This is live read-through: every request calls the connected seller. The raw response is returned to this caller but is not persisted or served later. Only the latest aggregate media-buy and package metrics, the exact requested windowStart/windowEnd, and the refresh timestamp are persisted on the mirror. Subscription does not pre-fetch delivery. Interchange handles provider report-window limits inside the adapter. For example, TikTok daily delivery ranges longer than 30 days are split into consecutive windows and aggregated into the single response; callers can still request the full one-year directed-campaign window. Named operation: get_campaign_delivery endDate must be on or after startDate. Discovery and performance campaigns return a validation error on this mode-scoped operation.

Response

The delivery object is the connected seller’s AdCP response, so optional metrics depend on provider support. A later get_campaign response exposes the persisted aggregate snapshot under mediaBuys[].performance, including windowStart, windowEnd, and lastUpdated; use those fields together when displaying it. They describe the latest requested window, not lifetime delivery. For Meta connected accounts, by_package is the ad-set-level billing breakdown even when the campaign has no optional catalog-item mapping. Its package IDs are the same ad-set IDs returned by media-buy creation and mirroring, spend stays in the ad account’s currency and major unit, and the media-buy delivery status reflects Meta’s current effective_status (not only its configured status). Every enumerated ad set remains in by_package, including packages with zero delivery in the requested window. If Meta cannot return an authoritative package report or returns malformed billing metrics, the read fails instead of returning an empty or partially trusted package snapshot. The same fail-closed rule applies to requested device breakdowns. Geography rows that exceed the campaign aggregate also fail closed. If Meta returns a smaller attributable geography total, the campaign totals remain authoritative and by_geo_truncated is true, so callers can distinguish incomplete attribution from a complete breakdown. Spend that cannot be represented in the ad account currency’s ISO-4217 minor unit is rejected. For Snap connected accounts, the response currency always comes from the selected Snap ad account; Interchange never substitutes USD when that read is missing or invalid. by_package contains the complete paginated ad-squad inventory, including zero-delivery squads Snap omits from its stats response. Package impressions, clicks, spend, views, and completed views must reconcile exactly to the campaign report before the response is returned. Both Snap TOTAL reports must describe the exact requested window and agree before package rows are accepted; shifted, partial, or out-of-range evidence fails the read. Snap spend is converted from integer microcurrency to the account currency’s major unit by dividing by 1,000,000. Unique reach is labeled with reach_unit: "accounts"; campaign reach is not computed by summing package reach because the same account can appear in more than one package. Missing, duplicate, foreign, malformed, or partial Snap reporting evidence fails the read instead of returning a partial snapshot. An active campaign is labeled active only when Snap also reports its provider-computed delivery status as DELIVERING.

Errors and recovery

See Directed campaigns (alpha).