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

Creative — 8 operations
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
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
messagestringNatural language instructions for the transformation or generation.
creative_manifestcreative-manifestCreative manifest to transform or generate from.
creative_idstringReference to a creative in the agent's library.
concept_idstringCreative concept containing the creative.
media_buy_idstringMedia buy identifier for tag generation context.
package_idstringPackage identifier within the media buy.
target_format_idformat-idSingle format ID to generate.
target_format_idsformat-id[]Array of format IDs to generate in a single call.
transformer_idstringSelects an account-scoped transformer (discovered via list_transformers) to perform the build.
configobjectTyped render configuration for the selected transformer, keyed by each param's `field` (from the transformer's params[] in list_transformers).
refine_from_build_variant_idstringRefine 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…
modestring`execute` (default) produces and bills the creative(s). One of: execute, estimate.
max_spendobjectHard per-call spend ceiling.
max_creativesintegerCaps how many DISTINCT creatives to produce along the catalog/item fan-out axis — one creative per catalog item.
signal_conditionsany[]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_variantsintegerCaps how many ALTERNATIVES to produce per creative (different voices, themes, best-of-N, etc.).
variant_axisobjectDeclares the dimension along which variants differ.
keep_modestringAdvisory hint for how the buyer intends to use the variants. One of: keep_all, keep_one, keep_some.
selection_strategycreative-selection-strategyGoverns HOW the agent samples when max_creatives < items_total (folds #5262). One of: audience_relevance, contextual_fit, performance, proximity, inventory_priority, random.
accountaccount-refAccount reference for pricing and billing.
brandbrand-refBrand reference for creative generation.
qualitycreative-qualityQuality tier for generation. One of: draft, production.
evaluatorevaluator-specOptional 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_limitintegerMaximum number of catalog items a SINGLE creative consumes when generating (DCO-style — e.g.
include_previewbooleanWhen true, requests the creative agent to include preview renders in the response alongside the manifest.
preview_inputsobject[]Input sets for preview generation when include_preview is true.
preview_qualitycreative-qualityRender quality for inline preview when include_preview is true. One of: draft, production.
preview_output_formatpreview-output-formatOutput format for preview renders when include_preview is true. One of: url, html.
macro_valuesobjectMacro values to pre-substitute into the output manifest's assets.
idempotency_keystringrequiredClient-generated unique key for this request.
push_notification_configpush-notification-configOptional webhook configuration for async terminal completion/failure notifications on build_creative.
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
build_creative response — 13 fields, 1 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextPer-request opaque caller-supplied correlation object echoed unchanged in the response.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
build_creative — Example (json) — source
{
  "$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.

get_creative_delivery request — 11 fields, 0 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
accountaccount-refAccount for routing and scoping.
media_buy_idsstring[]Filter to specific media buys by publisher ID.
creative_idsstring[]Filter to specific creatives by ID.
start_datestringStart date for delivery period (YYYY-MM-DD).
end_datestringEnd date for delivery period (YYYY-MM-DD).
max_variantsintegerMaximum number of variants to return per creative.
paginationpagination-requestPagination parameters for the creatives array in the response.
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
get_creative_delivery response — 21 fields, 4 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual 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_idstringAccount identifier.
media_buy_idstringPublisher's media buy identifier.
currencystringrequiredISO 4217 currency code for monetary values in this response (e.g., 'USD', 'EUR')
reporting_periodobjectrequiredDate range for the report.
creativesobject[]requiredCreative delivery data with variant breakdowns
paginationobjectPagination information.
errorserror[]Task-specific errors and warnings
extextExtension object for platform-specific, vendor-namespaced parameters.
get_creative_delivery — Example (json) — source
{
  "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
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
format_idsformat-id[]Return only these specific format IDs
typestringFilter by format type (technical categories with distinct requirements) One of: audio, video, display, dooh.
asset_typesasset-content-type[]Filter to formats that include these asset types.
max_widthintegerMaximum width in pixels (inclusive).
max_heightintegerMaximum height in pixels (inclusive).
min_widthintegerMinimum width in pixels (inclusive).
min_heightintegerMinimum height in pixels (inclusive).
is_responsivebooleanFilter for responsive formats that adapt to container size.
name_searchstringSearch for formats by name (case-insensitive partial match)
wcag_levelwcag-levelFilter to formats that meet at least this WCAG conformance level (A < AA < AAA) One of: A, AA, AAA.
disclosure_positionsdisclosure-position[]Filter to formats that support all of these disclosure positions.
disclosure_persistencedisclosure-persistence[]Filter to formats where each requested persistence mode is supported by at least one position in disclosure_capabilities.
output_format_idsformat-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_idsformat-id[]**DEPRECATED in 3.1.** Discover build capability via `list_transformers` (filter its `input_format_ids`) instead.
include_pricingbooleanInclude pricing_options on each format.
accountaccount-refAccount reference for pricing.
paginationpagination-requestStandard cursor-based pagination parameters for list operations
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
list_creative_formats response — 18 fields, 2 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
formatsformat[]requiredFull format definitions for all formats this agent supports.
creative_agentsobject[]Optional: Creative agents that provide additional formats.
errorserror[]Task-specific errors and warnings
paginationpagination-responseStandard cursor-based pagination metadata for list responses
extextExtension 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
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
filterscreative-filtersFilter criteria for querying creatives from a creative library.
sortobjectSorting parameters
paginationpagination-requestStandard cursor-based pagination parameters for list operations
include_assignmentsbooleanInclude package assignment information in response
include_snapshotbooleanInclude a lightweight delivery snapshot per creative (lifetime impressions and last-served date).
include_itemsbooleanInclude items for multi-asset formats like carousels and native ads
include_variablesbooleanInclude dynamic content variable definitions (DCO slots) for each creative
include_pricingbooleanInclude pricing_options on each creative.
include_purgedbooleanInclude soft-purged creative tombstones in the result set.
include_webhook_activitybooleanInclude recent webhook activity per creative.
webhook_activity_limitintegerMaximum number of `webhook_activity[]` records to return per creative.
accountaccount-refAccount reference for pricing and access.
fieldsstring[]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.
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
list_creatives response — 21 fields, 4 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual 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_summaryobjectrequiredSummary of the query that was executed
paginationpagination-responserequiredStandard cursor-based pagination metadata for list responses
creativesobject[]requiredArray of creative assets matching the query
format_summaryobjectBreakdown of creatives by format.
status_summaryobjectBreakdown of creatives by status
errorserror[]Task-specific errors (e.g., invalid filters, account not found)
sandboxbooleanWhen true, this response contains simulated data from sandbox mode.
extextExtension object for platform-specific, vendor-namespaced parameters.
list_creatives — Example (json) — source
{
  "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.

list_transformers request — 14 fields, 0 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
transformer_idsstring[]Return only these specific transformer IDs.
input_format_idsformat-id[]Filter to transformers that accept any of these formats as input.
output_format_idsformat-id[]Filter to transformers that can produce any of these output formats.
name_searchstringSearch transformers by name (case-insensitive partial match).
briefstringNatural-language brief used to rank and filter transformers (and their enumerable option values when expanded) — e.g.
expand_paramsstring[]Param `field` names for which to return the FIRST page of account-scoped option VALUES inline on each transformer's `params[].options[]`.
expand_paginationobject[]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_pricingbooleanInclude `pricing_options` on each transformer.
accountaccount-refAccount reference.
paginationpagination-requestStandard cursor-based pagination parameters for list operations
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
list_transformers response — 17 fields, 2 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextOpaque correlation data that is echoed unchanged in responses.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
transformerstransformer[]requiredTransformer descriptors matching the query.
errorserror[]Task-specific errors and warnings.
paginationpagination-responseStandard cursor-based pagination metadata for list responses
extextExtension object for platform-specific, vendor-namespaced parameters.
list_transformers — Example (javascript) — source
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
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
request_typestringrequiredPreview mode. One of: single, batch, variant.
creative_manifestcreative-manifestComplete creative manifest with all required assets for the format.
format_idformat-idAlways a structured object {agent_url, id} — never a plain string.
inputsobject[]Array of input sets for generating multiple preview variants.
template_idstringSpecific template ID for custom format rendering.
qualitycreative-qualityRender quality. One of: draft, production.
output_formatpreview-output-formatOutput format. One of: url, html.
item_limitintegerMaximum number of catalog items to render per preview variant.
requestsobject[]Array of preview requests (1-50 items).
variant_idstringPlatform-assigned variant identifier from get_creative_delivery response.
creative_idstringCreative identifier for context.
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
preview_creative response — 13 fields, 1 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextPer-request opaque caller-supplied correlation object echoed unchanged in the response.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
preview_creative — Example (json) — source
{
  "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.

sync_creatives request — 13 fields, 3 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
accountaccount-refrequiredAccount that owns these creatives.
creativescreative-asset[]requiredArray of creative assets to sync (create or update)
creative_idsstring[]Optional filter to limit sync scope to specific creative IDs.
assignmentsobject[]Optional bulk assignment of creatives to packages.
idempotency_keystringrequiredClient-generated idempotency key for safe retries.
delete_missingbooleanWhen true, creatives not included in this sync will be archived.
dry_runbooleanWhen true, rehearse this sync_creatives operation without applying it.
validation_modevalidation-modeValidation strictness. One of: strict, lenient.
push_notification_configpush-notification-configOptional webhook configuration for async sync notifications.
contextcontextOpaque correlation data that is echoed unchanged in responses.
extextExtension object for platform-specific, vendor-namespaced parameters.
sync_creatives response — 13 fields, 1 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextPer-request opaque caller-supplied correlation object echoed unchanged in the response.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual 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 — Example (javascript) — source
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
FieldTypeRequiredDescription
accountaccount-refOptional account scope for seller-specific product validation.
brandbrand-refOptional brand scope when account is omitted or the seller keys sandbox validation by brand identity.
manifestcreative-manifestrequiredCreative manifest to validate.
targetsobject[]Discriminated list of validation targets.
validate_input response — 14 fields, 2 required
FieldTypeRequiredDescription
adcp_versionstringRelease-precision AdCP version (VERSION.RELEASE, e.g.
adcp_major_versionintegerDEPRECATED in favor of adcp_version (release-precision string).
context_idstringSession/conversation identifier for tracking related operations across multiple task invocations.
contextcontextPer-request opaque caller-supplied correlation object echoed unchanged in the response.
task_idstringUnique identifier for tracking asynchronous operations.
statustask-statusrequiredCurrent task execution state. One of: submitted, working, input-required, completed, canceled, failed, rejected, auth-required, unknown.
messagestringHuman-readable summary of the task result.
timestampstringISO 8601 timestamp when the response was generated.
replayedbooleanSet to true when this response was returned from the idempotency cache rather than from a fresh execution.
adcp_errorerrorTransport-envelope error signal for fatal task failures.
push_notification_configpush-notification-configPush notification configuration for async task updates (A2A and REST protocols).
governance_contextstringGovernance context token issued by the account's governance agent during check_governance.
payloadobjectConceptual grouping for the task-specific response data defined by individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json).
resultsvalidate-input-result[]requiredPer-target validation results.

The other 9 AdCP areas

Related