§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

Terminalbash
npm i vaanivoice
# or:  pnpm add vaanivoice
# or:  yarn add vaanivoice

Node — use

TypeScriptts
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

Terminalbash
pip install vaanivoice

Python — use

Pythonpython
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 ConverlaneError with status, code (e.g. insufficient_balance) and message.

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.