Skip to main content
There are two official SDKs: the TypeScript SDK (wixzel-voice on npm) and the Dart SDK (wixzel_voice on pub.dev). If you are working in one of those languages, use it: each covers every endpoint and handles retries, paging and idempotency keys for you. This page is for every other language. The API is HTTP and JSON, and a working client is about fifteen lines, so here it is.
Building with an AI agent rather than by hand? There is an official MCP server for Claude Code, claude.ai and Claude Desktop.

Placing a call

A client worth reusing

Three things separate a snippet from something you can put in production: matching on code rather than message text, respecting Retry-After, and sending an idempotency key on calls, test calls, number purchases and top-ups.

Paging through usage

Every list endpoint uses the same cursor contract, so one loop covers all of them. See Pagination.

Pin a version

Behavioural changes ship behind a dated version. A key keeps the behaviour it was created with, but pinning explicitly means an upgrade is something you do rather than something that happens to you: