SDK overview
SDKs
Telenow ships official SDKs for the browser, React Native apps, and your backend. Install one package and the SDK handles everything below the UI: session init, the audio WebSocket, microphone capture, echo/noise handling, jitter-buffered playback, barge-in, automatic reconnection, transcripts, and latency telemetry. You own only your UI.
Packages
| Platform | Package | Registry | Install |
|---|---|---|---|
| Web (any framework) | @telenow/client | npm | npm i @telenow/client |
| React | @telenow/react | npm | npm i @telenow/react @telenow/client |
| React Native (iOS + Android) | @telenow/react-native | npm | npm i @telenow/react-native @telenow/client |
| Node / Bun / Deno / edge (backend) | @telenow/server | npm | npm i @telenow/server |
| Python / Django / FastAPI (backend) | telenow | PyPI | pip install telenow |
Rust, cURL, or any other language: call the plain REST API
directly — every endpoint is documented with curl, and your agent's Publish
tab shows ready-to-paste cURL, Node, Python, and Rust samples with your agent
id filled in. (Native Swift, Kotlin/Android, and Flutter SDKs are coming soon.)
Two API surfaces. For server‑side automation, integration glue, and quick scripts, prefer the
/api/v1automation surface — it's a narrow, stable set of read/chat/webhook endpoints, takes an API key only (X-API-Key), and returns flat JSON (no envelope), so platform/no‑code steps map fields directly. The backend SDK and the full/api/…CRUD surface use the same key. See Automation platforms.
Your first call in 3 steps
- Create an agent — dashboard → Agents → New agent. Give it a prompt and voice, test it with the built-in browser call, and copy its agent ID.
- Get a credential — for backend work, an API key (dashboard → Developers tab). For a no-backend browser call, publish the agent and copy its public slug (Publish tab).
- Install and call — pick your page below; each has a copy-paste quickstart, a full options table, and troubleshooting. Your agent's Publish tab also shows the same samples with the agent ID pre-filled.
Which page do you need?
- Web & React — voice calls in the browser with your own UI.
- React Native — voice calls inside your iOS & Android app.
- Backend (Node & Python) — place AI phone calls, place manual / softphone calls (click-to-call for your CRM), run text chat (Chat API), mint web sessions, verify webhooks, and build Custom API (bring-your-own-LLM) endpoints.
How a client call gets authorized
Every client SDK supports the same three options:
- Backend-minted session (recommended). Your backend calls
init-web-callwith its org API key — one line with the server SDK — and hands the returned{ sessionId, websocketUrl }to your app. The client SDK accepts it assessionand connects directly. No credential ever ships to the client. - Public agent slug. For published agents, pass
publicSlug— no auth at all (rate-limited, with optional access code). - Ephemeral client token. Mint a short-lived, agent-scoped token with the
server SDK and pass it as
token. (Availability depends on your plan — when in doubt, use option 1, which works everywhere.)
Your app ──(1) ask for session──▶ Your backend ──(2) server SDK createWeb()──▶ Telenow
Your app ◀─(3) { sessionId, websocketUrl }────── Your backend
Your app ──(4) SDK connects: audio ⇄ agent ─────▶ Telenow
What the SDKs handle for you
| Concern | How |
|---|---|
| Echo & noise | Browser: WebRTC echo cancellation + noise suppression (on by default). React Native: the platform's voice-communication audio mode (hardware AEC/NS on iOS & Android). |
| Audio wire format | μ-law 8 kHz frames, encoded/decoded for you — don't change the defaults. |
| Network jitter | Adaptive jitter buffer (RFC-3550 style) with underrun concealment. |
| Barge-in | When the caller interrupts, queued agent audio is flushed instantly. |
| Drops & reconnects | Exponential-backoff reconnect that resumes the same session. |
| Transcripts | Live user + agent lines streamed to a callback. |
| Latency metrics | The SDK answers server pings so your analytics show real round-trip times. |