Skip to content

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.

Strip of film frames, drawn in terminal charactersStrip of film frames, drawn in terminal characters
CR · Content Credentials
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

Algorithmwatermark_algorithm
Meta PixelSeal for video (default)pixelseal-video
Meta VideoSeal 1.0videoseal

Neither is on the C2PA soft-binding list today, so the watermark is a server-side recovery signal for your account.

Formats and limits

FormatUpload limitWatermark
MP4256 MiBYes
QuickTime (MOV), AVI256 MiBNo: 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.