- User browser. The person on the call.
- Your voice bot. It hears the browser, decides what to say, and produces the assistant audio. It does not publish a camera or a microphone back into the Daily room.
AkapuluAvataris the Pipecat plugin you add to that voice bot; it sends the assistant audio to the Akapulu Labs worker instead. - Akapulu Labs worker. It joins after the Akapulu Labs API
POST /api/live-sessions/call and publishes the face and the played audio.
POST /api/live-sessions/, which returns session_id and starts the worker).
Akapulu Labs worker joins
Your voice bot joins
User browser joins
All together
Full sequence
What you send
create_akapulu_call in pipecat-akapulu does this from your server: the private Daily room, the three meeting tokens, and POST /api/live-sessions/. It returns the room URL, the bot token, the browser token, and session_id. The room lasts two hours unless you pass room_exp_secs. The code is on Your bot. A server that already has a Daily room skips the helper and sends this POST itself.
The Akapulu Labs API call is POST /api/live-sessions/. It takes four fields:
avatar_id: which face joinsshow_ai_label: whether the picture shows This is AIroom_url: the Daily room you createdavatar_token: the meeting token the Akapulu Labs worker joins with
session_id. Pass that id into AkapuluAvatar, the Pipecat plugin in your voice bot.
The Akapulu Labs API key stays on your server. The browser receives its own meeting token from you, not the API key.
What the Akapulu Labs worker publishes
The voice bot’s job is to send the assistant audio to the Akapulu Labs worker throughAkapuluAvatar. The worker joins the call as a Daily participant and publishes the audio and the video. Leave audio out and video out off on the voice bot. If the voice bot also publishes audio or video, the room has two publishers. When the participant named Avatar joins, the voice bot unsubscribes from that microphone. The browser stays subscribed to it. The code is on Your bot.
Every frame carries an invisible mark that reads back as akapulu. That mark is separate from the This is AI card. Verify a recording uploads the mp4 and reads the mark.

