Keep Digital Human
Version 1.0 — April 2026

KDH Provenance Record

An open specification for machine-readable creator provenance. Prove authorship, track versions, and enable AI attribution — without locking into any single platform.

Motivation

When an AI system generates a response, there's no way to trace which human-created works it drew on. Creators get no attribution, no record, and no compensation. The KDH Provenance Record is designed to fix this by creating a universal, machine-readable format for establishing authorship — one that any platform, AI system, or tool can read and respect.

The goals are simple:

  • Prove authorship — cryptographic proof that specific content existed at a specific time, tied to a specific creator
  • Enable discovery — standard ways for AI systems to find and check provenance records before or after using content
  • Stay portable — records work independently of any single registry. Export them, host them yourself, verify them anywhere

Record format

A KDH Provenance Record is a JSON object with a defined structure. The canonical MIME type is application/kdh-provenance+json.

Example provenance record
{
  "@context": "https://keepdigitalhuman.com/standard/v1",
  "@type": "ProvenanceRecord",
  "id": "urn:kdh:550e8400-e29b-41d4-a716-446655440000",
  "contentHash": {
    "algorithm": "SHA-256",
    "value": "a1b2c3d4e5f6..."
  },
  "creator": {
    "id": "urn:clerk:user_abc123",
    "name": "Andy Coughlan"
  },
  "title": "The future of digital provenance",
  "contentType": "text",
  "registeredAt": "2026-04-13T16:46:13.000Z",
  "registry": {
    "name": "Keep Digital Human",
    "url": "https://keepdigitalhuman.com",
    "verifyUrl": "https://keepdigitalhuman.com/verify/550e8400..."
  },
  "version": {
    "number": 2,
    "parentId": "urn:kdh:440e7300-d18a-31c3-b615-335544330000"
  },
  "metadata": {
    "wordCount": 1200,
    "fileName": null,
    "fileSize": null,
    "mimeType": null
  }
}

Field reference

FieldTypeDescription
@contextstringAlways https://keepdigitalhuman.com/standard/v1
@typestringAlways "ProvenanceRecord"
idURNUnique identifier (urn:kdh:{uuid})
contentHash.algorithmstringHash algorithm used (SHA-256)
contentHash.valuestringHex-encoded hash of the original content
creator.idURNCreator identifier
creator.namestringCreator display name (optional)
titlestringHuman-readable title
contentTypestringContent category (text, image, audio, video)
registeredAtISO 8601Timestamp of registration
registry.namestringName of the issuing registry
registry.urlURLRegistry home page
registry.verifyUrlURLDirect link to verification page
version.numberintegerVersion number (1 for originals)
version.parentIdURN|nullParent record ID for updated versions
metadataobjectAdditional content metadata

Discovery mechanisms

There are several ways for machines to discover provenance records associated with content:

1. Well-known endpoint

Sites hosting registered content can serve a manifest at /.well-known/kdh-provenance.json listing all provenance records for content on that domain:

/.well-known/kdh-provenance.json
{
  "version": 1,
  "registry": "https://keepdigitalhuman.com",
  "records": [
    {
      "hash": "a1b2c3d4...",
      "verifyUrl": "https://keepdigitalhuman.com/verify/uuid",
      "title": "My article"
    }
  ]
}

2. HTML meta tags

Individual pages can declare provenance using <meta> and <link> tags:

HTML head
<meta name="kdh:hash" content="a1b2c3d4..." />
<meta name="kdh:registered" content="2026-04-13T16:46:13.000Z" />
<link rel="provenance" href="https://keepdigitalhuman.com/verify/uuid" />

3. JSON-LD in page markup

Provenance can be embedded as structured data in any web page:

JSON-LD script tag
<script type="application/ld+json">
{
  "@context": "https://keepdigitalhuman.com/standard/v1",
  "@type": "ProvenanceRecord",
  "contentHash": { "algorithm": "SHA-256", "value": "a1b2c3d4..." },
  "registeredAt": "2026-04-13T16:46:13.000Z",
  "registry": {
    "verifyUrl": "https://keepdigitalhuman.com/verify/uuid"
  }
}
</script>

4. HTTP headers

Servers can include provenance information in HTTP response headers:

HTTP response headers
X-KDH-Hash: a1b2c3d4...
X-KDH-Verify: https://keepdigitalhuman.com/verify/uuid

Verification

Any party can verify a provenance record by computing the SHA-256 hash of the content and checking it against the registry:

Verification via API
GET https://keepdigitalhuman.com/api/v1/check/{hash}

Response:
{
  "hash": "a1b2c3d4...",
  "found": true,
  "matches": [
    {
      "id": "uuid",
      "title": "My article",
      "registeredAt": "2026-04-13T16:46:13.000Z",
      "verifyUrl": "https://keepdigitalhuman.com/verify/uuid"
    }
  ]
}

The check endpoint is public and requires no authentication, making it suitable for automated verification by AI systems, search engines, and other platforms.

For bulk verification, see For AI platforms below.

Embedding provenance

Creators can embed a provenance badge on their website that links to their verification certificate:

Embed code
<a href="https://keepdigitalhuman.com/verify/{id}"
   target="_blank" rel="noopener">
  <img
    src="https://keepdigitalhuman.com/badge/{id}"
    alt="Verified by Keep Digital Human"
    height="32" />
</a>

The badge is served as an SVG and dynamically shows the registration title and date. See the API documentation for badge customisation options.

For AI platforms

AI platforms can integrate with the KDH standard to check content provenance before or after training, and to attribute creators when their work influences outputs.

Bulk verification

Submit up to 100 hashes in a single request to check them all against the registry:

POST /api/v1/verify-bulk
{
  "hashes": [
    "a1b2c3d4...",
    "e5f6a7b8...",
    "c9d0e1f2..."
  ]
}

Response:
{
  "results": {
    "a1b2c3d4...": {
      "found": true,
      "matches": [{ "id": "uuid", "title": "...", "registeredAt": "..." }]
    },
    "e5f6a7b8...": { "found": false, "matches": [] },
    "c9d0e1f2...": { "found": true, "matches": [...] }
  },
  "checked": 3,
  "matched": 2
}

Provenance record endpoint

Retrieve the full machine-readable provenance record for any registration:

GET /api/v1/provenance/{id}
Response: application/kdh-provenance+json

{
  "@context": "https://keepdigitalhuman.com/standard/v1",
  "@type": "ProvenanceRecord",
  ...full record as defined above...
}

Recommended integration

  • Before training: hash content in the training set and bulk-check against the registry
  • At inference time: check /.well-known/kdh-provenance.json on source URLs
  • In outputs: when generating content that overlaps with a registered work, include an attribution link

Versioning

Provenance records support content versioning. When a creator updates their work and re-registers it, the new record includes a version.parentId linking to the previous version. This creates a verifiable chain of revisions.

AI platforms should check all versions in a chain when verifying content, as training data may contain any version.

Implementations

Keep Digital Human is the reference implementation of this standard.

  • REST API — register, check, and list provenance records
  • Chrome extension — register content from any web page
  • Embeddable badges — visual provenance for creator websites
  • Bulk verification — for AI platforms to check at scale

The standard is open. Anyone can build a compatible registry, and we encourage it. The more registries that exist, the harder it becomes for AI systems to ignore creator provenance.

Build with the standard

Read the API documentation to get started, or view the source on GitHub.