Planned design guide. This workflow requires file uploads and webhooks, which are not served
by the current Talent API sandbox. The examples below describe the target protocol and cannot
yet be run end to end.
Start with the runnable quickstart and sandbox support matrix.
status: "checking", then handle the decision by webhook. The examples use the fictional talent
Maya Okafor, whose fixture license covers video for social media and the web in the US and Canada.
Uploads and webhook delivery must be implemented before this full workflow can run.
1
Export your test key
2
Create a webhook endpoint
The decision on a video arrives as an event, so register an HTTPS endpoint first. To receive
test events on your machine, point it at a tunnel to The response carries the signing secret once. Store it as
localhost.REFLECTIONS_WEBHOOK_SECRET.3
Check the use
The check works as it does for images, with Generate the video with the
modality: "video".generation_instructions added to the model’s input, and send the
provider authorization.token. Start the job before authorization.expires_at.4
Create the file and get an upload URL
Multipart uploads take files up to 100 MB. For longer videos, create the file with JSON: its
size, its SHA-256 and its media type. Files up to 5 GB are accepted this way.
upload_url expires in 1 hour.5
Upload the bytes
PUT the file to upload_url, then read the file until its status is ready.expired, the upload did not complete in time. Create a new file.6
Submit the output
Name the check and the candidate, and give the video’s duration. In test mode, put
The generation has no decision yet:Keep the video private while
rfl_test_async in transcript to run the asynchronous path on a fixed timer: the decision
arrives 10 seconds later.status is checking. In live mode the p95 target for a video
decision is half its duration plus 5 seconds: 20 seconds for this one.7
Receive the decision
Verify the signature on every delivery before you act on it. Deliveries follow the
Standard Webhooks scheme.About 10 seconds after you submitted, the endpoint receives Return a
generation.allowed:2xx within 10 seconds and do slow work afterwards. Deliveries can repeat and can
arrive out of order: skip an id you have handled, and ignore an event whose sequence is
lower than one you processed for the same generation.8
Embed the receipt and deliver
Add
c2pa to the video’s C2PA manifest as an assertion, with the standard c2pa.actions
entry, sign it as your platform, and show the disclosure text. See the
manifest definition; Embedding provenance
covers MP4.If you missed the event, read the generation with
GET /v1/generations/{generation_id}, or
resend it with POST /v1/events/{event_id}/resend.What can go wrong
If the license holds outputs for release, the generation returns
held instead of checking,
and the decision arrives as generation.released or generation.denied. The
image quickstart runs that path with Jonah Reyes.
Next
Image and video platforms
The check and generation calls in a production pipeline.
Webhooks
Signing, retries, ordering and replay.
Submitting outputs
Uploads, candidates, digests and findings.
Embedding provenance
Writing the C2PA assertion and the disclosure label.