The marker
created is UTC to the second. schema is versioned so a reader can tell which
shape it is looking at without guessing from the fields present.
Where it is written
Both live endpoints run the same session, so an interpreting session is marked
identically to a conversational one. They send the header and the event because
a browser cannot read handshake headers. The event arrives with the
session-start declarations, ahead of any audio, so a client knows before it
plays anything.
Inside the audio itself, the placement depends on the container. The key is
EESI_SYNTHETIC_AUDIO in every format that has one, so a single verifier finds
it everywhere:
nur-tts-v1 advertises mp3, wav and pcm, so those three are what you will
see in practice today. The flac and opus writers exist for a model that
advertises them. Check formats on the model catalog.Read it
From the response, before you have written anything to disk:encoder tag beside the marker is ffmpeg’s, and an API response carries
whatever its own encoder wrote there, or nothing. The tag to read is
EESI_SYNTHETIC_AUDIO; treat everything else in tags as the container’s own
business.
Both format_tags and stream_tags are worth asking for: mp3 and flac put the
comment on the format, opus puts it on the stream. A wav reports the marker as
comment, because that is what ICMT maps to.
Live sessions
eesi. so an OpenAI-compatible client can ignore it
without special-casing, and it declares the whole session rather than each
frame: everything that session sends downstream is model output. See
Realtime events.
The claim you must not make
So the marker supports exactly one claim: this audio came from the EESI API and is machine-generated. It cannot support its negation. Audio you find elsewhere with no marker is not thereby human, and audio with a marker you did not receive over your own connection proves nothing about who produced it. Use it to attest to the provenance of your own output. Do not build a detector out of it. Robust perceptual watermarking — the kind that survives re-encoding — is not shipped here.One gap, stated
A voice’s stored reference clip is served rather than generated, and it carries no marker.GET /v1/voices/{voice_id}/ref_audio returns the clip’s bytes;
GET /v1/voices/{voice_id}/sample returns { "url", "content_type" }, a
short-lived signed storage URL pointing at the same object. Neither the bytes
nor the object behind the URL is marked.
For a cloned voice that clip is the recording you uploaded of a real person,
which is not synthetic audio. For a built-in voice it is frozen design output
that is. If you redistribute a built-in voice’s reference clip, mark it
yourself. Anything generated on demand — synthesis, preview, a live session — is
marked.
Going further
Compliance
The disclosure duties this marker does not discharge.
Text to speech
The endpoint that produces most marked audio.