Web SDK Overview
The Akapulu Web SDK is a package family for building browser and server integrations for live conversations. Scripted video clips are not part of these packages. Use the clip REST API or the Python example. The SDK is split into these public packages:@akapulu/server@akapulu/react@akapulu/react-ui
Package structure
How the packages relate
- Your frontend calls your own local
connectandupdatesroutes. - Your local server routes call Akapulu with
@akapulu/server. - Your React frontend uses
@akapulu/reactto manage session state and media. - If you want prebuilt UI,
@akapulu/react-uirenders on top of@akapulu/react.
@akapulu/serverhandles API calls and keeps your API key on the server@akapulu/reacthandles session state, event subscriptions, and media controls@akapulu/react-uiis optional and gives you a higher-level conversation UI
Keep
AKAPULU_API_KEY on the server. The browser should only call your connect route. That route starts a billed conversation, so authenticate users before starting a call. Pass user auth with config.headers on AkapuluProvider. Do not put the API key in frontend code.Explore the packages
Choose the package that matches the layer you are working on:@akapulu/serverfor backend route integrations@akapulu/reactfor React providers, hooks, and media helpers@akapulu/react-uifor prebuilt React conversation UI
Guides and examples
Reference implementations and implementation guides:- Prebuilt UI
Uses
@akapulu/react-uifor the fastest path to a working call. - Prebuilt UI (styled) The prebuilt UI with a dark theme, custom tool toast, and post-call review.
- Customized UI
Uses
@akapulu/reactonly and renders the conversation UI manually. - Customize Conversation UI
Daily, Pipecat, and nested packages
Install@akapulu/react (and @akapulu/react-ui if you want the prebuilt UI). Do not pick Daily or Pipecat versions yourself. They come in with @akapulu/react.
- Daily is the live audio/video room.
@akapulu/reactjoins it for you. If you build a custom tile and importDailyVideoor Daily hooks, add@daily-co/daily-reactas a direct dependency so that import is yours — let npm resolve the version that@akapulu/reactalready uses. The customized-ui example does that. - Pipecat is the internal media client. Do not install it or import it unless you pass a custom
transport.
@akapulu/react also needs react and react-dom (>=18 <20).
You may also see @akapulu/web-core in node_modules. That is the session store and shared types under @akapulu/react. You do not install it. @akapulu/react already re-exports the types.
