Place an outbound phone call
Dials to FROM one of your voice-enabled numbers and, on answer,
bridges the callee to the number's stored forward destination, or to
the per-call forwardTo override. Destinations can be your own AI
voice agent (Vapi/Retell), a phone, or a SIP endpoint. An optional
greeting is spoken to the callee before the bridge.
The 200 response means the call is dialing; the lifecycle continues
asynchronously (track it via GET /v1/voice/calls/{id} or the call.*
webhooks). Outbound calls are capped per rolling hour (429 when hit).
Idempotency: send an Idempotency-Key header to make retries safe;
same key + same body replays the original response instead of dialing
(and billing) a second call.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Header Parameters
Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.voice.createVoiceCall({ body: { to: 'string', },});console.log(data);{ "success": true, "callId": "string", "telnyxCallControlId": "string", "status": "dialing", "direction": "outbound", "from": "string", "to": "string", "forwardTo": "string", "greeting": "string", "recordingEnabled": true, "transcriptionEnabled": true, "transcriptionLanguage": "auto"}List phone calls
Your PSTN voice calls (inbound + outbound), newest first. Cursor pagination: pass the returned `nextCursor` as `before` for the next page. For a history that also includes WhatsApp calls, use `GET /v1/calls`.
Get a phone call
Full call detail, including the transcript segments when transcription was on.