What this example shows
AkapuluProviderand headless hooks from@akapulu/reactuseAkapuluSessionfor lifecycle and store stateuseAkapuluMediaControlsfor mic/cam controlsuseAkapuluEventsfor tools and other conversation eventsAkapuluBotAudiofor assistant audio playback@daily-co/daily-react(DailyVideo,useDaily,useParticipantIds,useVideoTrack) for remote/local video under the same provider@akapulu/serverin route handlers so the API key never ships to the browser
Connect and updates
- The example passes local
connectPathandupdatesPathroutes intoAkapuluProvider. @akapulu/reacthandles thePOSTto connect and the updates polling internally.- While the UI is in its
connectingstate, the React SDK polls the updates route to determine call readiness. useAkapuluSession()stays in sync with the latestcompletionPercentandlatestUpdateText.- Once the backend reports that the call is ready, the session moves to
connectedand the conversation runs in the same Daily room.
After the call ends
- Opens a post-call review screen in the example app.
- Conversation data comes from
getConversationDetailandgetConversationRecordingon@akapulu/server(metadata + transcript rows; recording as redirect / JSON / binary).

