@adcp/sdk API Reference - v10.0.1
    Preparing search index...

    Interface Provenance

    Provenance metadata for this asset, overrides manifest-level provenance

    interface Provenance {
        digital_source_type?: DigitalSourceType;
        ai_tool?: { name: string; version?: string; provider?: string };
        human_oversight?:
            | "none"
            | "prompt_only"
            | "selected"
            | "edited"
            | "directed";
        declared_by?: {
            agent_url?: string;
            role: "advertiser"
            | "creator"
            | "agency"
            | "platform"
            | "tool";
        };
        declared_at?: string;
        created_time?: string;
        c2pa?: { manifest_url: string };
        embedded_provenance?: {
            method: EmbeddedProvenanceMethod;
            standard?: string;
            provider: string;
            verify_agent?: { agent_url: string; feature_id?: string };
            embedded_at?: string;
        }[];
        watermarks?: {
            media_type: WatermarkMediaType;
            provider: string;
            verify_agent?: { agent_url: string; feature_id?: string };
            c2pa_action?: C2PAWatermarkAction;
            embedded_at?: string;
        }[];
        disclosure?: {
            required: boolean;
            jurisdictions?: {
                country: string;
                region?: string;
                regulation: string;
                label_text?: string;
                render_guidance?: {
                    persistence?: DisclosurePersistence;
                    min_duration_ms?: number;
                    positions?: DisclosurePosition[];
                    ext?: ExtensionObject;
                };
            }[];
        };
        verification?: {
            verified_by: string;
            verified_time?: string;
            result: "authentic"
            | "ai_generated"
            | "ai_modified"
            | "inconclusive";
            confidence?: number;
            details_url?: string;
        }[];
        ext?: ExtensionObject;
    }
    Index

    Properties

    digital_source_type?: DigitalSourceType
    ai_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.

    Type Declaration

    • 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')

    human_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.

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

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

    Type Declaration

    • Optionalagent_url?: string

      URL of the agent or service that declared this provenance

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

      Role of the declaring party in the supply chain

    declared_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.

    date-time

    created_time?: string

    When this content was created or generated (ISO 8601)

    date-time

    c2pa?: { 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.

    Type Declaration

    • manifest_url: string

      URL to the C2PA manifest store for this content

    embedded_provenance?: {
        method: EmbeddedProvenanceMethod;
        standard?: string;
        provider: string;
        verify_agent?: { agent_url: string; feature_id?: string };
        embedded_at?: string;
    }[]

    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).

    Type Declaration

    • method: EmbeddedProvenanceMethod
    • Optionalstandard?: string

      Standard the embedding conforms to, if any (e.g., 'c2pa' for C2PA Section A.7 text manifest embedding)

    • provider: string

      Organization that performed the embedding (e.g., 'Encypher', 'Digimarc'). Display label and audit context — not a wire identifier.

    • Optionalverify_agent?: { agent_url: string; feature_id?: string }

      Buyer's representation that this embedding can be verified by a governance agent on the seller's creative_policy.accepted_verifiers list. The agent_url MUST match (canonicalized) one of the seller's published accepted_verifiers[].agent_url entries; sellers reject sync_creatives submissions whose verify_agent.agent_url is off-list with PROVENANCE_VERIFIER_NOT_ACCEPTED. This is buyer-supplied evidence, not buyer-driven routing — the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist). MAY be omitted for self-verifiable embeddings (e.g., a C2PA text manifest with a public key the seller already trusts).

      • agent_url: string

        URL of the governance agent the buyer represents was used to embed/verify this layer. MUST use the https:// scheme and MUST appear in the seller's creative_policy.accepted_verifiers[].agent_url list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed.

        ^https://

      • Optionalfeature_id?: string

        Optional feature_id the buyer represents the seller should request via get_creative_features (e.g., encypher.markers_present_v2). SHOULD match the feature_id declared on the matching accepted_verifiers[] entry, or be omitted to defer the selector to the seller. When the seller's entry pins a feature_id, that value wins; when neither side pins, the seller selects from the agent's governance.creative_features catalog.

    • Optionalembedded_at?: string

      When the provenance data was embedded (ISO 8601)

      date-time

    watermarks?: {
        media_type: WatermarkMediaType;
        provider: string;
        verify_agent?: { agent_url: string; feature_id?: string };
        c2pa_action?: C2PAWatermarkAction;
        embedded_at?: string;
    }[]

    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).

    Type Declaration

    • media_type: WatermarkMediaType
    • provider: string

      Organization that applied the watermark (e.g., 'Imatag', 'Steg.AI', 'Encypher'). Display label and audit context — not a wire identifier.

    • Optionalverify_agent?: { agent_url: string; feature_id?: string }

      Buyer's representation that this watermark can be detected by a governance agent on the seller's creative_policy.accepted_verifiers list. The agent_url MUST match (canonicalized) one of the seller's published accepted_verifiers[].agent_url entries; sellers reject sync_creatives submissions whose verify_agent.agent_url is off-list with PROVENANCE_VERIFIER_NOT_ACCEPTED. This is buyer-supplied evidence, not buyer-driven routing — the seller is the verifier-of-record and the seller controls which agent it actually calls (the seller MAY use a different on-list agent if it determines this is more appropriate; the seller does not call buyer-asserted endpoints outside its allowlist).

      • agent_url: string

        URL of the governance agent the buyer represents was used to apply/detect this watermark. MUST use the https:// scheme and MUST appear in the seller's creative_policy.accepted_verifiers[].agent_url list (canonicalized per /docs/reference/url-canonicalization: lowercase scheme and host, strip default port, normalize path dot-segments). Sellers MUST NOT call this URL until the canonicalized match is confirmed.

        ^https://

      • Optionalfeature_id?: string

        Optional feature_id the buyer represents the seller should request via get_creative_features (e.g., imatag.watermark_detected). SHOULD match the feature_id declared on the matching accepted_verifiers[] entry, or be omitted to defer the selector to the seller. When the seller's entry pins a feature_id, that value wins; when neither side pins, the seller selects from the agent's governance.creative_features catalog.

    • Optionalc2pa_action?: C2PAWatermarkAction
    • Optionalembedded_at?: string

      When the watermark was applied (ISO 8601)

      date-time

    disclosure?: {
        required: boolean;
        jurisdictions?: {
            country: string;
            region?: string;
            regulation: string;
            label_text?: string;
            render_guidance?: {
                persistence?: DisclosurePersistence;
                min_duration_ms?: number;
                positions?: DisclosurePosition[];
                ext?: ExtensionObject;
            };
        }[];
    }

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

    Type Declaration

    • 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?: {
          country: string;
          region?: string;
          regulation: string;
          label_text?: string;
          render_guidance?: {
              persistence?: DisclosurePersistence;
              min_duration_ms?: number;
              positions?: DisclosurePosition[];
              ext?: ExtensionObject;
          };
      }[]

      Jurisdictions where disclosure obligations apply

    verification?: {
        verified_by: string;
        verified_time?: string;
        result: "authentic" | "ai_generated" | "ai_modified" | "inconclusive";
        confidence?: number;
        details_url?: string;
    }[]

    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.

    Type Declaration

    • verified_by: string

      Name of the verification service (e.g., 'DoubleVerify', 'Hive Moderation', 'Reality Defender')

    • Optionalverified_time?: string

      When the verification was performed (ISO 8601)

      date-time

    • result: "authentic" | "ai_generated" | "ai_modified" | "inconclusive"

      Verification outcome

    • Optionalconfidence?: number

      Confidence score of the verification result (0.0 to 1.0)

      0

      1

    • Optionaldetails_url?: string

      URL to the full verification report

    ext?: ExtensionObject