Skip to main content

Transparency API

The Transparency API tracks EU AI Act transparency notices for AI products and exposes a space-level compliance dashboard.

All endpoints below use the public API base path:

/api/v1.0

Scope And Access

Transparency routes are space-scoped and require access to the target space. Product-scoped routes also verify that the product belongs to the requested space.

The API manages notice records only. The Product Detail UI pairs these records with content templates from the Templates API using category transparency_notice, but templates are not required by the Transparency API.

Endpoint Overview

MethodEndpointDescription
GET/catalog/spaces/{space_slug}/products/{product_id}/transparency-noticesList transparency notices for one product.
PUT/catalog/spaces/{space_slug}/products/{product_id}/transparency-noticesReplace the product's full transparency notice set.
GET/catalog/spaces/{space_slug}/transparency-dashboardList transparency compliance summaries for AI products in the space.

Notice Types

notice_type must be one of:

ValueObligation area
ai_interactionDisclosure that users are interacting with an AI system.
generated_contentDisclosure or labeling for AI-generated content.
emotion_recognitionDisclosure for emotion-recognition systems.
biometric_categorizationDisclosure for biometric-categorization systems.
deepfakeDisclosure for deepfake or synthetic/manipulated content.

Notice Statuses

status must be one of:

ValueMeaning
implementedThe notice is in place.
plannedThe notice is applicable but not yet implemented.
not_applicableThe obligation does not apply to the product.
not_setNo implementation decision has been recorded.

The Product Detail UI defaults missing notice rows to not_applicable before saving so users can explicitly choose which obligations apply.

List Notices

GET /api/v1.0/catalog/spaces/{space_slug}/products/{product_id}/transparency-notices

Returns the persisted transparency notices for the product. The API does not synthesize missing notice types; clients that want a full five-notice form should merge the response with the known notice-type list.

[
{
"id": "24998731-2492-4e8b-8b52-f376d6c70412",
"product_id": "8da2bc25-6358-4be6-af9a-5e545f00517f",
"notice_type": "ai_interaction",
"status": "implemented",
"url": "https://example.com/customer-risk-ai-notice",
"notes": "Displayed before the user starts the assistant workflow.",
"created_at": "2026-06-29T08:30:00Z",
"updated_at": "2026-06-29T08:35:00Z"
}
]

Replace Notices

PUT /api/v1.0/catalog/spaces/{space_slug}/products/{product_id}/transparency-notices

The update endpoint replaces all existing transparency notices for the product with the notices list in the request. Include every notice row that should remain after the save.

{
"notices": [
{
"notice_type": "ai_interaction",
"status": "implemented",
"url": "https://example.com/customer-risk-ai-notice",
"notes": "Displayed before the user starts the assistant workflow."
},
{
"notice_type": "generated_content",
"status": "planned",
"url": null,
"notes": "Watermarking is planned for the next release."
},
{
"notice_type": "deepfake",
"status": "not_applicable",
"url": null,
"notes": "The product does not generate image, audio, or video content."
}
]
}

Duplicate notice_type values in one request return 400.

On success, the API returns the newly persisted notice rows and emits an audit event with before and after snapshots for resource type transparency_notice.

Transparency Dashboard

GET /api/v1.0/catalog/spaces/{space_slug}/transparency-dashboard

Returns one summary item per AI product in the space. The backend dashboard currently includes products whose product_type is ml_model, llm_agent, or agent.

[
{
"product_id": "8da2bc25-6358-4be6-af9a-5e545f00517f",
"product_name": "Customer Risk Assistant",
"product_type": "llm_agent",
"risk_classification": "limited",
"compliance_status": "incomplete",
"total_notices": 5,
"implemented_count": 2,
"applicable_count": 3
}
]

Dashboard status is derived from applicable notices:

StatusRule
not_setThe product has no applicable notices. This includes products with no persisted notices or only not_applicable notices.
compliantEvery applicable notice is implemented.
incompleteAt least one applicable notice is not implemented.

The frontend computes progress as:

implemented_count / applicable_count

When applicable_count is 0, the progress bar shows 100%, while the compliance status remains not_set.

Failure Cases

StatusCommon cause
400Duplicate notice types in a bulk update.
403Caller does not have access to the requested space.
404Space or product not found, or product does not belong to the space.
422Invalid UUID, notice type, status, or payload shape.