Skip to main content

AdCP 3.3 beta program

Use the beta in development and staging, not production. New production integrations should stay on AdCP 3.2 until 3.3 reaches general availability. Every beta is an immutable checkpoint, but later betas may change 3.3 surfaces before GA.
3.3 is a minor release with a deliberately short cycle. Its beta follows the same order as 3.2: the protocol first, then the SDKs. Beta.0 is not waiting for the SDKs. Beta.1 is a two-stage convergence point: publish the corrected protocol checkpoint, then have SDKs ingest that exact bundle. Call beta.1 SDK-backed only after the matching SDK versions and integration evidence are published.

Know which version string to use

The artifact version, wire pin, and documentation selector are related but not interchangeable: Only send a prerelease wire pin to a peer that advertises that exact value in get_adcp_capabilities.adcp.supported_versions. Prerelease pins are exact: a buyer pinned to "3.3-beta.0" must not silently negotiate to beta.1, and a stable "3.2" pin must not silently negotiate to a beta.

Test beta.0 without an SDK

Once v3.3.0-beta.0 is published, download the signed protocol bundle rather than copying schemas from main or from the moving /schemas/3.3.0-beta.0/ path:
The extracted adcp-3.3.0-beta.0/ directory contains:
  • manifest.json: release version, bundle contents, skills, and file count;
  • schemas/: source-shaped and bundled request/response schemas, including schemas/manifest.json for the task and capability inventory;
  • compliance/: storyboards, test kits, vectors, and runner contracts;
  • skills/: role guidance for coding agents;
  • openapi/: published OpenAPI artifacts.
Verify the Sigstore signature before using the bundle as a build input. See Verifying protocol tarballs for the certificate-identity and issuer checks. At beta.0, useful tests are:
  1. Generate or refresh types from the pinned bundled schemas.
  2. Validate representative requests and responses for the roles you implement, including the new 3.3 surfaces you plan to adopt: expected_confirmation_at, commercial_terms.definition_pins[], vendor-metric outcome_target goals, reporting_webhook.operation_id, media_buy.features.catalog_ingestion, the DOOH location and dooh_inventory_summary fields, sync_audiences audience sizes, and the experimental spot, print, daypart, loudness, and governance budget.periods[] fields.
  3. Compare your advertised tools with schemas/manifest.json.
  4. Exercise raw MCP or A2A calls with adcp_version: "3.3-beta.0" against a staging peer that advertises the same pin.
  5. Run the compliance assets with a source-compatible runner if you maintain one. Do not weaken production authentication to accommodate a beta runner.
No 3.3 verification badge is issued from beta.0. The protocol-first cut is an implementation input, not a certification target.

SDK support contract

An SDK support claim must name all of the following:
  • exact SDK package version;
  • exact AdCP prerelease bundle used to generate or load schemas;
  • supported roles and transports;
  • known unsupported or raw-only surfaces;
  • install command and one tested validation command.
The SDK compatibility matrix lives in Choose your SDK. Until a row names beta.0 support, treat that SDK’s generated 3.3 types and validators as unavailable. Raw JSON calls may still be possible, but they are not equivalent to SDK support. SDK maintainers should report protocol ambiguities against the AdCP repository. Report SDK implementation bugs in the SDK’s own repository. Accepted protocol fixes receive a changeset and ship in beta.1; beta.0 is never rebuilt in place.

beta.1 convergence

The beta.1 protocol checkpoint is ready to cut when:
  • every first-party SDK’s beta.0 support is marked supported, partial, or unavailable with an exact package version;
  • accepted beta.0 protocol feedback is merged;
  • the integration scenarios below have run against beta.0 and identify any correction included in the beta.1 candidate;
  • copy/paste installation and validation commands have been executed as published;
  • the cumulative migration guide and release notes describe any beta.0-to-beta.1 correction that requires adopter action.
After 3.3.0-beta.1 is published, SDK maintainers ingest that signed bundle and publish an exact beta.1 support statement or an explicit unsupported/partial result. Only after the matching buyer/seller scenarios pass is beta.1 the SDK-backed ecosystem checkpoint. Do not combine an SDK generated from beta.0 with a beta.1 wire pin unless that SDK explicitly documents forward compatibility.

