What you need for a recording to appear
Two things:- Your agent runs on the Daily transport. Cloud recording is a feature of the Daily room your agent is in. An agent on a non-Daily transport (a Twilio or generic WebSocket leg, for example) has no room to record, so no recording is made and no player appears on its session page.
- A cloud recording is actually started for that room. Pipecat Cloud does not start one on your behalf. See the next section.
Turning recording on
The/start endpoint passes dailyRoomProperties and dailyMeetingTokenProperties through to Daily unchanged when Pipecat Cloud is creating the room (createDailyRoom: true). Pipecat Cloud adds no recording defaults of its own, so if you do not ask for a recording, none is made.
Start automatically when the agent joins
Setstart_cloud_recording on the meeting token. Daily starts the recording as soon as that token holder joins the room:
Start and stop it from your pipeline
If you want control over when recording runs, callstart_recording() and stop_recording() on the transport instead. See DailyTransport recording.
What the recording contains
A cloud recording is produced on the media server, from what each participant publishes into the room. That has one consequence worth understanding: user audio in the recording is the raw microphone audio, before any in-pipeline audio filter. If your agent uses an input audio filter such as Krisp VIVA, that filter runs inside your pipeline on inbound frames, so it only cleans the copy that feeds your STT and VAD. It does not change what the user publishes, so it never affects the recording. If you need audio that reflects your filtering, record it in the pipeline instead.Storage and retention
By default, cloud recordings are stored by Daily, on the Daily domain that Pipecat Cloud manages for your organization. List them, fetch access links, and delete them with the Daily recordings REST API.Store recordings in your own S3 bucket
If you have retention or data residency requirements, the cleanest option is to keep recordings out of Daily’s storage entirely. Setrecordings_bucket in dailyRoomProperties and Daily writes recordings straight to your bucket:
allow_api_access to true if you want the dashboard and the Daily access-link API to be able to play recordings back from your bucket.
You can also configure the bucket once at the domain level instead of per room. For IAM role setup and the full property reference, see Storing recordings in a custom S3 bucket.
Turn recording off
Leavestart_cloud_recording out of your /start call and no cloud recording is made. Nothing in Pipecat Cloud will add it back. You lose the dashboard player, and no recording storage is billed.