Invisible watermarks for generated video
Embed a watermark in the frames of MP4 video, then sign the result with C2PA Content Credentials. Add frame-level fingerprints to trace clips after re-encoding.
- MANIFEST
- Embedded · valid
- WATERMARK
- In the pixels or samples
- RESULT
- Declared origin readable
Recovery is a lead back to your signed record, not cryptographic proof. Picture: AI-generated illustration.
Video algorithms
| Algorithm | watermark_algorithm |
|---|---|
| Meta PixelSeal for video (default) | pixelseal-video |
| Meta VideoSeal 1.0 | videoseal |
Neither is on the C2PA soft-binding list today, so the watermark is a server-side recovery signal for your account.
Formats and limits
| Format | Upload limit | Watermark |
|---|---|---|
| MP4 | 256 MiB | Yes |
| QuickTime (MOV), AVI | 256 MiB | No: sign only |
Fingerprints for video
"fingerprint": true also records perceptual fingerprints. The default video fingerprint is TMK+PDQF, which matches re-encodes of a whole clip; vPDQ matches partial clips frame by frame. See content fingerprinting.
Billing
One watermark unit per started second of video, and the same for fingerprints. Units are graduated per month, from $0.015 down to $0.0025. There is no resolution band or frame-rate multiplier. Signing is billed once per file.
Watermark, fingerprint and sign a video
# After the upload of an MP4 file is complete:
curl -sS -X POST "$OP_API/v1/sign" \
-H "Authorization: Bearer $OP_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d "{\"asset_id\": \"$ASSET_ID\", \"watermark\": true, \"fingerprint\": true}"
# Sign + watermark + fingerprint. Poll GET /v1/jobs/{job_id} or use webhooks.Mark the video you generate
Create an API key and send an MP4 file with watermark set to true.

