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.
list_transformers discovers account-scoped creative transformers — the agent-offered, selectable units of build capability (voices, models, styles) used by build_creative.
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.
build_creative response — 13 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).
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).
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.
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.
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.
list_creatives request — 17 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).
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.
list_transformers discovers account-scoped creative transformers — the agent-offered, selectable units of build capability (voices, models, styles) used by build_creative.
list_transformers request — 14 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).
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.
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.
preview_creative request — 15 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).
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.
preview_creative response — 13 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).
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).
sync_creatives uploads and manages creative assets in an AdCP library with bulk uploads, upsert semantics, and generative creative support.
sync_creatives request — 13 fields, 3 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).
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.
sync_creatives response — 13 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).
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.
validate_input request — 4 fields, 1 required
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.
validate_input response — 14 fields, 2 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
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).