Synthetic-media provenance
There are two places in Orbit where AI fabricates a human-sounding or human-looking asset: cloned voice and AI-avatar video. Every clip those surfaces produce carries a machine-readable content credential — a signed token any reviewer (a recipient, your compliance team, or a regulator) can check to confirm the clip is AI-generated. This page explains the model; request shapes live in the API reference pages linked below.What the credential is for
A consent-registered voice clone in Voice → Voice Clones only gates the clone’s creation. Once that clone synthesizes speech, or one of your avatar personas renders a video clip, the output bytes look no different from a human recording. The credential closes that gap: it proves, in a form a machine can check, “this clip was AI-generated by tenant T’s clone or persona at a stated time.” The motivation is regulatory direction — EU AI Act Article 50 (AI-generated content marking, binding 2026-08-02) and the FCC synthetic-voice rules — but the control belongs to you: the credential is minted on every eligible render whether or not your specific traffic requires it. The regulatory posture and your tenant-level opt-ins are in the EU AI Act page; this page is about how the marking mechanism works.The two sibling covers
Two modality services mint credentials, built on one shared, stateless signing pipeline:- Voice — a ready clone id + synthetic speech. Every watermark request returns a token pairing the machine-readable manifest with your resolved spoken disclaimer (tenant-configured intro text or audio URL, falling back to Orbit’s default “This message uses an AI-generated voice.”).
- Video — an avatar persona + async render job. When your render runtime reports
completedon avavr_render job, the transition handler mints the credential from the clip digest.
<version>.<manifest>.<signature> token signed with a purpose-separated HMAC-SHA256 subkey derived from the API secret — a leaked voice-watermark key never degrades the video key, JWT signing, or the API secret itself. Each modality owns its own manifest shape and key domain (voice tokens start ov1, video ovv1); the pipeline is shared. Verification is stateless — the token IS the record, so the credential capability shipped with zero schema migration.
What gets bound to the clip
The manifest inside each token binds three things:- The exact clip bytes — a lower-hex SHA-256 digest (
audio_sha256for voice,video_sha256for video). Any edit to the clip after marking — re-encode, splice, partial lift — breaks the bind and verification reports a mismatch instead of passing. - The generator identity — the clone id (
vclone_…) for voice, the persona id and render-job id for video. For video the manifest additionally binds the rendered script’s digest, so the credential cannot be restapled to a clip saying something else. - The declared disclosure — a human-readable statement plus flags noting the mark satisfies the EU AI Act Article 50 synthetic-media obligation. A regulator reading the credential alone sees the declared basis without calling Orbit.
Where the credential travels
For video, the credential is persisted on the render job alongside itsoutput_url, so when you attach that URL to a campaign send or a 1:1 MMS/WhatsApp message, the provenance travels with the clip. GET /api/v1/video/avatar-video-renders/:id returns the full job record, including the minted token.
For voice, the credential is detached by design: you get the token back when you mark a clip, and you keep it with the clip wherever it goes. When you hand Orbit the actual audio bytes (not just a digest), the voice surface additionally embeds a C2PA content credential directly inside a WAV clip, so a C2PA-aware consumer can validate provenance without calling Orbit at all.
Providers differ
The detached token is provider-agnostic — the digest bind works regardless of which synthesis or render provider produced the clip. Other marks differ:- In-audio watermarking some TTS providers (ElevenLabs, Resemble) embed inside their output is a per-provider capability. Coverage varies by the configured voice provider, so treat it as an extra signal rather than a guaranteed layer.
- C2PA embedding in WAV bytes is only possible when you pass the clip itself to the watermark endpoint — the digest-only path has no bytes to embed into.
Verify in your hands
Verification is a stateless POST — no client, no persistence: Video:video_base64 or a pre-computed video_sha256 — and verify bind-checks it: a genuine token stapled onto different clip bytes reports video_mismatch instead of ok.
Voice: the same idea on POST /api/v1/voice/clones/:id/watermark (mint) — read back the token and keep it with the clip. The render surface’s GET /api/v1/video/avatar-video-renders/:id returns the minted token verbatim so you can hand it to a reviewer.
See also
- EU AI Act — Article 50 transparency — the regulatory opt-ins, dossier export, and known limitations.
- AI video avatar agents — the render workflow that these credentials mark.
- Create a voice clone — the consent and enrollment steps before a clone can be watermarked.
- Video API reference — the render + verify request shapes.