@adcp/sdk API Reference - v14.0.0-beta.6
    Preparing search index...

    Interface EstablishedProposalAcceptanceFallback

    Inputs the established create_media_buy proposal path requires but the compact accept_proposal request intentionally does not repeat. Callers may supply this on every compatibility-facade acceptance: compact sellers ignore it, while established sellers use it without pretending it came from the seller's proposal snapshot.

    interface EstablishedProposalAcceptanceFallback {
        brand: {
            domain: string;
            brand_id?: string;
            countries?: string[];
            industries?: string[];
            data_subject_contestation?: {
                url?: string;
                email?: string;
                languages?: string[];
            };
            brand_kit_override?: {
                logo?: {
                    asset_type: "image";
                    url: string;
                    width: number;
                    height: number;
                    file_size_bytes?: number;
                    pixel_ratio?: number;
                    format?: string;
                    alt_text?: string;
                    provenance?: {
                        digital_source_type?: DigitalSourceType;
                        synthetic_depiction?: boolean;
                        ai_tool?: { name: string; version?: string; provider?: string };
                        human_oversight?:
                            | "none"
                            | "prompt_only"
                            | "selected"
                            | "edited"
                            | "directed";
                        declared_by?: {
                            agent_url?: string;
                            role: "platform"
                            | "advertiser"
                            | "creator"
                            | "agency"
                            | "tool";
                        };
                        declared_at?: string;
                        created_time?: string;
                        c2pa?: { manifest_url: string };
                        embedded_provenance?: [
                            {
                                method: EmbeddedProvenanceMethod;
                                standard?: (...)
                                | (...);
                                provider: string;
                                verify_agent?: (...) | (...);
                                embedded_at?: (...) | (...);
                            },
                            ...{
                                method: EmbeddedProvenanceMethod;
                                standard?: (...)
                                | (...);
                                provider: string;
                                verify_agent?: (...) | (...);
                                embedded_at?: (...) | (...);
                            }[],
                        ];
                        watermarks?: [
                            {
                                media_type: WatermarkMediaType;
                                provider: string;
                                verify_agent?: (...)
                                | (...);
                                c2pa_action?: (...) | (...);
                                embedded_at?: (...) | (...);
                            },
                            ...{
                                media_type: WatermarkMediaType;
                                provider: string;
                                verify_agent?: (...)
                                | (...);
                                c2pa_action?: (...) | (...);
                                embedded_at?: (...) | (...);
                            }[],
                        ];
                        disclosure?: { required: boolean; jurisdictions?: [(...), ...(...)[]] };
                        verification?: [
                            {
                                verified_by: string;
                                verified_time?: (...)
                                | (...);
                                result: (...) | (...) | (...) | (...);
                                confidence?: (...) | (...);
                                details_url?: (...) | (...);
                            },
                            ...{
                                verified_by: string;
                                verified_time?: (...)
                                | (...);
                                result: (...) | (...) | (...) | (...);
                                confidence?: (...) | (...);
                                details_url?: (...) | (...);
                            }[],
                        ];
                        ext?: { [key: string]: unknown };
                    };
                };
                colors?: { primary?: string; secondary?: string; accent?: string };
                voice?: string;
                tagline?: string;
            };
        };
        start_time: string;
        end_time: string;
    }
    Index

    Properties

    brand: {
        domain: string;
        brand_id?: string;
        countries?: string[];
        industries?: string[];
        data_subject_contestation?: {
            url?: string;
            email?: string;
            languages?: string[];
        };
        brand_kit_override?: {
            logo?: {
                asset_type: "image";
                url: string;
                width: number;
                height: number;
                file_size_bytes?: number;
                pixel_ratio?: number;
                format?: string;
                alt_text?: string;
                provenance?: {
                    digital_source_type?: DigitalSourceType;
                    synthetic_depiction?: boolean;
                    ai_tool?: { name: string; version?: string; provider?: string };
                    human_oversight?:
                        | "none"
                        | "prompt_only"
                        | "selected"
                        | "edited"
                        | "directed";
                    declared_by?: {
                        agent_url?: string;
                        role: "platform"
                        | "advertiser"
                        | "creator"
                        | "agency"
                        | "tool";
                    };
                    declared_at?: string;
                    created_time?: string;
                    c2pa?: { manifest_url: string };
                    embedded_provenance?: [
                        {
                            method: EmbeddedProvenanceMethod;
                            standard?: (...)
                            | (...);
                            provider: string;
                            verify_agent?: (...) | (...);
                            embedded_at?: (...) | (...);
                        },
                        ...{
                            method: EmbeddedProvenanceMethod;
                            standard?: (...)
                            | (...);
                            provider: string;
                            verify_agent?: (...) | (...);
                            embedded_at?: (...) | (...);
                        }[],
                    ];
                    watermarks?: [
                        {
                            media_type: WatermarkMediaType;
                            provider: string;
                            verify_agent?: (...)
                            | (...);
                            c2pa_action?: (...) | (...);
                            embedded_at?: (...) | (...);
                        },
                        ...{
                            media_type: WatermarkMediaType;
                            provider: string;
                            verify_agent?: (...)
                            | (...);
                            c2pa_action?: (...) | (...);
                            embedded_at?: (...) | (...);
                        }[],
                    ];
                    disclosure?: { required: boolean; jurisdictions?: [(...), ...(...)[]] };
                    verification?: [
                        {
                            verified_by: string;
                            verified_time?: (...)
                            | (...);
                            result: (...) | (...) | (...) | (...);
                            confidence?: (...) | (...);
                            details_url?: (...) | (...);
                        },
                        ...{
                            verified_by: string;
                            verified_time?: (...)
                            | (...);
                            result: (...) | (...) | (...) | (...);
                            confidence?: (...) | (...);
                            details_url?: (...) | (...);
                        }[],
                    ];
                    ext?: { [key: string]: unknown };
                };
            };
            colors?: { primary?: string; secondary?: string; accent?: string };
            voice?: string;
            tagline?: string;
        };
    }

    Type Declaration

    • domain: string

      Domain where /.well-known/brand.json is hosted, or the brand's operating domain

      ^a-z0-9?(.a-z0-9?)*$

    • Optionalbrand_id?: string
    • Optionalcountries?: string[]

      Canonical set of ISO 3166-1 alpha-2 countries for this advertiser identity. Omit for a global/default identity. Array order is not meaningful; producers MUST sort codes lexicographically before computing keys or signatures. This qualifies account identity and is not delivery targeting.

    • Optionalindustries?: string[]

      Inline override for the brand's industries. Useful when the caller cannot modify the brand's canonical brand.json but needs to declare industries for governance (e.g., Annex III vertical detection). brand.json remains the canonical source; when omitted here, governance agents SHOULD resolve from brand.json.

    • Optionaldata_subject_contestation?: { url?: string; email?: string; languages?: string[] }

      Inline override for the brand's contestation contact point. Useful when the operator does not control brand.json but needs to discharge Art 22(3) for this plan. brand.json is canonical; when omitted, governance agents resolve brand → house → missing.

      • Optionalurl?: string

        ^https://

      • Optionalemail?: string

        email

      • Optionallanguages?: string[]
    • Optionalbrand_kit_override?: {
          logo?: {
              asset_type: "image";
              url: string;
              width: number;
              height: number;
              file_size_bytes?: number;
              pixel_ratio?: number;
              format?: string;
              alt_text?: string;
              provenance?: {
                  digital_source_type?: DigitalSourceType;
                  synthetic_depiction?: boolean;
                  ai_tool?: { name: string; version?: string; provider?: string };
                  human_oversight?:
                      | "none"
                      | "prompt_only"
                      | "selected"
                      | "edited"
                      | "directed";
                  declared_by?: {
                      agent_url?: string;
                      role: "platform"
                      | "advertiser"
                      | "creator"
                      | "agency"
                      | "tool";
                  };
                  declared_at?: string;
                  created_time?: string;
                  c2pa?: { manifest_url: string };
                  embedded_provenance?: [
                      {
                          method: EmbeddedProvenanceMethod;
                          standard?: (...)
                          | (...);
                          provider: string;
                          verify_agent?: (...) | (...);
                          embedded_at?: (...) | (...);
                      },
                      ...{
                          method: EmbeddedProvenanceMethod;
                          standard?: (...)
                          | (...);
                          provider: string;
                          verify_agent?: (...) | (...);
                          embedded_at?: (...) | (...);
                      }[],
                  ];
                  watermarks?: [
                      {
                          media_type: WatermarkMediaType;
                          provider: string;
                          verify_agent?: (...)
                          | (...);
                          c2pa_action?: (...) | (...);
                          embedded_at?: (...) | (...);
                      },
                      ...{
                          media_type: WatermarkMediaType;
                          provider: string;
                          verify_agent?: (...)
                          | (...);
                          c2pa_action?: (...) | (...);
                          embedded_at?: (...) | (...);
                      }[],
                  ];
                  disclosure?: { required: boolean; jurisdictions?: [(...), ...(...)[]] };
                  verification?: [
                      {
                          verified_by: string;
                          verified_time?: (...)
                          | (...);
                          result: (...) | (...) | (...) | (...);
                          confidence?: (...) | (...);
                          details_url?: (...) | (...);
                      },
                      ...{
                          verified_by: string;
                          verified_time?: (...)
                          | (...);
                          result: (...) | (...) | (...) | (...);
                          confidence?: (...) | (...);
                          details_url?: (...) | (...);
                      }[],
                  ];
                  ext?: { [key: string]: unknown };
              };
          };
          colors?: { primary?: string; secondary?: string; accent?: string };
          voice?: string;
          tagline?: string;
      }

      Inline override for brand-kit fields normally resolved from /.well-known/brand.json on domain (logo, colors, voice, tagline). Use when brand.json is missing, stale, or inappropriate for this specific call — e.g., a campaign-scoped tagline, a co-branded creative, a freshly-rebranded color palette the brand.json hasn't shipped yet. Same inline-override pattern as industries and data_subject_contestation above: brand.json is canonical, the override is per-call. Adopters needing to override fields outside this subset (voice_attributes, prohibited_terms, etc.) MUST publish a different brand.json and reference it via a different domain — the inline override is intentionally narrow to a small high-traffic subset.

      Merge semantics (normative). The merge is field-level, not whole-object replacement. Each field within brand_kit_override (logo, colors, voice, tagline) is evaluated independently — when a field is present on the override the override value applies; when a field is absent the brand.json value applies (or is absent if brand.json doesn't carry one either). For composite fields (colors.primary, colors.secondary, colors.accent), the merge is one level deeper: each color slot is evaluated independently — a producer can override colors.primary while still inheriting colors.secondary from brand.json. SDKs MUST NOT treat a present brand_kit_override.colors as wiping the brand.json colors block entirely; only the per-slot fields present in the override take precedence. Without this rule, a partial-override semantics would diverge across SDKs and produce inconsistent rendering for the same payload.

      • Optionallogo?: {
            asset_type: "image";
            url: string;
            width: number;
            height: number;
            file_size_bytes?: number;
            pixel_ratio?: number;
            format?: string;
            alt_text?: string;
            provenance?: {
                digital_source_type?: DigitalSourceType;
                synthetic_depiction?: boolean;
                ai_tool?: { name: string; version?: string; provider?: string };
                human_oversight?:
                    | "none"
                    | "prompt_only"
                    | "selected"
                    | "edited"
                    | "directed";
                declared_by?: {
                    agent_url?: string;
                    role: "platform"
                    | "advertiser"
                    | "creator"
                    | "agency"
                    | "tool";
                };
                declared_at?: string;
                created_time?: string;
                c2pa?: { manifest_url: string };
                embedded_provenance?: [
                    {
                        method: EmbeddedProvenanceMethod;
                        standard?: (...)
                        | (...);
                        provider: string;
                        verify_agent?: (...) | (...);
                        embedded_at?: (...) | (...);
                    },
                    ...{
                        method: EmbeddedProvenanceMethod;
                        standard?: (...)
                        | (...);
                        provider: string;
                        verify_agent?: (...) | (...);
                        embedded_at?: (...) | (...);
                    }[],
                ];
                watermarks?: [
                    {
                        media_type: WatermarkMediaType;
                        provider: string;
                        verify_agent?: (...)
                        | (...);
                        c2pa_action?: (...) | (...);
                        embedded_at?: (...) | (...);
                    },
                    ...{
                        media_type: WatermarkMediaType;
                        provider: string;
                        verify_agent?: (...)
                        | (...);
                        c2pa_action?: (...) | (...);
                        embedded_at?: (...) | (...);
                    }[],
                ];
                disclosure?: { required: boolean; jurisdictions?: [(...), ...(...)[]] };
                verification?: [
                    {
                        verified_by: string;
                        verified_time?: (...)
                        | (...);
                        result: (...) | (...) | (...) | (...);
                        confidence?: (...) | (...);
                        details_url?: (...) | (...);
                    },
                    ...{
                        verified_by: string;
                        verified_time?: (...)
                        | (...);
                        result: (...) | (...) | (...) | (...);
                        confidence?: (...) | (...);
                        details_url?: (...) | (...);
                    }[],
                ];
                ext?: { [key: string]: unknown };
            };
        }
        • asset_type: "image"

          Discriminator identifying this as an image asset. See /schemas/creative/asset-types for the registry.

        • url: string

          URL to the image asset

        • width: number

          Width in pixels

        • height: number

          Height in pixels

        • Optionalfile_size_bytes?: number

          Image file size in bytes. Required by agents that advertise a max_file_size_kb constraint.

        • Optionalpixel_ratio?: number

          Intrinsic pixels per logical render pixel (for example 2 for a 600×500 image intended to render at 300×250). Optional because a validator can infer the ratio when the target format declares logical dimensions. When supplied, it MUST agree with both width / logical_width and height / logical_height; it is never a substitute for the intrinsic width and height fields.

        • Optionalformat?: string

          Image file format (jpg, png, gif, webp, etc.)

        • Optionalalt_text?: string

          Alternative text for accessibility

        • Optionalprovenance?: {
              digital_source_type?: DigitalSourceType;
              synthetic_depiction?: boolean;
              ai_tool?: { name: string; version?: string; provider?: string };
              human_oversight?:
                  | "none"
                  | "prompt_only"
                  | "selected"
                  | "edited"
                  | "directed";
              declared_by?: {
                  agent_url?: string;
                  role: "platform"
                  | "advertiser"
                  | "creator"
                  | "agency"
                  | "tool";
              };
              declared_at?: string;
              created_time?: string;
              c2pa?: { manifest_url: string };
              embedded_provenance?: [
                  {
                      method: EmbeddedProvenanceMethod;
                      standard?: (...)
                      | (...);
                      provider: string;
                      verify_agent?: (...) | (...);
                      embedded_at?: (...) | (...);
                  },
                  ...{
                      method: EmbeddedProvenanceMethod;
                      standard?: (...)
                      | (...);
                      provider: string;
                      verify_agent?: (...) | (...);
                      embedded_at?: (...) | (...);
                  }[],
              ];
              watermarks?: [
                  {
                      media_type: WatermarkMediaType;
                      provider: string;
                      verify_agent?: (...)
                      | (...);
                      c2pa_action?: (...) | (...);
                      embedded_at?: (...) | (...);
                  },
                  ...{
                      media_type: WatermarkMediaType;
                      provider: string;
                      verify_agent?: (...)
                      | (...);
                      c2pa_action?: (...) | (...);
                      embedded_at?: (...) | (...);
                  }[],
              ];
              disclosure?: { required: boolean; jurisdictions?: [(...), ...(...)[]] };
              verification?: [
                  {
                      verified_by: string;
                      verified_time?: (...)
                      | (...);
                      result: (...) | (...) | (...) | (...);
                      confidence?: (...) | (...);
                      details_url?: (...) | (...);
                  },
                  ...{
                      verified_by: string;
                      verified_time?: (...)
                      | (...);
                      result: (...) | (...) | (...) | (...);
                      confidence?: (...) | (...);
                      details_url?: (...) | (...);
                  }[],
              ];
              ext?: { [key: string]: unknown };
          }
          • Optionaldigital_source_type?: DigitalSourceType
          • Optionalsynthetic_depiction?: boolean

            Assessed declaration of whether the content synthetically depicts a real or fictional person performing or appearing in a way that was generated or materially manipulated rather than captured as depicted. true covers both a fully synthetic performer and material manipulation of a real performer; false is an assessed declaration that the content does not contain such a depiction. Absence means the content has not been assessed for synthetic depiction. This field does not claim consent, legality, or independent verification, and receivers MUST NOT derive it solely from digital_source_type.

          • Optionalai_tool?: { name: string; version?: string; provider?: string }

            AI system used to generate or modify this content. Aligns with IPTC 2025.1 AI metadata fields and C2PA claim_generator.

            • name: string

              Name of the AI tool or model (e.g., 'DALL-E 3', 'Stable Diffusion XL', 'Gemini')

            • Optionalversion?: string

              Version identifier for the AI tool or model (e.g., '25.1', '0125', '2.1'). For generative models, use the model version rather than the API version.

            • Optionalprovider?: string

              Organization that provides the AI tool (e.g., 'OpenAI', 'Stability AI', 'Google')

          • Optionalhuman_oversight?: "none" | "prompt_only" | "selected" | "edited" | "directed"

            Level of human involvement in the AI-assisted creation process. Independent of disclosure.required — the protocol does not derive disclosure obligations from oversight level. Some regulations include carve-outs for human-edited or human-directed AI output, but those carve-outs have factual prerequisites the schema cannot evaluate. Asserting edited or directed does not by itself justify disclosure.required: false.

          • Optionaldeclared_by?: {
                agent_url?: string;
                role: "platform" | "advertiser" | "creator" | "agency" | "tool";
            }

            Party declaring this provenance. Identifies who attached the provenance claim, enabling receiving parties to assess trust.

            • Optionalagent_url?: string

              URL of the agent or service that declared this provenance

            • role: "platform" | "advertiser" | "creator" | "agency" | "tool"

              Role of the declaring party in the supply chain

          • Optionaldeclared_at?: string

            When this provenance claim was made (ISO 8601). Distinct from created_time, which records when the content itself was produced. A provenance claim may be attached well after content creation, for example when retroactively declaring AI involvement for regulatory compliance.

          • Optionalcreated_time?: string

            When this content was created or generated (ISO 8601)

          • Optionalc2pa?: { manifest_url: string }

            C2PA sidecar manifest reference. Links to a detached cryptographic provenance manifest for this content. Note: file-level C2PA bindings break when ad servers transcode, resize, or re-encode assets. For pipelines with intermediaries, consider embedded_provenance as the primary provenance mechanism.

            • manifest_url: string

              URL to the C2PA manifest store for this content

          • Optionalembedded_provenance?: [
                {
                    method: EmbeddedProvenanceMethod;
                    standard?: (...)
                    | (...);
                    provider: string;
                    verify_agent?: (...) | (...);
                    embedded_at?: (...) | (...);
                },
                ...{
                    method: EmbeddedProvenanceMethod;
                    standard?: (...)
                    | (...);
                    provider: string;
                    verify_agent?: (...) | (...);
                    embedded_at?: (...) | (...);
                }[],
            ]

            Provenance metadata embedded within the content stream. Each entry declares one embedding layer: structured provenance data carried inside the content itself, as distinct from sidecar references (c2pa.manifest_url). Embedded provenance survives operations that break sidecar and file-level bindings: ad-server transcoding, CMS ingestion, copy-paste, reformatting, and CDN re-encoding. For ad-tech pipelines where content passes through multiple intermediaries, embedded provenance is the reliable path for provenance that persists from declaration through delivery. This is a declaration by the embedding party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in creative_policy.accepted_verifiers).

            1

          • Optionalwatermarks?: [
                {
                    media_type: WatermarkMediaType;
                    provider: string;
                    verify_agent?: (...)
                    | (...);
                    c2pa_action?: (...) | (...);
                    embedded_at?: (...) | (...);
                },
                ...{
                    media_type: WatermarkMediaType;
                    provider: string;
                    verify_agent?: (...)
                    | (...);
                    c2pa_action?: (...) | (...);
                    embedded_at?: (...) | (...);
                }[],
            ]

            Content watermarks applied to this asset. Each entry declares one watermarking layer: a content modification that encodes an identifier or fingerprint within the asset. Watermarks differ from embedded provenance: a watermark encodes an identifier (who generated it, who owns it), while embedded provenance carries or references a structured provenance record (the full chain of custody). A single asset may carry both. Aligns with C2PA action taxonomy: c2pa.watermarked.bound (watermark linked to a C2PA manifest) and c2pa.watermarked.unbound (watermark independent of any manifest). This is a declaration by the watermarking party. The receiving party (the seller) is the verifier-of-record: it confirms the claim by calling a governance agent it trusts (typically one published in creative_policy.accepted_verifiers).

            1

          • Optionaldisclosure?: { required: boolean; jurisdictions?: [(...), ...(...)[]] }

            Regulatory disclosure requirements for this content. Indicates whether AI disclosure is required and under which jurisdictions.

            • required: boolean

              The declaring party's claim that AI disclosure is required for this content under applicable regulations. This is a declared signal carried through the supply chain — useful as a routing and audit input — not a regulatory determination made by the protocol. Receiving parties remain responsible for their own jurisdictional analysis and should not treat required: false as compliance cover.

            • Optionaljurisdictions?: [(...), ...(...)[]]

              Jurisdictions where disclosure obligations apply

              1

          • Optionalverification?: [
                {
                    verified_by: string;
                    verified_time?: (...)
                    | (...);
                    result: (...) | (...) | (...) | (...);
                    confidence?: (...) | (...);
                    details_url?: (...) | (...);
                },
                ...{
                    verified_by: string;
                    verified_time?: (...)
                    | (...);
                    result: (...) | (...) | (...) | (...);
                    confidence?: (...) | (...);
                    details_url?: (...) | (...);
                }[],
            ]

            Third-party verification or detection results for this content. Multiple services may independently evaluate the same content. Provenance is a claim — verification results attached by the declaring party are supplementary. The enforcing party (e.g., seller/publisher) should run its own verification via get_creative_features or calibrate_content.

            1

          • Optionalext?: { [key: string]: unknown }
      • Optionalcolors?: { primary?: string; secondary?: string; accent?: string }

        Override brand colors (hex strings).

        • Optionalprimary?: string

          ^#[0-9a-fA-F]{6}$

        • Optionalsecondary?: string

          ^#[0-9a-fA-F]{6}$

        • Optionalaccent?: string

          ^#[0-9a-fA-F]{6}$

      • Optionalvoice?: string

        Override brand-voice description for surface-composed text/audio output.

      • Optionaltagline?: string

        Override tagline.

    start_time: string
    end_time: string