Detecting Lumen5 content
Lumen5 marks the videos it renders in three ways so that anyone can check whether content was made with Lumen5. This page describes each mark and how to detect it in your own tools. For a single file, use the free check page.
1. Content Credentials (C2PA)
Rendered videos carry a signed C2PA manifest. Any C2PA validator can read it. The manifest records the
digital source type, the AI-generated parts as a com.lumen5.ai-content assertion, the
credentials of included files as ingredients, and a c2pa.soft-binding assertion with algorithm
com.lumen5.videoseal.1 whose value is the base64 of the video's 8-byte watermark id.
2. Invisible video watermark
Frames carry a 256-bit Meta Video Seal watermark
(checkpoint videoseal_y_256b_img). The message is the ASCII code Lumen5AI
(64 bits) followed by three copies of the watermark id, a signed 64-bit big-endian integer.
- Detector:
https://storage.googleapis.com/lumen5-built-js/models/videoseal-1.0-detector-fp16.onnx(ONNX with float16 weights; input float32 frames shaped [frames, 3, 256, 256] with RGB values in [0, 1]; output 257 logits per frame, a detection logit followed by 256 bit logits). - Average the bit logits over the sampled frames; a bit is 1 when its mean logit is positive.
- The video carries a Lumen5 watermark when at most 8 of the first 64 bits differ from
Lumen5AI. Each bit of the watermark id is the majority of its three copies.
3. Invisible audio watermark
The soundtrack carries a 16-bit Meta AudioSeal
watermark with the fixed code 0x4c35. It identifies Lumen5, not the individual video.
- Detector:
https://storage.googleapis.com/lumen5-built-js/models/audioseal-0.2-detector-16bits.onnx(ONNX, input 10-second windows of 16 kHz mono audio shaped [1, 1, 160000], outputsdetection[1, 2, 160000] andmessage[1, 16] bit probabilities). - The audio carries Lumen5's watermark when at least half of its samples have a watermark probability above 0.5 and the decoded code is
0x4c35.
Look up a watermark id
POST /api/v1/ai-content/lookup/ with {"watermark_id": "<signed 64-bit integer as a string>"}
returns found, rendered_at and digital_source_type. It never reveals the video or its owner.
Signed detection results
POST /api/v1/ai-content/report/ returns a detection result signed as a JWS (ES256). Verify it with the
public key at /api/v1/ai-content/report-key/. Lumen5 signs what it checked
itself under server_lookup, including whether the submitted file is the unaltered original render;
what the caller reports about the file is kept under client_asserted.
Free and unlimited for regulators, media and researchers
The API is free. Requests from one network are rate limited. Market surveillance authorities and other
regulators, law enforcement, media, fact-checkers, trusted flaggers, researchers, educational institutions and
civil society organisations can ask [email protected] for an API key with the
ai-content-check:unlimited scope, which lifts the limit. Send it as Authorization: Bearer <key>.