Skip to main content
Retrieve creative delivery data including variant-level breakdowns with manifests and metrics. This task returns what variants were created from your creatives, what they looked like (via manifests), and how they performed. This is a Creative Protocol task. Call it on any agent that declares "creative" in supported_protocols and "delivery" in its creative agent capabilities — whether that’s a dedicated creative service or a sales agent implementing the Creative Protocol. Request Schema: /schemas/v3/creative/get-creative-delivery-request.json Response Schema: /schemas/v3/creative/get-creative-delivery-response.json

Request Parameters

At least one scoping filter (media_buy_ids or creative_ids) is required. * At least one of media_buy_ids or creative_ids must be provided.

Response

Creative Object

Delivery metrics fields

Fields available on both creative.totals and each variant entry. Commonly-used subset — see the delivery-metrics schema for the full list including incrementality, brand lift, and broadcast metrics.
Spend-derived metrics. Sellers should not populate roas and cost_per_acquisition on individual variant objects — spend cannot be attributed per-variant since it applies to the creative as a whole. These fields are meaningful only on creative.totals. by_event_type entries carry count and value per event type, but not spend-derived rates.
Platform-conditional fields. dooh_metrics is present only for DOOH campaigns. Engagement fields (engagements, follows, saves, profile_visits, engagement_rate) are platform-specific; not all sellers emit them on standardized fields — some use variant.ext for engagement data instead.

Variant Object

Each variant represents a specific execution: a fixed creative (Tier 1), an asset combination the platform selected (Tier 2), or a generated variant (Tier 3). For catalog-driven packages, each catalog item rendered as a distinct ad execution is a variant — the variant’s manifest includes the catalog reference with the specific item rendered. creative_id and variant_id are separate namespaces. The canonical build-to-delivery join is build_creative.variants[].build_variant_id → promoted creative_id → delivery creative_id. variant_id remains the platform’s served execution variant id. Derived metrics like ctr, completion_rate, roas, and cost_per_click are platform-calculated and may not equal naive division of their component fields due to rounding, attribution windows, or filtered impressions.

Tier Behavior

Tier 1: Standard Creatives

One creative maps 1:1 to one variant. The variant metrics match the creative totals.

Platform engagement metrics

Social and feed-native platforms include engagement data in the ext field on each variant, since engagement types vary by platform:
The ext field is not standardized across platforms — each platform defines its own engagement schema. Buyers aggregating across social platforms should map platform-specific fields to a common model.

Tier 2: Asset Group Optimization

Buyer provides multiple asset alternatives using a format with selection_mode: "optimize". Platform tests combinations and returns the manifest for each variant showing which assets were selected.

Tier 3: Generative Creative

Platform generates variants from brand manifest and input contexts. The manifest contains the generated assets — which may differ entirely from what the buyer submitted. When the publisher uses AdCP content standards, generation_context can include an artifact reference linking the variant to the specific content (article, video, etc.) that triggered generation. Platforms can also use ext for vendor-specific context structures.

Previewing Variants

Use preview_creative with request_type: "variant" to see what a specific variant looked like when served:
Since each variant includes its full manifest, you can also pass the manifest directly to preview_creative as a standard single request to re-render it.

Relationship to delivery reporting

Use media_buy_id + creative_id as join keys to correlate data across both responses. When a sales agent implements both protocols, both tasks are available on the same agent URL. See Creative capabilities on sales agents for the full pattern.

Cross-agent aggregation

When running campaigns across multiple sellers, call get_creative_delivery on each agent separately and correlate results:
  • Join key: Use creative_id (buyer-assigned) to correlate the same creative across agents. If you used concept_id during upload, filter by concept to group related creatives.
  • variant_id scope: Variant IDs are unique within an agent and creative, not globally. Two agents may generate variants with the same variant_id value. Prefix with the agent URL when building aggregated dashboards.
  • Timezone handling: Each agent may report in its own timezone via reporting_period.timezone. Normalize to a common timezone before aggregating metrics.
  • max_variants selection: Agents choose which variants to return when max_variants limits the result set. Most agents prioritize by impression volume (most-served first). For representative sampling, make multiple calls with different time ranges rather than relying on a single large max_variants value.

Building a cross-agent dashboard

When aggregating delivery data from multiple agents into a unified view, follow this sequence:
  1. Collect: Call get_creative_delivery on each agent in parallel, using the same creative_ids filter.
  2. Normalize timezones: Convert each agent’s reporting_period to a common timezone before summing.
  3. Merge by creative_id: Group results by creative_id across agents. Sum totals (impressions, spend, clicks). Do not average derived metrics like ctr — recompute them from the summed components.
  4. Prefix variant_id: Create globally unique variant keys by combining agent_url + variant_id (e.g., https://sales.pinnaclemedia-example.com/var_a1b2c3). This prevents collisions when two agents assign the same variant ID independently.
  5. Group by concept_id: For campaign-level roll-ups, use concept_id to group related creatives across sizes and sellers. Pull the concept-to-creative mapping from list_creatives on each agent.

Capability declaration

Agents that support this task declare "delivery" in their capabilities array within list_creative_formats responses:
Buyers discover this by calling list_creative_formats and checking the creative_agents array for agents with "delivery" in their capabilities. This applies to any agent implementing the Creative Protocol, including sales agents.