Liccium Developer Portal
Plugins

FAIA Plugin

Preparing FAIA Metadata for Declarations

This guide explains how to structure and prepare FAIA metadata for use with the Liccium Declaration API, according to the FAIR AI Attribution (FAIA) framework developed by Leiden University, GO FAIR Foundation, and Liccium.

Overview

FAIA metadata enables creators, publishers, and AI system providers to make machine-readable declarations disclosing the role of AI in content creation. When integrated with Liccium declarations, these disclosures become cryptographically verifiable and globally discoverable through federated registries, bound to content-derived ISCC fingerprints rather than domains or embedded file metadata.

FAIA declarations support compliance with emerging transparency obligations – including Article 50(2) of the EU AI Act – and provide a durable provenance record that remains resolvable even when content is redistributed, converted, or stripped of embedded metadata.

Core Concepts

FAIA Flags

FAIA uses three primary flags that classify the role of AI in the creation of the published content. Flags are assigned to the observable output – the published asset – rather than to the full chain of decisions, tools, and labour that led to it.

  • hcc – Human-Created Content: Content created, generated and edited exclusively by humans or human-controlled instruments. While digital tools such as word processors, image editors, or audio software may be used, no generative AI systems are involved at any stage of the creative or editorial process.
  • aac – AI-Assisted Content: Content where a human or a human-controlled instrument remains the primary creator and AI systems contributed during the creation process to various degrees. This may include AI-generated input that humans or human-controlled instruments accept or reject, generation of content fragments that humans or human-controlled instruments integrate into larger works, or refinement steps performed under direct human supervision and editorial control.
  • aig – AI-Generated Content: Content generated predominantly or entirely by an AI system, where the AI serves as the main creative agent. Human input is limited to initiating prompts, selecting among AI-generated outputs, or making minor adjustments that do not materially alter structure, substance, or expressive intent. The resulting content is accepted largely as produced by the AI, with no substantive human editing or creatorship.

Activity Codes

Activity codes describe what AI actually did during the creation or modification process. They are optional but recommended whenever AI involvement goes beyond trivial or incidental use. Multiple activity codes may be associated with a single declaration when AI was used in different ways at different stages.

Activity codes are not applicable to hcc declarations. For aac declarations, the applicable codes are coCreation, contribution, enhancement, and refinement. For aig declarations, the applicable codes are transformation and analysis.

CodeApplicable flagDescription
coCreationaacAI and human jointly produced content through an interactive process; contributions are interwoven and not clearly separable.
contributionaacAI produced discrete elements – such as passages, images, or audio fragments – that the human integrated into a primarily human-authored work.
enhancementaacAI modified or extended existing human-created content to improve quality, clarity, richness, or structure.
refinementaacAI applied limited adjustments – such as grammar correction, formatting, or minor surface edits – without altering the structure or meaning of the content.
transformationaigAI converted existing content into another form or representation, such as translation, summarisation, or format conversion, while preserving semantic equivalence.
analysisaigAI interpreted existing content to derive structure, features, metadata, or insights, without modifying the source material.

System Attribution

System attribution records the technical identity of the AI system involved. This goes beyond stating that "AI was used" – different systems and releases may vary substantially in capabilities, training data, behaviour, and licensing conditions. System attribution supports regulatory disclosure, rights management, and reproducibility.

Two optional fields are available:

  • System: The system field identifies the AI system or engine used to generate or modify the content. This may include the name of the system or model family, ideally using the provider's official designation (for example ChatGPT, Google Gemini, Stable Diffusion 3).
  • Version: The version field specifies the particular version of the AI system used. Where known, this should follow the naming or numbering scheme provided by the system's operator (for example GPT-4o, v1.3.2, 2025-10-release).

Why Registry-Based?

The FAIA framework is designed for registry-based declarations: FAIA metadata is bound to ISCC fingerprints and published to federated registries. This means AI attribution remains accessible even when content is redistributed, metadata is stripped, or the original hosting location changes. Any party with access to a media file can regenerate its ISCC locally and query the registry – no coordination with the original publisher is required.

JSON Structure

Required Fields

Every FAIA declaration must include a valid ISCC fingerprint and a FAIA flag:

JSONCode
{ "iscc": "ISCC:EXAMPLE5QH7FTV7N5YVD5UMF4TUKFFGDGCOI4UDFKE4FNPW6C3L7J2Y", "faiaFlag": "hcc" }
  • iscc: ISCC fingerprint of the content, generated according to ISO 24138:2024.
  • faiaFlag: One of hcc, aac, or aig.

Optional Fields

JSONCode
{ "iscc": "ISCC:YOUR_CONTENT_FINGERPRINT", "faiaFlag": "aac", "activityCode": "enhancement", "systemAttribution": "ChatGPT", "systemVersion": "GPT-4o" }
  • activityCode: Describes how AI was involved. See the table above for applicable codes per flag.
  • systemAttribution: Name or identifier of the AI system used.
  • systemVersion: Version of the AI system used.

Preparing Your Metadata

Step 1: Generate an ISCC

Before creating FAIA metadata, generate a valid ISCC fingerprint for your content using any conformant ISCC generator. Open-source implementations are available as API and SDK.

Step 2: Choose a FAIA Flag

Select the flag that best describes the role AI played in the published content:

