C2PA actions describe what a claim generator says happened to an asset at a particular stage of its provenance. An action can record that content was created, opened, cropped, edited, placed into a composition, transcoded, translated, watermarked, published, or affected in another defined way. Actions are collected inside an actions assertion, which becomes part of the signed C2PA manifest.[1]
Actions are not a perfect event log. Their order is not generally guaranteed to be chronological, their optional time values are not trusted timestamps, and a signed action does not prove that the described operation really occurred exactly as stated. What C2PA does provide is a tamper-evident record of the actions that the claim generator chose to assert, together with context such as software, ingredients, regions, and digital source types.
This guide focuses on the current c2pa.actions.v2 assertion in C2PA 2.4. For the broader structure around actions, see C2PA Assertions Explained and C2PA Manifests Explained.
In brief |
|---|
Actions are the verbs of provenance
An assertion is a structured statement. An action is one kind of statement inside the actions assertion: it names an operation and may add context about when it occurred, which software or hardware performed it, which part of the asset changed, which ingredients were involved, and why the operation was performed.
The distinction matters because an action does not stand alone. A c2pa.placed action should point to the ingredient assertions for the components that were placed. A c2pa.watermarked.bound action should be associated with the soft-binding assertion describing the watermark. A c2pa.redacted action points to the assertion removed from earlier provenance. The action names what happened; other assertions carry the structured evidence or related objects.
Each C2PA manifest represents one signed provenance statement from one claim generator at one stage of an asset workflow. Traversing actions across ingredient manifests can reveal a broader history, but it does not turn the collection into a guaranteed, complete, or centrally ordered ledger.
A standard manifest must contain an actions assertion
C2PA 2.4 requires at least one actions assertion in the created_assertions array of every standard manifest. This is a current-manifest requirement: the claim generator is responsible for stating how the new asset representation began.
The first action depends on the origin of that representation:
- Created from a blank or newly generated state. The first action must be
c2pa.created. It must include an appropriatedigitalSourceTypedescribing the nature of the asset at inception, such as digital capture, trained algorithmic media, or an empty canvas. - Derived by opening an existing parent asset. The first action must be
c2pa.opened. It must reference exactly one current-manifest ingredient whose relationship isparentOf.
Across the full set of actions assertions in the manifest, there may be no more than one action whose type is either c2pa.created or c2pa.opened. The rule keeps the manifest from presenting two incompatible starting points for the same asset representation. Update manifests are governed by a different, restricted rule set discussed later.[1]
How the asset representation began | Required first action | Required relationship or context |
|---|---|---|
New camera capture |
| A digital source type describing digital capture. |
Blank canvas, new document, or zero-length timeline |
| The C2PA empty digital source type when there is no initial digital content. |
Generative model output |
| An appropriate trained-algorithmic digital source type; input ingredients may also be referenced. |
Existing asset opened for editing |
| Exactly one referenced ingredient with relationship parentOf. |
The current assertion is c2pa.actions.v2
C2PA defines two actions-assertion labels. The original c2pa.actions form is deprecated for new writing, while c2pa.actions.v2 is the current model. Validators and readers still need to understand the legacy form because older Content Credentials remain in circulation.[2]
Capability | Legacy c2pa.actions | Current c2pa.actions.v2 |
|---|---|---|
Action definitions | Every action is fully specified in the actions array. | An action can be fully specified or inherit common values from a template. |
Software agent | A simple text value. | A structured generator-info object, or an index into a shared softwareAgents list. |
Changed regions | A simple changed text field. | A changes array using structured regions of interest. |
Related actions | Not available in the current structured form. | Nested related actions can describe operations that belong together. |
Completeness signal | No allActionsIncluded field. | allActionsIncluded can state whether the claim generator says every action was recorded. |
Recommended for new manifests | No. Read for compatibility only. | Yes. |
Version 2 is not merely a different serialization. It makes repeated context more compact, supports multiple software agents, allows action-specific regions, provides clearer completeness semantics, and gives actions a general way to point to related non-ingredient assertions.
Anatomy of a v2 action
A v2 actions assertion contains an actions array and may also contain templates, a shared software-agent list, assertion metadata, and the allActionsIncluded flag. Each action item begins with an action name and may add the fields below.[2]
Field | Purpose | Important caution |
|---|---|---|
| The standardized or entity-specific name of the operation. | Choose the most accurate supported term; custom names must use an entity-specific namespace. |
| Plain-language detail about the operation, especially for a custom or generalized action. | Do not place secrets or unnecessary personal data here. |
| Date and time the operation is asserted to have occurred. | This is a non-trusted time value, not an RFC 3161 trusted timestamp. |
| Structured information about the software or hardware that performed the action. | The agent is not automatically the signer, claim generator, or human creator. |
| Index into a shared softwareAgents array. | Use either softwareAgent or softwareAgentIndex for an action, not both. |
| Classifies the nature of the source or result, using IPTC or C2PA terms. | It adds source semantics; it does not replace the action name or an AI disclosure. |
| One or more regions of interest affected by the action. | Omission means the changed region is undefined, not that the entire asset was unchanged. |
| A set of closely related actions, usually occurring together. | Related actions inherit the primary action values and should contain only their differences. |
| The rationale for an action, currently defined mainly for redaction. | A c2pa.redacted action requires a reason; custom reasons must be namespaced. |
| Action-specific data, ingredient references, repeated-instance information, language codes, and namespaced extensions. | Treat caller-supplied parameters as signed claims requiring policy validation. |
Standard action vocabulary
C2PA supplies standard action names so different tools can express common operations consistently. The vocabulary is intentionally broad: it supports images, video, audio, documents, structured text, and fonts. A claim generator should prefer a specific standard action when one accurately describes the event, use c2pa.edited only when a more precise term is unavailable, and use a custom namespaced action when the operation is genuinely product- or domain-specific.[3]
Creation, composition, and ingredient actions
Action | Meaning and typical use |
|---|---|
| The asset representation was first created. Pair it with an appropriate digital source type. |
| An existing parent asset was opened for editing. It references one parentOf ingredient. |
| One or more component ingredients were added or placed into the asset. |
| A previously recorded component ingredient was removed. |
| Previously placed audio ingredients, such as stems or tracks, were combined and optionally transformed. |
| A recorded audio asset was rearranged, sampled, looped, time-stretched, reinterpreted, or combined into a remix, mashup, or medley. |
Editorial and content-changing actions
Action | Meaning and typical use |
|---|---|
| Visible text was inserted, such as a caption, title, label, or text layer. |
| Tone, saturation, color balance, or similar color characteristics changed. |
| Playback speed of audio or video was increased or reduced. |
| Areas of the digital content were cropped out. |
| Content was deleted; for temporal media this can describe removed interior ranges. |
| Drawing tools, brushes, or erasers changed the content. |
| Audio was replaced or modified, commonly on one or more tracks of a composite asset. |
| A generalized editorial transformation occurred when no more-specific action is suitable. |
| A filter, style, or appearance-changing effect was applied. |
| The direction or position of content changed, such as rotation or orientation correction. |
| Content dimensions, file size, or both changed. |
| The language of content changed; parameters carry source and target BCP 47 language codes. |
| A temporal range was removed from the beginning or end of audio or video. |
Non-editorial, delivery, and governance actions
Action | Meaning and typical use |
|---|---|
| The file format changed. Prefer repackaged or transcoded when one of those is more precise. |
| A non-editorial enhancement such as noise reduction, sharpening, or multi-band compression was applied. |
| Asset metadata or a metadata assertion changed without changing the digital content. |
| An audio asset was modified for quality control before delivery or distribution. |
| The asset was released to a wider audience. |
| An assertion in an ingredient manifest was redacted; the action includes the target and reason. |
| A container or packaging format changed without transcoding the content. |
| Dimensions changed while the original aspect ratio was maintained; treated as non-editorial. |
| Encoding changed, including bitrate adjustment, resolution scaling, or codec conversion; treated as non-editorial. |
| Something happened, but the claim generator cannot identify the operation more specifically. |
| An invisible watermark was inserted to create a C2PA soft binding. |
| An invisible watermark was inserted for another purpose, without creating a C2PA soft binding. |
The older c2pa.color_adjustments, c2pa.watermarked, c2pa.copied, c2pa.formatted, c2pa.version_updated, c2pa.printed, c2pa.managed, c2pa.produced, and c2pa.saved values are deprecated. New claim generators should not write them, although validators may encounter them in older manifests.
Font-specific actions
C2PA also defines a separate font. namespace for font assets. These actions describe subsetting, variable-font instantiation, hinting, character changes, feature changes, merging, and generalized font editing.
Action | Meaning |
|---|---|
| Characters or character sets were added. |
| Characters or character sets were deleted. |
| Characters or character sets were both added and deleted. |
| A font was instantiated, wholly or partly, from a variable font. |
| A font edit occurred that no more-specific font action describes. |
| Hinting was applied. |
| The font was combined from antecedent fonts. |
| An OpenType feature was added, altered, or removed. |
| The font was reduced to support a selected subgroup of characters. |
Custom actions
The standard vocabulary cannot anticipate every specialized process. A product may define a custom action using an entity-specific name such as com.example.superResolution or ai.unfurled.pipeline-normalization. A custom action should have stable semantics, a clear description, documented parameters, and a namespace controlled by the organization defining it. It should not reuse the c2pa. namespace or invent a near-duplicate of an existing standard action.
Practical rule |
|---|
Actions and ingredients must agree
Actions describe operations; ingredient assertions identify the assets or inputs involved. C2PA validates several important relationships between the two. A claim generator cannot simply write "opened" or "placed" without linking that statement to the appropriate ingredient assertion.[4]
Action | Required or expected ingredient relationship | Interpretation |
|---|---|---|
| Exactly one current-manifest ingredient with relationship parentOf. | The output was derived by opening that parent asset for editing. |
| One or more current-manifest ingredients with relationship componentOf. | Those ingredients were added as components of the current asset. |
| One or more componentOf ingredient references located in another manifest. | Components previously present in the recorded provenance were removed. |
| If ingredient references are supplied, each must resolve to a parentOf ingredient in the current manifest. | The current representation derives from the referenced parent without a claimed editorial change. |
| May reference input ingredients, including prompts, source media, datasets, or models, when the workflow chooses to record them. | The asset began in this claim generator, but other inputs may still have contributed to its production. |
The ingredients field in an action contains hashed references to ingredient assertions. It does not point directly to arbitrary filenames or URLs, and it does not replace the ingredient assertion itself. The ingredient carries the relationship, identifiers, available prior manifests, validation results, and other provenance about the contributing asset.
When an ingredient arrives without an embedded manifest, the claim generator may perform a soft-binding lookup. If a candidate manifest is recovered, the ingredient records that soft binding was used and preserves the resulting validation status. Recovery does not convert a perceptual match into an exact hard-binding match.
Digital source types add origin semantics
An action name and a digital source type answer different questions. The action says what operation occurred. The digitalSourceType says what kind of source or resulting content the operation represents. The value comes from the IPTC Digital Source Type vocabulary or from a small number of C2PA-specific terms.
Example | Action | Digital source type contribution |
|---|---|---|
Camera creates a photograph |
| Indicates a digital capture rather than a blank canvas or algorithmic generation. |
Generative model creates an image |
| Indicates trained algorithmic media; ingredients and an AI disclosure can add further detail. |
Designer starts a blank composition |
| The C2PA empty value indicates that the document began without digital content. |
Editor applies human changes |
| A human-edit source type may describe the nature of the transformation when appropriate. |
For AI workflows, source type is only one layer. Actions can describe creation or editing, ingredients can identify inputs, and the C2PA 2.4 AI Disclosure assertion can carry structured model and human-oversight information. See C2PA for AI-Generated Content for the full model.
Completeness, order, and time
Three details prevent actions from being misread as a definitive timeline.
The array is not generally chronological
Except for the required starting position of c2pa.created or c2pa.opened, C2PA does not define the order of actions in the array as execution order. A consumer should not infer that the second listed action happened after the first merely because of its array position.
The when field is not trusted time
The optional when field can help a workflow present or sort actions, but it is a simple asserted date and time. It is not equivalent to a trusted time-stamp issued by a Time Stamping Authority. It may be missing, inaccurate, copied from a device clock, or supplied by an untrusted caller.
allActionsIncluded is a signed completeness claim
When allActionsIncluded is true, the claim generator states that all actions performed on the asset are described in the actions assertion or assertions. When it is false, additional unrecorded actions may have occurred. An omitted value is interpreted like false.[2]
The field should be interpreted within the scope of that manifest and claim generator. It does not prove that earlier provenance was complete, that another application did not modify a source before ingestion, or that the signer is honest. It is useful because it makes the generator take an explicit position on completeness, not because completeness can be independently reconstructed from the flag alone.
Repeated and related actions
The multipleInstances parameter can indicate that the same action occurred multiple times with the same settings. If it is absent, the number of occurrences may be unknown. The related field can group actions that belong together, usually because they happened as part of one operation. A related action inherits the primary action context and supplies only the fields that differ.
Templates and multiple software agents
Action templates reduce repetition in a v2 assertion. A template can provide shared description, digital source type, software-agent information, or custom template parameters for every action with the same name. A special * template can apply shared values to all actions. Values written directly on an action override the corresponding template values.
Templates are a storage and presentation mechanism, not a separate provenance event. A consumer must merge the applicable template values with the action before presenting or evaluating it. If several templates apply, their values are combined in the order defined by the assertion, with action-level values taking final precedence.
When several tools or components perform actions, the assertion can define a shared softwareAgents array and let each action use a zero-based softwareAgentIndex. This avoids repeating the same structured agent record. It also makes an important distinction visible: a plug-in, model runtime, editing application, camera subsystem, and claim generator can all be different pieces of the workflow.
Identity caution |
|---|
Regions, related assertions, and supporting evidence
A v2 action can use the changes field to identify one or more regions of interest affected by the operation. This can describe a rectangle in an image, a time range in audio or video, a frame range, or another format-appropriate region. Region data helps a consumer understand scope, but it should not be presented as pixel-perfect proof unless the generating tool can support that precision.
The relatedAssertions parameter gives an action a general-purpose way to point to other assertions in the same manifest. It is designed for supporting information that is neither another action nor an ingredient. For example:
- A
c2pa.watermarked.boundaction can reference the soft-binding assertion describing the inserted watermark. - An editing action can reference an external-reference assertion containing a cryptographically hashed process report.
- An action can point to a domain-specific assertion carrying measurements or evidence related to that operation.
Entries in relatedAssertions cannot point to another actions assertion or an ingredient assertion. Ingredient relationships belong in the action parameters designed for ingredients.[6]
Actions in update manifests are deliberately restricted
An update manifest adds restricted provenance information without changing the content covered by the earlier standard manifest. Because no new hard binding is created, an update manifest cannot claim ordinary content-changing actions. C2PA 2.4 permits only four action types in an update manifest:[5]
c2pa.edited.metadata- metadata changed without changing the protected digital content.c2pa.opened- the asset was opened, including the special open-and-resave case defined by the specification.c2pa.published- the asset was released to a wider audience.c2pa.redacted- an assertion from an earlier manifest was redacted.
An update manifest containing any other action is malformed because actions such as cropping, filtering, transcoding, resizing, watermark insertion, or content editing imply that the protected representation changed. Those operations require a new standard manifest and new hard binding.
The update manifest still contains exactly one parentOf ingredient pointing to the manifest it extends. For more on the structural distinction, see C2PA Manifests Explained.
Actions can describe asset renditions
Distribution systems routinely create renditions: a high-resolution master becomes a WebP thumbnail, a video master becomes several bitrate variants, or a document becomes a preview. C2PA uses action combinations to let a signer express the intended nature of that transformation.
When an actions assertion contains only c2pa.published, c2pa.transcoded, and c2pa.repackaged, it signals that the signer is asserting no editorial changes occurred between the ingredient asset or assets and the current rendition. A single parentOf ingredient strengthens the interpretation that the current asset was derived directly from that parent.[5]
This remains a signer assertion, not an independent forensic guarantee. A validator can check the action structure, references, signatures, and current hard binding, but it cannot reconstruct every transformation performed outside the recorded pipeline.
Watermarking actions must distinguish bound and unbound uses
The deprecated c2pa.watermarked action was too ambiguous. C2PA 2.4 distinguishes two uses:
c2pa.watermarked.boundmeans the invisible watermark creates a C2PA soft binding used to help recover provenance. A corresponding soft-binding assertion is required and should be linked throughrelatedAssertions.c2pa.watermarked.unboundmeans a watermark was inserted for another purpose and does not create a C2PA soft binding.
The distinction prevents a consumer from assuming that every watermark can resolve a Content Credential. It also helps operators separate C2PA recovery identifiers from rights-management, audience-measurement, or platform-specific watermark systems. See C2PA vs. Watermarking and C2PA Hard Bindings and Soft Bindings.[6]
How validators evaluate actions
A validator does not decide whether an action was sensible or factually accurate. It checks whether the assertion is structurally allowed, cryptographically protected, and internally consistent with the references it contains. Important checks include:[4]
- The assertion has a non-empty actions array and uses a supported or syntactically valid entity-specific action name.
c2pa.createdorc2pa.openedappears only in the required first position and no more than once across the manifest.c2pa.opened,c2pa.placed, andc2pa.removedresolve to ingredient assertions with the required relationships.- A redaction action resolves to the assertion it claims was redacted and includes the required reason.
- Software-agent icons and related-assertion references resolve and validate correctly.
- A bound-watermark action has the required soft-binding assertion.
- The action set is permitted for the manifest type, especially for update manifests.
- The actions assertion hash matches the value recorded in the signed claim.
The actions assertion itself cannot be redacted from an earlier manifest. This is a strong reason to keep sensitive details out of free-text descriptions and custom parameters. If a workflow needs removable supporting data, it can place that data in a separate assertion and link it through relatedAssertions when appropriate.
A consumer should preserve structured validation outcomes rather than collapsing all failures into a generic "invalid action" result. Ingredient mismatch, malformed references, disallowed update actions, unresolved related assertions, and claim-hash failures have different operational and security implications. For the complete validation model, see How C2PA Verification Works.
A practical workflow: a published newsroom graphic
Consider a newsroom design tool that creates a social graphic from a blank canvas, a camera photograph, an AI-generated illustration, a publisher logo, and text. The workflow can represent the asset in several stages.
- Create the composition. The tool starts from an empty canvas, so the first action is
c2pa.createdwith the C2PA empty digital source type. - Place the source components. The photograph, illustration, and logo become
componentOfingredients. Separatec2pa.placedactions reference the corresponding ingredient assertions. - Describe editorial operations. The tool records
c2pa.croppedfor the photograph,c2pa.adjustedColorfor tone changes, andc2pa.addedTextfor the headline and caption. Region data can identify which area each action affected. - Identify AI involvement. The illustration ingredient carries its own provenance. Its generating manifest may contain
c2pa.createdwith a trained-algorithmic source type and an AI Disclosure assertion. - Insert a durable marker. If the publisher inserts an invisible watermark for C2PA recovery, the standard manifest records
c2pa.watermarked.boundand links the corresponding soft-binding assertion. - Sign the final representation. The resulting standard manifest contains the actions assertion, ingredients, hard binding, claim, and claim signature. The pipeline validates the exact published file before release.
- Create a delivery rendition. A downstream service that produces a lower-resolution WebP issues a new standard manifest beginning with
c2pa.openedfor the parent asset and records the relevant resizing and transcoding actions. - Record publication without changing content. A publisher can issue an update manifest containing
c2pa.publishedif the protected content remains unchanged.
The resulting provenance does not need one monolithic action log. Each participating claim generator signs the actions it is responsible for, while ingredient relationships connect the separately signed stages into a graph.
Implementation recommendations
- Write v2, read both versions. Generate
c2pa.actions.v2for new credentials and preserve compatibility with legacyc2pa.actionswhen reading. - Map product events through a versioned policy. Do not let individual teams invent action names independently. Maintain a tested mapping from internal operations to standard or approved custom actions.
- Capture facts at operation time, normalize before signing. Recording the event near its source improves accuracy, while a final policy step removes unsupported, redundant, or sensitive fields before the claim is signed.
- Treat ingredient references as required data relationships. The action and ingredient assertion should be constructed together, not patched independently after the fact.
- Use allActionsIncluded conservatively. Set it to true only when the claim generator can account for the complete operation set in its scope.
- Keep when values informational. Use UTC where possible, preserve the source of the clock value, and do not present it as trusted time.
- Separate software, signer, and human identity. A softwareAgent record should identify the performing software or hardware, not stand in for a person or organization.
- Keep custom actions stable and documented. Use a controlled namespace, version semantics carefully, and publish a machine- and human-readable definition for consumers.
- Minimize irreversible details. Because actions assertions cannot be redacted, avoid secrets, unnecessary personal data, raw prompts, and internal identifiers in descriptions or parameters.
- Validate the finished output. The signing pipeline should reopen the released asset and check action structure, references, signature integrity, hard binding, and policy requirements.
A production implementation should treat actions as policy-controlled claims, not as a free-form analytics stream. The surrounding architecture is covered in the C2PA Implementation Guide.[7]
Common misunderstandings
Misunderstanding | More accurate interpretation |
|---|---|
The action array is a chronological edit history. | Array order is generally unspecified. Only the required starting action has a defined position; optional when values are untrusted. |
A signed action proves the operation really occurred. | It proves that the signed claim generator asserted the action and that the protected assertion has not changed. |
c2pa.created means no inputs contributed to the asset. | A newly created output can still reference prompts, models, datasets, source media, or other input ingredients. |
c2pa.opened is just an application-open event. | In the required starting position it identifies an existing parent asset used to create the current representation. |
softwareAgent identifies the human editor. | It identifies software or hardware. Human and organizational identity are separate. |
allActionsIncluded=true proves complete provenance. | It is the claim generator's signed completeness statement for its scope, not an independently reconstructed history. |
A digitalSourceType is an AI detector result. | It is asserted provenance vocabulary describing source semantics; it does not detect undisclosed AI involvement. |
Any action can be added through an update manifest. | Only edited.metadata, opened, published, and redacted are permitted when protected content is unchanged. |
A watermark action always means the watermark can recover C2PA provenance. | Only watermarked.bound denotes a C2PA soft binding; watermarked.unbound explicitly does not. |
Custom action data can be removed later if it proves sensitive. | Actions assertions cannot be redacted. Sensitive supporting data should be modeled separately and minimized before signing. |
What actions can establish - and what they cannot
When the manifest validates, an actions assertion can provide cryptographic evidence that a signer issued a claim containing a particular set of action statements, software-agent details, ingredient references, source-type declarations, regions, reasons, and parameters. The claim protects the exact encoded assertion against undetected modification.
Actions do not independently prove that every operation occurred, that the action list is complete, that the described software was secure, that the signer was honest, that a person shown in the workflow approved the action, or that the content is factually true. Those conclusions depend on trust in the signer and claim generator, the security of the workflow, identity and attestation evidence, and the purpose for which the provenance is being interpreted.
For a deeper treatment of those limits, see What C2PA Proves - and What It Does Not Prove.
The simplest mental model
- Actions are verbs. They describe operations performed on an asset.
- Ingredients are the related nouns. They identify parents, components, and computational inputs involved in those operations.
- The first action explains how the representation began. A standard manifest starts with either created or opened.
- Context makes an action useful. Software agents, digital source types, regions, parameters, and related assertions explain the operation more precisely.
- Completeness and time remain claims. allActionsIncluded and when values should not be presented as independently verified facts.
- Manifest type constrains the vocabulary. Update manifests can record only restricted non-content-changing actions.
- Validation checks consistency, not truth. A validator verifies structure, references, hashes, signatures, and permitted combinations.
Used carefully, C2PA actions give digital content a portable and machine-readable account of how each signed representation was created or handled. Their value comes from precise vocabulary, accurate relationships, restrained claims, and interfaces that show both what was recorded and what remains unknown.
Sources and notes
[1] C2PA Technical Specification 2.4, “Actions” and “Mandatory presence of at least one actions assertion.” These sections define the purpose of actions, the current and legacy assertion labels, and the required created-or-opened starting rules for standard manifests.
[2] C2PA Technical Specification 2.4, “All actions included,” “Fields in the actions assertion,” and “Action Templates.” These sections define allActionsIncluded, time, software-agent, source-type, region, parameter, template, related-action, and shared-agent behavior.
[3] C2PA Technical Specification 2.4, “List of pre-defined actions,” “List of font actions,” and “Deprecated Actions.” See also the IPTC Digital Source Type vocabulary.
[4] C2PA Technical Specification 2.4, “c2pa.actions validation” and the ingredient-assertion requirements. These rules connect opened, placed, removed, transcoded, repackaged, and redacted actions to the correct assertions and validation status codes.
[5] C2PA Technical Specification 2.4, “Types of Manifests” and “Asset Renditions.” These sections restrict update-manifest actions and describe how published, transcoded, repackaged, and parent relationships can signal a non-editorial rendition.
[6] C2PA Technical Specification 2.4, “Related Assertions,” “Watermarking,” and “Soft Binding Lookup.” These sections distinguish bound and unbound watermarking, define action-to-assertion references, and describe provenance recovered through soft bindings.
[7] Content Authenticity Initiative open-source documentation, “Writing assertions and actions” and “Reading legacy manifest data.” These guides show how current SDKs expose action authoring while preserving read compatibility with v1 and v2 manifests.
[8] C2PA Implementation Guidance 2.4, “Assertions,” and C2PA Security Considerations 2.4, “Protection of personal information.” These documents provide non-normative guidance on assertion design, privacy, redaction, and secure workflow interpretation.