Skip to main content
The VoicEra API is a JSON REST API served by the api container on port 8000. Everything the platform does — users, agents, credentials, numbers, calls, campaigns, documents — is available through it. There is no private admin surface.
There is no official Node.js, Python, or other client SDK. Integrate with plain HTTP — every example in this reference is curl. GET /openapi.json on a running API works with any OpenAPI client generator if you want a typed client of your own.
A running API serves an interactive console at http://localhost:8000/docs and ReDoc at /redoc, generated from the same routers as these pages. Use it to try requests against a real token; use these pages to understand what a route is for and how it behaves.
Every router is mounted under settings.API_V1_PREFIX, which defaults to /api/v1 (apps/api/app/config.py). Paths on this page already include it. Two routes are declared on the app itself in apps/api/app/main.py and are not prefixed: /health pings FerretDB. It always returns 200; read the body, not the status code.

Request format

Send Content-Type: application/json on every request with a body. Two routes take multipart/form-data instead, because they carry a file: POST /api/v1/campaign/upload and POST /api/v1/knowledge/upload.

Browse by resource

Prefer one flat list? See the Endpoints cheatsheet.