C2PA regions of interest: mark only the AI segment of a video
The C2PA implementation guide covers regions of interest for audio and video segments, and the 2.3 spec allows time ranges. What that enables for mixed footage.

Yes, C2PA can point at a part of a video instead of the whole file. The implementation guide lists Regions of Interest for audio and video segments as one of its five areas, and the 2.3 specification page says regions can use RFC 3339 time ranges. That suits a cut with real footage plus a few generated shots.
Why it matters for mixed cuts
Most real edits are not all-AI. A product demo may be camera footage with two generated B-roll shots. A single label for the whole file overstates or understates. A region lets a claim apply to the seconds where it is true.
| Item | Source says |
|---|---|
| Applies to | Audio and video segments |
| Time format | RFC 3339 time ranges (2.3 spec) |
| Listed in | C2PA implementation guide, five areas |
Keep the timeline you need
To mark a region later you need to know where each generated shot sits. Sume Timeline 1.0 takes video[] slots with a declared start and duration, and the docs say declared starts are authoritative. Keep that timeline JSON, and you can list which seconds were generated.
Timeline 1.0 is $0.10 per ceil(output minute). A 95-second render bills 2 minutes, so $0.20. See Timeline 1.0.
Caveat
The Sume docs do not say Sume writes a manifest or regions. This is a record-keeping method on your side, and any signer you use must support the fields.
Sources
Related posts
More in Developers
- C2PA soft binding and watermarks: what a trim or re-encode does
The C2PA 2.3 spec defines soft binding for invisible watermarks. Sume's trim has exact re-encode and keyframe copy modes; here is what to verify after each.
- Can polling Sume job status hit the rate limit? Read budget math
Reads and writes have separate Sume budgets. Worked numbers for polling every accepted job per plan, plus a delay function that reads ratelimit headers.
- Cancel queued Sume jobs on SIGTERM during a deploy
On shutdown, cancel jobs you no longer need before they start and leave started ones alone. A 21-line Node handler using POST /v1/jobs/{id}/cancel.
- Check a video request against /v1/videos/models before you submit
Duration, resolution, size and seed errors cost a round trip. A short Python validator reads the model catalog and refuses a bad request locally first.
Written by Sume