Skip to Content
SpecificationEmbedding Modes

Embedding Modes (Specification)

APP metadata can be associated with generated content using three modes. Producers MUST implement at least one mode. Consumers SHOULD support all three.

Mode 1: Inline embedding

The _ai_provenance key is embedded at the top level of JSON output:

{ "title": "Example content", "_ai_provenance": { "app_version": "1.0.0", "ai_generated": true, "..." : "..." } }

Rules

  • The key MUST be _ai_provenance
  • MUST be at the top level of the JSON object
  • Systems SHOULD preserve _ai_provenance through transformations
  • MUST be excluded when computing content hashes

Mode 2: HTTP headers

X-APP-* response headers carry core provenance fields:

HeaderMaps toRequired
X-APP-Versionapp_versionREQUIRED
X-APP-AI-Generatedai_generatedREQUIRED
X-APP-Generation-Idgeneration_idREQUIRED
X-APP-Generator-Platformgenerator.platformREQUIRED
X-APP-Generator-Modelgenerator.modelREQUIRED
X-APP-Generated-Atgenerated_atREQUIRED
X-APP-Verification-URIverification_uriOPTIONAL
X-APP-Human-Reviewedreview.human_reviewedOPTIONAL
X-APP-Content-Hashcontent_hashOPTIONAL
X-APP-Parent-Generation-Idparent_generation_idOPTIONAL

Rules

  • Boolean values transmitted as "true" / "false" strings
  • For full metadata (inputs, extensions), combine with Mode 3

Mode 3: Linked metadata

A Link header or HTML <link> element points to a full APP metadata document:

Link: <https://verify.example.com/v1/metadata/a1b2c3d4-...>; rel="ai-provenance"; type="application/app+json"

Rules

  • rel MUST be "ai-provenance"
  • type SHOULD be "application/app+json"
  • Linked document MUST be served over HTTPS in production
  • SHOULD be publicly accessible without authentication
Last updated on