Daily
Connect your own voice bot — built with Pipecat or anything that can join a Daily room — and let RubricHQ’s simulated caller talk to it over real audio.
Both parties join one Daily room:
rubric-test-caller— RubricHQ’s AI caller, running your scenario.- your agent-under-test — the bot you’re testing.
They publish and subscribe to each other’s audio; RubricHQ records the call and produces transcript + audio metrics.
Prefer LiveKit as your transport? The model is identical — see LiveKit.
The model: rooms, tokens, and who creates them
A few Daily facts that decide how the integration is wired:
- A room (a
https://<domain>.daily.co/<name>URL) is one call/session. A meeting token authorizes one identity to join one room. - Creating rooms and minting meeting tokens requires your Daily API key. Joining a room requires only the room URL + a meeting token — never the API key.
- So the only real question is who creates the room and mints the tokens. That gives two modes:
Configure this under Agent → Channels → Web, provider Daily.
Credentials are only needed for “We create rooms” mode — that’s where we create the room and mint tokens. In “You create rooms” mode we never see your API key; you hand us a scoped meeting token.
Credentials (for “We create rooms”)
Provide your Daily API key in either place — RubricHQ resolves per-agent override → workspace default → error:
- Workspace default — Settings → Integrations → Transport Providers → Daily:
API Key. Used by every agent that doesn’t override. - Per-agent override — Agent → Channels → Web → “We create rooms” → Daily API key. Overrides the workspace default for that one agent.
The API key is write-only: once saved it shows “Configuration saved” and is never sent back to the browser. Leave it untouched to keep it; click Edit to replace it.
Mode 1 — You create rooms (client)
You own the Daily account; RubricHQ never needs your key.
Config
Sequence
- RubricHQ POSTs to your Bot Runner URL with the run context.
- Your service creates a Daily room, starts your bot in it, and returns a meeting token for our caller.
- RubricHQ’s caller joins that room with the
room_url+tokenyou returned, and the conversation runs.
What we send → your Bot Runner URL
What you return (immediately, in the HTTP response)
The room + token come back in the HTTP response — not via a webhook. By the time you respond 200, the room must exist and the token must be valid, because RubricHQ’s caller joins immediately.
Reference bot runner (client mode)
Mode 2 — We create rooms (rubric)
RubricHQ creates the Daily room with your API key, mints a token for your bot and one for our caller, then POSTs your join endpoint so your bot enters the room.
Config
Sequence
- RubricHQ creates a Daily room and mints a
bot_token(for your bot) and a caller token (for our caller). - RubricHQ POSTs your join endpoint with the
room_urland thebot_token. - Your bot joins that room with the token we minted; our caller joins too; the conversation runs.
What we send → your join endpoint
What you return
Your bot doesn’t need its own Daily key here — it joins our room with the token we minted. It only needs the room_url and token from the request.
Reference bot runner (rubric mode — Pipecat)
Optional room config — “Room Properties (JSON)”
When RubricHQ creates the room (“We create rooms”), you can pass any Daily room properties as JSON under Agent → Channels → Web → Room Properties (JSON). They’re merged into the room’s properties; RubricHQ’s required keys (exp, max_participants) take precedence.
Recording
enable_recording controls Daily-side recording. Allowed values:
When Daily-side cloud recording is enabled, RubricHQ also fetches the vendor’s own recording link after the call and surfaces it on the run, alongside our capture.
Whatever you set here, RubricHQ always captures its own speaker-separated recording of the call for analysis, so transcript and audio metrics work even if you leave Daily-side recording off. This JSON is for your room preferences (keeping a vendor-side copy, language, timeouts, etc.).
Commonly useful properties
This is the testing-relevant subset; any key from the Daily room config reference is accepted and passed through.
This JSON only applies in “We create rooms” mode. In “You create rooms” mode you create the room, so you set these properties yourself in your own POST /rooms call.
Choosing a mode
Results
When the call ends, the transcript, audio recording (speaker-separated when available), and metrics appear automatically on the run in RubricHQ — your bot runner doesn’t need to report anything back. If a call can’t proceed (missing/incorrect credentials, room creation failed, or the bot never joins) the run is marked failed with the reason rather than left hanging.
A reference Pipecat bot runner that supports both modes only needs two endpoints: POST /api/create-and-join-daily (client mode) and POST /api/session (rubric mode). Everything else — recording, transcription, metrics — is handled by RubricHQ.