Skip to main content
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.
The target video workflow checks outputs asynchronously: submit the output, receive 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 localhost.
The response carries the signing secret once. Store it as REFLECTIONS_WEBHOOK_SECRET.
3

Check the use

The check works as it does for images, with modality: "video".
Generate the video with the 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.
If the status is 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 rfl_test_async in transcript to run the asynchronous path on a fixed timer: the decision arrives 10 seconds later.
The generation has no decision yet:
Keep the video private while 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 generation.allowed:
Return a 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.