Every voice and video agent records its calls by default. One file per call, in stereo: the caller on the left channel and the agent on the right, so you can split them and listen to either side alone. recording.enabled on the agent turns it off. There is no per-call switch and no per-number setting — recording is a property of the agent that answers.
The file is what the agent heard, after noise cancellation — not a capture of the phone line. It does not include background audio, which the agent publishes as a separate track.

Where the files go, and for how long

Recordings are stored in object storage in the region the call belongs to, and are kept until your workspace’s retention policy deletes them. The default retention is unlimited: nothing ages out unless you set a policy or delete something yourself. See data retention and privacy. Nothing derives a deletion. A recording is gone because something deleted it and stamped the record — a person, or a retention purge — which is why deleted and expired are different states.

Playing and downloading

GET /v1/calls/{session_id}/recording redirects to the audio: one stereo Ogg/Opus file. Add ?download=true for a link that saves as call-{session_id}.ogg instead of playing inline.
The link is short-lived. It expires within the hour, so follow it straight away rather than storing it or putting it in a queue. It is not a lasting credential — a URL copied out of a webhook payload will stop working.
The link supports range requests, which is what lets a player seek without downloading the whole call first. GET /v1/calls/{session_id} returns ready-made recording.url and recording.download_url on the call detail, so you rarely need to call the redirect yourself. Those two are minted on the detail only — a list of 200 calls does not carry 200 signed URLs nobody asked for.

recording.state

Check this before offering a play button. available is the only playable value; everything else says why there is nothing to play. recording.consent is off by default: the call is recorded and the caller is not told about it by us. Whether that is acceptable is a question about your jurisdiction and your customers, and Talqing does not decide it for you. Setting it to disclosure makes the agent say so.

The notice has to be somewhere

With disclosure, publishing is refused unless the greeting literally contains {{consent.notice}}. The token resolves to the agent’s consent_notice string — by default “This call is recorded for quality and training purposes.” — so you choose where in the greeting it lands and Talqing guarantees it is spoken. The refusals you will see at publish:
  • recording consent is on, so the greeting must contain {{consent.notice}} to say where the notice is spoken
  • recording consent needs a greeting to speak the notice in
  • recording consent is on but the consent notice is empty
A realtime speech-to-speech agent cannot use disclosure at all. It is refused at publish with *“recording consent needs a cascade pipeline (STT + LLM
  • TTS): a realtime model rephrases what it is asked to say, and a recording notice has to be spoken word for word.”* A realtime model is asked to say the greeting rather than handed exact audio, so it may reword or trim it — fine for an opening line, not for a scripted disclosure. Use a cascade pipeline for an agent that has to disclose.

Stopping, and what stopping means

Whenever recording is on — with or without a notice — the agent carries a tool that stops it, and the model is instructed to reach for it as soon as the caller says they do not want to be recorded or asks for the recording to be deleted. The right to object does not depend on us having announced anything first.
Stopping discards everything recorded so far. You do not get the first two minutes; the call reads consent_withdrawn and there is no audio at all. The call itself continues normally.
There is no pause and no resume — only stop. Recording cannot be started again partway through a call.

Screen recordings

A screen recording is a separate artifact of the same call, with its own state, never mixed into the audio file. screen_recording.state uses the same vocabulary, plus not_shared: screen recording was on and nobody ever shared a screen. That is a normal outcome, as opposed to none, which means it was turned off.

Deleting

Erasing a person’s last remaining call also erases what your agents remember about them. The next call from that number meets an agent that has never heard of them.
A call still in progress cannot be erased — it is still writing, and a 409 says so. Ask again once it has ended.

Next

Recordings in the dashboard

Playing, downloading and deleting from the call detail.

Data retention and privacy

What is stored, for how long, and what you can turn off.