Option A: Human-created content

No generative AI was involved:

JSONCode
{ "iscc": "ISCC:YOUR_CONTENT_FINGERPRINT", "faiaFlag": "hcc" }
Option B: AI-assisted content

The human remained the primary creator; AI contributed in a defined way:

JSONCode
{ "iscc": "ISCC:YOUR_CONTENT_FINGERPRINT", "faiaFlag": "aac", "activityCode": "contribution", "systemAttribution": "ChatGPT", "systemVersion": "GPT-4o" }
Option C: AI-generated content

The content was produced predominantly or entirely by an AI system:

JSONCode
{ "iscc": "ISCC:YOUR_CONTENT_FINGERPRINT", "faiaFlag": "aig", "activityCode": "transformation", "systemAttribution": "Stable Diffusion 3", "systemVersion": "3.5" }

Embedding in Liccium Declarations

FAIA metadata is embedded as a plugin within the Liccium declaration metadata, alongside schema and context references for semantic validation:

JSONCode
{ "$schema": "https://w3id.org/liccium/schema/0.3.0.json", "@context": "https://w3id.org/liccium/context/0.3.0.json", "declarationMetadata": { "iscc": "ISCC:YOUR_CONTENT_FINGERPRINT", "plugins": { "faia": { "faiaFlag": "aac", "activityCode": "enhancement", "systemAttribution": "ChatGPT", "systemVersion": "GPT-4o" } } } }

The $schema field links to the Liccium JSON Schema for validation. The @context field allows semantic web agents to interpret the declaration.

FAIA declarations can coexist with other plugins in the same declaration. For example, a single declaration may include both FAIA metadata and TDMrep metadata, allowing AI attribution and TDM rights reservation to be declared together for the same content asset.

Publishing to the FAIA Registry

The plugin block above describes the content. To have the declaration published in the FAIA registry (faia.io), the declaration must additionally carry a signed FAIA registry object — the same pattern the TDM·AI registry uses with tdmaiRegistry:

JSONCode
{ "signature": "<JWT over publicMetadata>", "tsaSignature": { "tsr": "...", "tsq": "..." }, "faiaRegistrySignature": "<ES256 JWT whose payload is { \"faiaRegistry\": <the object below> }>", "faiaRegistryTsaSignature": { "tsr": "...", "tsq": "..." }, "declarationMetadata": { "publicMetadata": { "...": "..." }, "faiaRegistry": { "iscc": "ISCC:YOUR_CONTENT_FINGERPRINT", "declarerId": "did:key:...", "timestamp": 1787893238922, "faia": { "faiaFlag": "aac", "activityCode": "enhancement", "systemAttribution": "ChatGPT", "systemVersion": "GPT-4o" } } } }

Rules the FAIA registry enforces before publishing:

Rule
faiaRegistry is a JSON objecta JSON-serialized string is not accepted
iscc and declarerId equal those of publicMetadatathe record must describe this declaration
timestamp within 60 seconds of publicMetadata.timestampmilliseconds
faia.faiaFlag is hcc, aac or aigsystemVersion only together with systemAttribution
faiaRegistrySignature is an ES256 JWT with the declarer's JWK in its header, signed with the same key as signature, whose payload wraps the identical recordkey order does not matter
faiaRegistryTsaSignature is an RFC 3161 timestamp over that JWTproduced like the main tsaSignature

A declaration is a FAIA registry record only when faiaRegistry is present. A faia block inside liccium_plugins or inside tdmaiRegistry does not publish it to the FAIA registry. Both objects may be sent together; the declaration is then a record of the TDM·AI and the FAIA registry. Details and code: Signing Registry Objects.

Validation Checklist

Before submitting your declaration:

  • ISCC fingerprint is valid and matches your content
  • faiaFlag value accurately reflects the role AI played in the published asset
  • If provided, activityCode is one of the defined enum values and is applicable to the chosen flag
  • If systemVersion is provided, systemAttribution is also provided
  • JSON structure is valid and conforms to the Liccium schema
  • Declaration is properly signed with valid credentials

Error Prevention

Common mistakes to avoid:

  • Missing ISCC: Every declaration must include a valid ISCC fingerprint.
  • Missing faiaFlag: This field is required. Declarations without a flag will be rejected.
  • Invalid enum value: faiaFlag must be exactly hcc, aac, or aig. activityCode, if provided, must use the exact enum strings defined in the schema – for example coCreation, not Co-Creation or co_creation.
  • Activity code on an hcc declaration: Activity codes are not applicable to human-created content and should be omitted.
  • Activity code and flag mismatch: The codes coCreation, contribution, enhancement, and refinement apply under aac. The codes transformation and analysis apply under aig. Using a code outside its applicable flag will result in a validation error.
  • Version without system: If systemVersion is provided, systemAttribution must also be present.
  • Missing signature: All declarations must be cryptographically signed before submission.

Next Steps

  1. Generate ISCC fingerprints for your content
  2. Select the appropriate FAIA flag
  3. Optionally add an activity code and system attribution
  4. Integrate the metadata into your Liccium declaration
  5. Add the signed faiaRegistry object (see above) and submit the declaration via the Declaration API
  6. Verify publication via the FAIA Registry Explorer at faia.io
Last modified on