This is engineering guidance, not legal advice. Thresholds, exemptions and
enforcement differ by jurisdiction and by what you actually build. Read it as a
map of where the platform’s defaults end.
Tell people they are talking to an AI
Disclosure applies to essentially everything you can build here, and it applies at the start of the interaction — not when someone thinks to ask.
What the platform does. A conversational
/v1/realtime session inherits the
platform persona, and that persona answers the question honestly: asked what it
is, or whether it is a person, the model says plainly that it is an AI. It will
not volunteer that every other sentence, and it will not deny it. Separately,
every audio response carries a machine-readable
synthetic-audio marker — the AI Act’s marking
obligation, which is a different duty from telling the person.
What the platform does not do. It does not speak a disclosure. Nothing opens
a session by naming itself as an AI unless your own instructions or greeting say
so, and there is no pre-flight check that they do.
Put it in the first sentence, before anything substantive: “You are speaking
with an AI assistant from Acme — how can I help?” satisfies all three regimes at
once and costs a second and a half.
Recording and transcripts
Two-party-consent jurisdictions — California, Florida, Illinois, Pennsylvania, Washington and others — require every participant to consent before a conversation is recorded. Under GDPR a recording is personal data and needs a lawful basis and an honest retention period. Both mean the same thing operationally: say you are recording, say it before the substance of the conversation, and be able to delete it afterwards. What the platform keeps:
Session recording is on in the shipped configuration, and turning it off is a
per-workspace decision made in the console under Settings. Two switches gate
it —
SPEECH_SESSION_RECORDING, which is the deployment’s capability, and
record_sessions, which is the workspace’s choice — and both default to on. A
session row is written either way, so a conversation can always be found; with
recording off there is no transcript and no audio. See
Sessions.
Recording voice carries obligations that differ by jurisdiction. That is why
every live session is handed a disclosure before any audio moves, below.
Where audio is kept, the two directions are stored separately rather than mixed,
so one person’s own words can be produced or destroyed on their own.
The disclosure event
Every live session receives a structured disclosure with the session-start declarations, before any audio frame is relayed:recorded is derived from the same recorder that decides whether audio is
actually kept, so the two cannot drift: if a session is recorded, the client was
told, and there is no ordering in which it was not. When recorded is false
because recording was requested but could not run, the disclosure carries
status: "unavailable", a reason, and text saying the conversation can
continue without a recording. disclosed_at is when the client was told, and it
is a full ISO-8601 timestamp with microseconds and a +00:00 offset — not the
…Z to the second that the synthetic-audio
marker uses. Parse both with an ISO-8601 parser
rather than a fixed format string.
text is fixed on the server rather than left to each client, so every client
discloses identically — a disclosure that differs per client is one nobody can
attest to.
Cloned voices
Every voice on this platform resolves to a stored reference clip — that is what keeps a voice from drifting between sentences — which means a cloned voice is a recording of a real person sitting in storage. You need that person’s permission, and in several jurisdictions the permission has to be specific: Tennessee’s ELVIS Act and the New York and California right-of-publicity statutes treat a voice as a protected likeness, and the EU AI Act’s Article 50 deepfake rules attach to synthetic audio imitating a real person. Cloning a public figure, a celebrity, or a customer whose support call you happen to have on tape is the case these laws were written for. Cloning requires you to attest to that permission.POST /v1/voices rejects an
upload unless you send consent_attested=true, and the moment of the
attestation is stored on the voice as consent_attested_at:
- Built-in voices carry no likeness rights. They are designed from a text vocabulary rather than recorded from a person, so they are not biometric data and are not on a destruction schedule. Prefer them unless you specifically need a named voice.
DELETE /v1/voices/{voice_id}erases the reference clip from storage before the row, so a withdrawal of consent can be honoured completely rather than by hiding a row that still points at a voiceprint.
How long data is kept
This is the platform’s written retention and destruction schedule. Illinois BIPA requires one in writing for biometric data, and “we delete when appropriate” is not one — so the periods below are specific, and a daily job enforces them rather than an intention to.
Cloned voices expire whether or not you delete them. Three years after the
last time a voice was used, the reference clip, the prompt cache and the preview
are removed from storage and the row goes with them. Using a voice resets the
clock, so a voice in production never expires out from under you. There is no
recovery — export anything you need before then.
Recordings default to being kept. That default is honest rather than
convenient: every recording made before the schedule existed was captured under
“keep forever”, and picking a period on your behalf would have destroyed history
the day it shipped. It also means an organization that has configured nothing
has no retention limit on recorded data. If your own privacy policy states
one, configure it — the period is not self-serve today, so ask support to set it.
Once set, one period governs realtime sessions, saved transcription runs and
synthesis history alike, and the daily sweep erases anything older through
exactly the same path as a deletion request: objects come off before the row,
and a partial failure leaves the item intact and retryable. One setting rather
than three, because a second control would only let one category quietly opt out
of a period you believed you had set.
The sweep is bounded per run and continues on the next one, carries on past an
item that fails, is safe to run twice, and logs what it destroyed and what it
skipped. A retention schedule nobody can prove ran is not a retention schedule.
Data subject requests
Every category has a real deletion path, and “deleted” means the bytes rather than a flag:
In each case the stored objects are erased before the row, because the row holds
the only pointers to them: dropping it first and then failing on storage strands
bytes nothing can ever find again. A failure therefore leaves the item visible
and the request retryable rather than half-served.
Closing an organization erases its data rather than orphaning it. Deleting
the organization queues the same erasure across every category — realtime
sessions, saved transcriptions, synthesis history and every cloned voice it owns
— so a voiceprint does not wait out its three years after the account is gone.
Personal memory is a special case worth knowing: it is scoped to one signed-in
person and one workspace, API keys cannot read it, and deleting the conversation
a fact came from erases the fact with it.
What you own
Going further
Synthetic audio marking
The marker, where it rides, and the claim it cannot support.
Sessions
Finding, replaying and erasing one conversation.
Voices
The consent attestation, in the request that carries it.
Memory
What is stored per person, and how to remove it.