Skip to main content

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

  1. Your frontend calls your own local connect and updates routes.
  2. Your local server routes call Akapulu with @akapulu/server.
  3. Your React frontend uses @akapulu/react to manage session state and media.
  4. If you want prebuilt UI, @akapulu/react-ui renders on top of @akapulu/react.
In this setup:
  • @akapulu/server handles API calls and keeps your API key on the server
  • @akapulu/react handles session state, event subscriptions, and media controls
  • @akapulu/react-ui is 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:

Guides and examples

Reference implementations and implementation guides:

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/react joins it for you. If you build a custom tile and import DailyVideo or Daily hooks, add @daily-co/daily-react as a direct dependency so that import is yours — let npm resolve the version that @akapulu/react already 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.