Zernio
Zernio
API Reference

Voice & Calling

Calls

List phone callsGETPlace an outbound phone callPOSTGet a phone callGETHang up a live callPOSTBlind-transfer a live callPOSTGet a call recordingGETEstimate call costGET

Browser Softphone

Mint a browser softphone sessionPOSTDial from the browser softphonePOST

Number Setup

Enable phone calling on a numberPOSTDisable phone calling on a numberDELETEAttach a number to a SIP trunkPOSTDetach a number from its SIP trunkDELETE

SIP Trunks

List SIP trunksGETCreate a SIP trunkPOSTGet a SIP trunkGETDelete a SIP trunkDELETERotate a SIP trunk's passwordPOST
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
Voice & Calling

Dial from the browser softphone

Step 2 of the browser softphone handshake: places an outbound call whose answered leg is bridged to the browser registered with the credential from POST /v1/voice/calls/web. The call runs through the normal outbound lane, so it is logged as outbound (from = your number, to = target) and recorded per the number's settings.


POST
/v1/voice/calls/web/dial

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Request 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.dialVoiceWebCall({  body: {    to: 'string',    credentialId: 'credential_abc123',  },});console.log(data);
{  "success": true,  "callId": "string",  "telnyxCallControlId": "string",  "status": "dialing",  "direction": "outbound",  "from": "string",  "to": "string",  "recordingEnabled": true}
Was this page helpful?

Mint a browser softphone session

Step 1 of the two-step browser softphone handshake. Mints a WebRTC session (token + credential) the browser registers with the `@telnyx/webrtc` SDK. Once registered, call `POST /v1/voice/calls/web/dial` with the returned `credentialId` to place the call. The split avoids bridging to a browser that has not finished registering. The token lives ~1 hour (it must outlive the whole call, not only the handshake).

Enable phone calling on a number

Turns on regular phone (PSTN) calling for one of your numbers and configures how inbound calls are handled. Inbound calls route to `forwardTo`: your own AI voice agent (Vapi/Retell), a phone, or a SIP endpoint. Optional extras: voicemail, business-hours windows, an IVR menu, a caller blocklist, recording, and transcription. A number can also be voice-enabled with no forward (outbound-only). Idempotent, and doubles as the settings update: only fields present in the body are written. Omitting `forwardTo` preserves the current destination; sending an empty string clears it.

to*string

The number to call, E.164 with leading +.

Match^\+\d{6,15}$
credentialId*string

The WebRTC credential id returned by POST /v1/voice/calls/web (the registered browser).

fromNumber?string

Which of your voice-enabled numbers to call from (optional when you have one).

Match^\+\d{6,15}$
recordOverride?boolean