§04 · SDKs
Just give me a function.
Thin, typed clients for Node and Python. Same shapes as the gateway, idiomatic per language. Ship in a separate package so the frontend bundle stays slim.
Status
The SDKs ship from a sibling PR (feat/sdk-packages). This page is the canonical install + usage reference; the packages themselves live on npm and PyPI.
Node — install
npm i vaanivoice
# or: pnpm add vaanivoice
# or: yarn add vaanivoiceNode — use
import { Converlane } from "vaanivoice";
const vv = new Converlane({
apiKey: process.env.VAANI_API_KEY!, // vv_live_...
});
const session = await vv.textvoice.createSession({ flowId: "lead-qual-v3" });
console.log(session.wsUrl);Every method maps to a single gateway call. Request and response types are generated from the same OpenAPI spec served at /openapi/v1/vaanivoice.yaml, so they cannot drift.
Python — install
pip install vaanivoicePython — use
from vaanivoice import Converlane
import os
vv = Converlane(api_key=os.environ["VAANI_API_KEY"])
room = vv.meeting_agent.create_room(title="Sprint demo", flow_id="meeting-notes-v2")
print(room.room_url)Snake-case attribute names; everything else matches the gateway verbatim.
What’s in scope
- Voice:
textvoice.createSession(),voicebot.createSession(). - Meetings:
meetingAgent.createRoom(),meeting.createRoom(). - Errors: every non-2xx surfaces as a typed
ConverlaneErrorwithstatus,code(e.g.insufficient_balance) andmessage.
Out of scope
Key management lives on the dashboard (Supabase session auth) and is not part of the SDK. Use the dashboard or the /api/api-keys endpoints from a logged-in browser session.
Source
Once feat/sdk-packages lands the canonical paths are packages/vaanivoice-node/ and packages/vaanivoice-python/in the monorepo. Until then, treat this page as the spec we’re building toward.