Delivery API
Request and render AI disclosure properties through Umbraco's media Delivery API.
Umbraco’s Media Delivery API is disabled by default, even when the Content Delivery API is enabled. Enable both the parent API and its media section in appsettings.json:
{
"Umbraco": {
"CMS": {
"DeliveryApi": {
"Enabled": true,
"Media": {
"Enabled": true
}
}
}
}
}
See the official Media Delivery API documentation for public-access and API-key options.
Request the five scalar properties with the media item:
GET /umbraco/delivery/api/v2/media/item/{mediaId}?fields=properties[aiDisclosure,aiGenerator,aiDisclosureSource,aiDisclosureReason,aiWatermark]
A relevant response fragment contains values like:
{
"properties": {
"aiDisclosure": "generated",
"aiGenerator": "gpt-image",
"aiDisclosureSource": "C2PA",
"aiDisclosureReason": "",
"aiWatermark": ""
}
}
Rendering rules
const disclosure = media.properties.aiDisclosure;
const label =
disclosure === "generated"
? "Fully AI-generated"
: disclosure === "modified"
? "Partially AI-modified"
: undefined;
- Render the fully generated / partially modified distinction from
aiDisclosure, never fromaiGeneratororaiDisclosureSource. - For the optional fallback,
aiWatermark === "OpenAI SynthID detected"supports a generic AI detected label when the source is notManual. It does not establish fully generated versus partially modified content. Keep manual editorial decisions authoritative. - Treat an empty or missing value as not determined, not proof that the image is non-AI.
- Decide through editorial policy whether undetermined images need manual review.
- Give a visible icon accompanying text or an accessible name.
The package does not expose stable frontend icon assets. Obtain the public labels from the European Commission’s official icon downloads rather than referencing hashed files from the backoffice bundle. Your public website remains in control of placement, wording, and accessibility.