IPTC
How OWG labels how an asset came to be, using IPTC's Digital Source Type vocabulary and AI properties, so the record reads the same in C2PA and in image and video metadata.
Status:
- v0.93 (draft, for review): a typed
asset.iptcfield, checked by the validator against the task that produced the asset. - v0.92: the same object goes under
metadata.iptcas a convention set by this page.
What IPTC defines
The International Press Telecommunications Council maintains the metadata that image and video pipelines already carry. Two parts of it describe AI involvement:
- Digital Source Type is a controlled vocabulary for how media came to be: captured, edited by people, enhanced by an algorithm, created in software, or made or edited by generative AI. Each value is a URI under
http://cv.iptc.org/newscodes/digitalsourcetype/. See the vocabulary. - AI properties. Photo Metadata 2025.1 added four: AI System Used, AI System Version Used, AI Prompt Information and AI Prompt Writer Name. Video Metadata Hub 1.7 added AI properties for video.
C2PA carries the same Digital Source Type URIs on its actions and ingredients. An asset labeled in these terms reads the same in an OWG document, in its embedded IPTC metadata and in its content credential.
The hook
The labels sit on the asset, keyed by the IPTC property's XMP name. In v0.93:
{
"id": "cui_out_lighthouse_00001_png",
"role": "output", "type": "image", "produced_by": "generate",
"iptc": {
"DigitalSourceType": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
"AISystemUsed": "ComfyUI (sd_xl_base_1.0.safetensors)",
"AIPromptInformation": "a lighthouse on a sea cliff at golden hour, 35mm film, cinematic\nNegative: blurry, text, watermark",
"AIPromptWriterName": "Dana Ortiz"
}
}A v0.92 document carries the same object one level down, as metadata.iptc. Moving to v0.93 moves it up.
Key in iptc | IPTC property (XMP) | Holds |
|---|---|---|
DigitalSourceType | Iptc4xmpExt:DigitalSourceType | One of the current NewsCodes, as the full URI. The v0.93 schema enforces this |
AISystemUsed | Iptc4xmpExt:AISystemUsed | The AI engine or model used |
AISystemVersionUsed | Iptc4xmpExt:AISystemVersionUsed | Its version, if known |
AIPromptInformation | Iptc4xmpExt:AIPromptInformation | The prompts given to the model. IPTC puts positive and negative statements in this one field |
AIPromptWriterName | Iptc4xmpExt:AIPromptWriterName | Who wrote the prompt |
Unknown keys are rejected. Extensions use the x- prefix, as everywhere in OWG.
Three rules keep the record honest:
- Omit what you don't know. Leave a property out rather than writing an empty value or a guess.
- Record the prompt writer only when someone states it. A system cannot infer it. IPTC notes that the prompt writer is not thereby the creator.
- Name every generation that reached the asset. A composite of a local model's output and a hosted model's output names both systems and both prompts.
How it maps
The Digital Source Type follows from what the producing task did, as declared by its ai_role:
| The producing task | Digital Source Type |
|---|---|
generative, made new content | trainedAlgorithmicMedia |
generative, edited existing material (inpainting, outpainting, image-to-image below full strength) | compositeWithTrainedAlgorithmicMedia |
generative, an AI element placed into other material | compositeSynthetic |
assistive (denoise, up-res, model upscale) | algorithmicallyEnhanced |
none, captured | digitalCapture |
none, edited by people | humanEdits |
none, made in software | digitalCreation |
ai_role unset | No value until the task is reviewed |
IPTC retired three codes in 2024: minorHumanEdits (now humanEdits), and softwareImage and digitalArt (now digitalCreation). Map them forward when reading older assets. The v0.93 schema does not accept them in an OWG document.
The agreement check (v0.93)
OWG_IPTC_AI_MISMATCH reports an asset whose Digital Source Type contradicts the ai_role of the task that produced it:
| Producing task | Digital Source Type | Result |
|---|---|---|
generative | trainedAlgorithmicMedia, compositeWithTrainedAlgorithmicMedia or compositeSynthetic | Passes |
generative | Any other value | OWG_IPTC_AI_MISMATCH |
assistive or none | One of the three generative values | OWG_IPTC_AI_MISMATCH |
assistive or none | Any other value | Passes |
ai_role unset | Anything | Not checked here. Rule R1 reports the unset role |
The error points at the asset's label and names the task, because either one can be the side that is wrong.
With C2PA and disclosure
- With C2PA. A C2PA manifest records a Digital Source Type on its actions. When an asset carries both a verified credential and
iptc, the two should agree, and a disagreement is a finding. - With disclosure. The Digital Source Type is a machine-readable statement of AI involvement on the asset itself. A compliance rule pack can accept it as the marking rule R2 looks for. Whether it satisfies a particular regulation is for the pack and the jurisdiction to decide.
Reference workflow
comfyui-text-to-image.owg.json, from the ComfyUI binding. It is a v0.92 document, so its labels sit under metadata.iptc. All four are derived from the run.
Known gaps
- Agreement with C2PA is not checked. The validator compares
iptcwithai_role, but not with a C2PA credential'sai_generated. The C2PA page notes the same gap. - Labels cover whole assets only. IPTC can scope a type to part of an image (Image Region) or a segment of a video (Video Metadata Hub markers), but OWG has no region field, so a label covers the whole asset.
- The vocabulary is fixed in the schema. The v0.93 schema lists IPTC's codes as they stand. A code IPTC adds later needs a schema revision before an OWG document can carry it.
See also: ComfyUI, C2PA, Compliance, Assets and versioning, Changelog.