AdCP 3.1.13 · Negotiation layer
AdCP Creative
AdCP Creative is a schema group of the Ad Context Protocol holding 8 of the 64 operations in release 3.1.13, covering creative generation, preview, format and transformer discovery, library sync and delivery reporting.
The creative group builds, stores and renders the assets a media buy serves. build_creative generates or transforms a manifest from a natural language brief, sync_creatives uploads and manages assets in a creative library, preview_creative renders an existing manifest to a URL, image or HTML, and get_creative_delivery returns variant-level delivery data with manifests and performance metrics.
sync_creatives sits on the critical path of a media buy even though it is registered here: a buy with no creatives attached stays in pending_creatives and does not serve. list_creative_formats is registered in this group and again in media buy, against different request schemas — the creative agent's variant takes type, include_pricing and account, the media-buy variant takes publisher_domain and property_id. get_adcp_capabilities is what says which contract an agent implements.
What the 8 creative operations do
| Operation | Request fields | Response fields | What it does |
|---|---|---|---|
build_creative | 35 | 13 | build_creative generates, transforms, or retrieves ad creative manifests in AdCP from a natural language brief to production-ready assets. |
get_creative_delivery | 11 | 21 | get_creative_delivery retrieves variant-level delivery data with manifests and performance metrics for generative and static creatives in AdCP. |
list_creative_formats | 21 | 18 | Request parameters for discovering creative formats provided by this creative agent |
list_creatives | 17 | 21 | list_creatives browses and filters creatives in an AdCP library by asset type, format, status, concept, and tags with cursor-based pagination. |
list_transformers | 14 | 17 | list_transformers discovers account-scoped creative transformers — the agent-offered, selectable units of build capability (voices, models, styles) used by build_creative. |
preview_creative | 15 | 13 | preview_creative renders an existing creative manifest into viewable output in AdCP, in single or batch mode, returning URL, image, or HTML output. |
sync_creatives | 13 | 13 | sync_creatives uploads and manages creative assets in an AdCP library with bulk uploads, upsert semantics, and generative creative support. |
validate_input | 4 | 14 | Request payload for the validate_input task. |
build_creative
build_creative generates, transforms, or retrieves ad creative manifests in AdCP from a natural language brief to production-ready assets.
Every field and edge case for build_creative
build_creative request — 35 fields, 1 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
message | string | Natural language instructions for the transformation or generation. | |
creative_manifest | creative-manifest | Creative manifest to transform or generate from. | |
creative_id | string | Reference to a creative in the agent's library. | |
concept_id | string | Creative concept containing the creative. | |
media_buy_id | string | Media buy identifier for tag generation context. | |
package_id | string | Package identifier within the media buy. | |
target_format_id | format-id | Single format ID to generate. | |
target_format_ids | format-id[] | Array of format IDs to generate in a single call. | |
transformer_id | string | Selects an account-scoped transformer (discovered via list_transformers) to perform the build. | |
config | object | Typed render configuration for the selected transformer, keyed by each param's `field` (from the transformer's params[] in list_transformers). | |
refine_from_build_variant_id | string | Refine a previously produced variant: re-build from the referenced `build_variant_id`, applying the natural-language instruction in `message` and any `config` delta, and return NEW lineage-linked variant(s) — each with… | |
mode | string | `execute` (default) produces and bills the creative(s). One of: execute, estimate. | |
max_spend | object | Hard per-call spend ceiling. | |
max_creatives | integer | Caps how many DISTINCT creatives to produce along the catalog/item fan-out axis — one creative per catalog item. | |
signal_conditions | any[] | Advisory keep-all PRODUCTION axis: produce one distinct creative group per signal condition, each kept and trafficked with its own signal targeting (e.g. | |
max_variants | integer | Caps how many ALTERNATIVES to produce per creative (different voices, themes, best-of-N, etc.). | |
variant_axis | object | Declares the dimension along which variants differ. | |
keep_mode | string | Advisory hint for how the buyer intends to use the variants. One of: keep_all, keep_one, keep_some. | |
selection_strategy | creative-selection-strategy | Governs HOW the agent samples when max_creatives < items_total (folds #5262). One of: audience_relevance, contextual_fit, performance, proximity, inventory_priority, random. | |
account | account-ref | Account reference for pricing and billing. | |
brand | brand-ref | Brand reference for creative generation. | |
quality | creative-quality | Quality tier for generation. One of: draft, production. | |
evaluator | evaluator-spec | Optional advisory evaluator (buyer-attached pointer, #5280) declaring how produced variants should be evaluated and ranked — the rank-side of the get_creative_features feature oracle. | |
item_limit | integer | Maximum number of catalog items a SINGLE creative consumes when generating (DCO-style — e.g. | |
include_preview | boolean | When true, requests the creative agent to include preview renders in the response alongside the manifest. | |
preview_inputs | object[] | Input sets for preview generation when include_preview is true. | |
preview_quality | creative-quality | Render quality for inline preview when include_preview is true. One of: draft, production. | |
preview_output_format | preview-output-format | Output format for preview renders when include_preview is true. One of: url, html. | |
macro_values | object | Macro values to pre-substitute into the output manifest's assets. | |
idempotency_key | string | required | Client-generated unique key for this request. |
push_notification_config | push-notification-config | Optional webhook configuration for async terminal completion/failure notifications on build_creative. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Per-request opaque caller-supplied correlation object echoed unchanged in the response. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). |
{
"$schema": "/schemas/media-buy/build-creative-request.json",
"idempotency_key": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
"message": "Create a banner promoting our winter sale with a warm, inviting feel",
"target_capability_id": "display_300x250_generative",
"brand": {
"domain": "mybrand.com"
},
"creative_manifest": {
"format_kind": "image",
"assets": {
"offering_catalog": {
"asset_type": "catalog",
"type": "offering",
"items": [
{
"offering_id": "winter-sale",
"name": "Winter Sale Collection",
"description": "50% off all winter items"
}
]
}
}
}
} get_creative_delivery
get_creative_delivery retrieves variant-level delivery data with manifests and performance metrics for generative and static creatives in AdCP.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
account | account-ref | Account for routing and scoping. | |
media_buy_ids | string[] | Filter to specific media buys by publisher ID. | |
creative_ids | string[] | Filter to specific creatives by ID. | |
start_date | string | Start date for delivery period (YYYY-MM-DD). | |
end_date | string | End date for delivery period (YYYY-MM-DD). | |
max_variants | integer | Maximum number of variants to return per creative. | |
pagination | pagination-request | Pagination parameters for the creatives array in the response. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
get_creative_delivery response — 21 fields, 4 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
account_id | string | Account identifier. | |
media_buy_id | string | Publisher's media buy identifier. | |
currency | string | required | ISO 4217 currency code for monetary values in this response (e.g., 'USD', 'EUR') |
reporting_period | object | required | Date range for the report. |
creatives | object[] | required | Creative delivery data with variant breakdowns |
pagination | object | Pagination information. | |
errors | error[] | Task-specific errors and warnings | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"media_buy_id": "mb_12345",
"currency": "USD",
"reporting_period": {
"start": "2026-01-20T00:00:00-05:00",
"end": "2026-01-27T23:59:59-05:00",
"timezone": "America/New_York"
},
"creatives": [
{
"creative_id": "hero_video_30s",
"totals": {
"impressions": 150000,
"spend": 7500,
"clicks": 4500,
"ctr": 0.03,
"completion_rate": 0.72
},
"variants": [
{
"variant_id": "hero_video_30s",
"impressions": 150000,
"spend": 7500,
"clicks": 4500,
"ctr": 0.03,
"completion_rate": 0.72
}
]
}
]
} list_creative_formats
Request parameters for discovering creative formats provided by this creative agent
list_creative_formats request — 21 fields, 0 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
format_ids | format-id[] | Return only these specific format IDs | |
type | string | Filter by format type (technical categories with distinct requirements) One of: audio, video, display, dooh. | |
asset_types | asset-content-type[] | Filter to formats that include these asset types. | |
max_width | integer | Maximum width in pixels (inclusive). | |
max_height | integer | Maximum height in pixels (inclusive). | |
min_width | integer | Minimum width in pixels (inclusive). | |
min_height | integer | Minimum height in pixels (inclusive). | |
is_responsive | boolean | Filter for responsive formats that adapt to container size. | |
name_search | string | Search for formats by name (case-insensitive partial match) | |
wcag_level | wcag-level | Filter to formats that meet at least this WCAG conformance level (A < AA < AAA) One of: A, AA, AAA. | |
disclosure_positions | disclosure-position[] | Filter to formats that support all of these disclosure positions. | |
disclosure_persistence | disclosure-persistence[] | Filter to formats where each requested persistence mode is supported by at least one position in disclosure_capabilities. | |
output_format_ids | format-id[] | **DEPRECATED in 3.1.** Discover build capability via `list_transformers` (filter its `output_format_ids`) instead — build capability is a property of transformers, not a relationship between formats. | |
input_format_ids | format-id[] | **DEPRECATED in 3.1.** Discover build capability via `list_transformers` (filter its `input_format_ids`) instead. | |
include_pricing | boolean | Include pricing_options on each format. | |
account | account-ref | Account reference for pricing. | |
pagination | pagination-request | Standard cursor-based pagination parameters for list operations | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
formats | format[] | required | Full format definitions for all formats this agent supports. |
creative_agents | object[] | Optional: Creative agents that provide additional formats. | |
errors | error[] | Task-specific errors and warnings | |
pagination | pagination-response | Standard cursor-based pagination metadata for list responses | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
list_creatives
list_creatives browses and filters creatives in an AdCP library by asset type, format, status, concept, and tags with cursor-based pagination.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
filters | creative-filters | Filter criteria for querying creatives from a creative library. | |
sort | object | Sorting parameters | |
pagination | pagination-request | Standard cursor-based pagination parameters for list operations | |
include_assignments | boolean | Include package assignment information in response | |
include_snapshot | boolean | Include a lightweight delivery snapshot per creative (lifetime impressions and last-served date). | |
include_items | boolean | Include items for multi-asset formats like carousels and native ads | |
include_variables | boolean | Include dynamic content variable definitions (DCO slots) for each creative | |
include_pricing | boolean | Include pricing_options on each creative. | |
include_purged | boolean | Include soft-purged creative tombstones in the result set. | |
include_webhook_activity | boolean | Include recent webhook activity per creative. | |
webhook_activity_limit | integer | Maximum number of `webhook_activity[]` records to return per creative. | |
account | account-ref | Account reference for pricing and access. | |
fields | string[] | Specific fields to include in response (omit for all fields). One of: creative_id, name, format_id, status, created_date, updated_date, tags, assignments, snapshot, items, variables, concept, pricing_options. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
list_creatives response — 21 fields, 4 required
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
query_summary | object | required | Summary of the query that was executed |
pagination | pagination-response | required | Standard cursor-based pagination metadata for list responses |
creatives | object[] | required | Array of creative assets matching the query |
format_summary | object | Breakdown of creatives by format. | |
status_summary | object | Breakdown of creatives by status | |
errors | error[] | Task-specific errors (e.g., invalid filters, account not found) | |
sandbox | boolean | When true, this response contains simulated data from sandbox mode. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
{
"filters": {
"asset_types": ["published_post"],
"format_kinds": ["native_in_feed"]
}
} list_transformers
list_transformers discovers account-scoped creative transformers — the agent-offered, selectable units of build capability (voices, models, styles) used by build_creative.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
transformer_ids | string[] | Return only these specific transformer IDs. | |
input_format_ids | format-id[] | Filter to transformers that accept any of these formats as input. | |
output_format_ids | format-id[] | Filter to transformers that can produce any of these output formats. | |
name_search | string | Search transformers by name (case-insensitive partial match). | |
brief | string | Natural-language brief used to rank and filter transformers (and their enumerable option values when expanded) — e.g. | |
expand_params | string[] | Param `field` names for which to return the FIRST page of account-scoped option VALUES inline on each transformer's `params[].options[]`. | |
expand_pagination | object[] | Fetch the NEXT page of a specific param's account-scoped options, using the `options_cursor` a prior response returned for that `(transformer, param)`. | |
include_pricing | boolean | Include `pricing_options` on each transformer. | |
account | account-ref | Account reference. | |
pagination | pagination-request | Standard cursor-based pagination parameters for list operations | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
transformers | transformer[] | required | Transformer descriptors matching the query. |
errors | error[] | Task-specific errors and warnings. | |
pagination | pagination-response | Standard cursor-based pagination metadata for list responses | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
import { testAgent } from '@adcp/sdk/testing';
import { ListTransformersResponseSchema } from '@adcp/sdk';
const result = await testAgent.listTransformers({
account: { account_id: 'acct_acme' },
brief: 'warm female Spanish-language voiceover',
output_capability_ids: ['audio_vo'],
expand_params: ['voice'],
include_pricing: true,
});
const parsed = ListTransformersResponseSchema.parse(result);
for (const t of parsed.transformers) {
console.log(t.transformer_id, t.name);
const voice = t.params?.find((p) => p.field === 'voice');
for (const opt of voice?.options ?? []) console.log(' voice:', opt.value, opt.metadata);
} preview_creative
preview_creative renders an existing creative manifest into viewable output in AdCP, in single or batch mode, returning URL, image, or HTML output.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
request_type | string | required | Preview mode. One of: single, batch, variant. |
creative_manifest | creative-manifest | Complete creative manifest with all required assets for the format. | |
format_id | format-id | Always a structured object {agent_url, id} — never a plain string. | |
inputs | object[] | Array of input sets for generating multiple preview variants. | |
template_id | string | Specific template ID for custom format rendering. | |
quality | creative-quality | Render quality. One of: draft, production. | |
output_format | preview-output-format | Output format. One of: url, html. | |
item_limit | integer | Maximum number of catalog items to render per preview variant. | |
requests | object[] | Array of preview requests (1-50 items). | |
variant_id | string | Platform-assigned variant identifier from get_creative_delivery response. | |
creative_id | string | Creative identifier for context. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Per-request opaque caller-supplied correlation object echoed unchanged in the response. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). |
{
"request_type": "single",
"target_capability_id": "preview_image_300x250",
"creative_manifest": { /* includes format_kind, assets */ }
} sync_creatives
sync_creatives uploads and manages creative assets in an AdCP library with bulk uploads, upsert semantics, and generative creative support.
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
account | account-ref | required | Account that owns these creatives. |
creatives | creative-asset[] | required | Array of creative assets to sync (create or update) |
creative_ids | string[] | Optional filter to limit sync scope to specific creative IDs. | |
assignments | object[] | Optional bulk assignment of creatives to packages. | |
idempotency_key | string | required | Client-generated idempotency key for safe retries. |
delete_missing | boolean | When true, creatives not included in this sync will be archived. | |
dry_run | boolean | When true, rehearse this sync_creatives operation without applying it. | |
validation_mode | validation-mode | Validation strictness. One of: strict, lenient. | |
push_notification_config | push-notification-config | Optional webhook configuration for async sync notifications. | |
context | context | Opaque correlation data that is echoed unchanged in responses. | |
ext | ext | Extension object for platform-specific, vendor-namespaced parameters. |
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Per-request opaque caller-supplied correlation object echoed unchanged in the response. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). |
import { testAgent } from "@adcp/sdk/testing";
import { SyncCreativesResponseSchema } from "@adcp/sdk";
import { randomUUID } from "node:crypto";
const result = await testAgent.syncCreatives({
account: {
brand: { domain: "acmecorp.com" },
operator: "acmecorp.com",
sandbox: true,
},
idempotency_key: randomUUID(),
creatives: [
{
creative_id: "creative_video_001",
name: "Summer Sale 30s",
format_kind: "video_hosted",
assets: {
video: {
asset_type: "video",
url: "https://cdn.example.com/summer-sale-30s.mp4",
width: 1920,
height: 1080,
duration_ms: 30000,
},
},
},
],
});
if (!result.success) {
throw new Error(`Request failed: ${result.error}`);
}
// Validate response against schema
const validated = SyncCreativesResponseSchema.parse(result.data);
// Three-shape discriminated union: errors | submitted | creatives
if ("errors" in validated && validated.errors && !("creatives" in validated) && !("status" in validated)) {
throw new Error(`Operation failed: ${JSON.stringify(validated.errors)}`);
}
if ("status" in validated && validated.status === "submitted") {
// Whole sync queued asynchronously — poll tasks/get with task_id or await webhook
console.log(`Sync queued as task ${validated.task_id}: ${validated.message ?? ""}`);
} else if ("creatives" in validated) {
console.log(`Synced ${validated.creatives.length} creatives`);
for (const c of validated.creatives) {
// c.status carries review state: approved, pending_review, rejected, processing, archived
if (c.status === "pending_review" || c.status === "processing") {
console.log(` ${c.creative_id}: awaiting review (${c.status})`);
}
}
} validate_input
Request payload for the validate_input task.
| Field | Type | Required | Description |
|---|---|---|---|
account | account-ref | Optional account scope for seller-specific product validation. | |
brand | brand-ref | Optional brand scope when account is omitted or the seller keys sandbox validation by brand identity. | |
manifest | creative-manifest | required | Creative manifest to validate. |
targets | object[] | Discriminated list of validation targets. |
| Field | Type | Required | Description |
|---|---|---|---|
adcp_version | string | Release-precision AdCP version (VERSION.RELEASE, e.g. | |
adcp_major_version | integer | DEPRECATED in favor of adcp_version (release-precision string). | |
context_id | string | Session/conversation identifier for tracking related operations across multiple task invocations. | |
context | context | Per-request opaque caller-supplied correlation object echoed unchanged in the response. | |
task_id | string | Unique identifier for tracking asynchronous operations. | |
status | task-status | required | Current task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown. |
message | string | Human-readable summary of the task result. | |
timestamp | string | ISO 8601 timestamp when the response was generated. | |
replayed | boolean | Set to true when this response was returned from the idempotency cache rather than from a fresh execution. | |
adcp_error | error | Transport-envelope error signal for fatal task failures. | |
push_notification_config | push-notification-config | Push notification configuration for async task updates (A2A and REST protocols). | |
governance_context | string | Governance context token issued by the account's governance agent during check_governance. | |
payload | object | Conceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). | |
results | validate-input-result[] | required | Per-target validation results. |
The other 9 AdCP areas
- Media Buy — 11 operations
- Signals — 2 operations
- Protocol — 3 operations
- Accounts — 5 operations
- Brand Protocol — 6 operations
- Governance — 22 operations
- Sponsored Intelligence — 4 operations
- Trusted Match — 2 operations
- Compliance — 1 operation