Required integration evidence

Retain the exact protocol bundle, SDK package versions, capability responses, redacted requests and responses, task IDs, and account and MediaBuy identifiers for each run.
  1. Account lifecycle. Call a discovery task (get_products or list_products) with a buyer-declared natural key that was never provisioned. The seller returns ACCOUNT_NOT_FOUND (a seller that provisions lazily instead of exposing sync_accounts may answer without creating the account), and list_accounts shows no new account. Then provision, with sync_accounts or the seller’s lazy path on a provisioning task, and repeat the read.
  2. Signed traffic. Send a signed request and receive a signed webhook between two agents that publish identity.brand_json_url. Confirm agent resolution by canonical URL, and that a pinned key missing from the agent’s JWKS is rejected. Against a seller that lists an operation in required_for and a2a_invocation_skill in request_signing.operation_sources, confirm an unsigned A2A call to that operation is rejected. A 3.3 seller that lists the operation in required_for without the marker must reject it too; the marker advertises enforcement, it does not enable it.
  3. Catalog intake. For a seller that declares media_buy.features.catalog_ingestion, confirm sync_catalogs rejects an unlisted catalog type, mode, or feed format, and an explicit content_id_type outside a declared supported_content_id_types, with UNSUPPORTED_FEATURE before mutation, including on a dry run, and reports one item_issues entry per item on terminal results and discovery reads under per_item reporting.
  4. Delivery webhooks. Register a reporting_webhook with an operation_id and confirm every media_buy_delivery webhook echoes it verbatim. Register one without it and confirm the seller sends no delivery webhooks to it.
  5. End to end. Run one buyer and seller lifecycle through purchase, creative assignment, and a delivery readback.

What may still change

The 3.3.0 milestone is the live scope record for work that may still land during the beta cycle. Use these maintained GitHub views as the live record: Milestone assignment means candidate for the 3.3 line, not a commitment to beta.1 or GA. A change is included in a beta only when it is merged before that beta’s tag. Items may be deferred, split, or moved to a later release as working groups resolve scope and interoperability risk.

In review for 3.3

These are proposals, not features. Each row is an issue that was open in the 3.3.0 milestone on 2026-10-22 (58 issues), with its open pull request where one exists. None is part of a beta unless it merges before that beta’s tag. “Merged so far” names the slice that already shipped on main; the rest of the issue is still in review. The live lists are the open 3.3 issues and open pull requests and drafts.

Ratified decisions

Four proposed records document surfaces merged for beta.0 and await working-group ratification: DR-0027 (error.mutation_outcome), DR-0028 (sales-fixed-rate), DR-0029 (delivery projection), and DR-0030 (media-buy lineage).

Open 3.3.0 milestone issues

Also open, without a 3.3 milestone issue: #7958 composable delivery breakdowns and #7957 metric aggregation semantics (both drafts; their issues moved to 3.4.0), #7446 TMP Context Match cache isolation (on the 3.3.0 milestone), and #8346 signed creative addons (draft; asks the working group to reconsider a 3.4 deferral).

Known beta boundaries

  • Experimental surfaces retain their experimental-status contract. A 3.3 beta does not graduate them to stable. The surfaces new in 3.3 are listed in the release notes.
  • The 3.3-beta documentation selector moves forward; pinned semver artifacts and documentation snapshots remain immutable.
  • Stable schema aliases continue to resolve to stable releases during beta. Use pinned prerelease URLs when validating beta behavior.
  • The media_buy_seller/unprovisioned_account_reference storyboard is advisory until runner capability 14.1.0.

Report useful feedback

Include this information in a beta issue:
  • protocol artifact version and wire pin;
  • SDK name and version, or raw wire;
  • buyer, seller, creative, signals, brand, measurement, or governance role;
  • transport and task name;
  • schema path or JSON Pointer involved;
  • expected and actual behavior;
  • minimal redacted payload and validation error;
  • whether the problem blocks beta.1 interoperability.
Never include credentials, signed URLs, bearer tokens, private keys, or live customer payloads.