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

Blind-transfer a live call

Moves the call's current leg to a new destination (a phone number or a SIP endpoint). This is a BLIND transfer: control of the leg is handed off and the call ends normally when the transferred leg hangs up. The caller ID presented on the transfer leg is always your own number.


POST
/v1/voice/calls/{id}/transfer

Authorization

bearerAuth
AuthorizationBearer <token>

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

In: header

Path Parameters

id*string

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.transferVoiceCall({  path: {    id: 'abc123',  },  body: {    to: 'string',  },});console.log(data);
{  "success": true,  "callId": "string",  "transferredTo": "string"}
Was this page helpful?

Hang up a live call

Hangs up a live call on demand, including an outbound call that is still ringing and has not been answered yet (the callee stops ringing immediately). Works for PSTN calls and for WhatsApp calls (the `callId` returned by `POST /v1/whatsapp/calls`, or an inbound WhatsApp call id). A WhatsApp call forwarded to a `wss://` destination also ends automatically when that WebSocket closes. Idempotent: ending a call that already ended (or never connected) returns success with the call's current status. Final duration/cost are written asynchronously when the hangup event lands, so the call doc may briefly still show its prior status.

Get a call recording

Resolves a fresh, playable MP3 URL for the call's recording (provider-signed URLs expire ~10 minutes after signing, so this endpoint re-signs on demand). Default responds `302 Found` redirecting to the fresh URL; pass `as=json` to receive `{ url }` instead.

to*string

+E164 phone number (tel: prefix optional) or a sip: URI. wss:// is not a valid transfer target.