Get a call (any channel)
Channel-agnostic call detail: works for both WhatsApp and regular
phone (PSTN) calls, so any row from GET /v1/calls can be opened
without branching on channel. Returns the full call including
transcript segments, with contactId/contactName set when the
counterparty matches a CRM contact.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Path Parameters
Response Body
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.calls.getCall({ path: { id: 'abc123', },});console.log(data);{ "call": { "_id": "string", "accountId": "string", "conversationId": "string", "contactId": "string", "channel": "whatsapp", "direction": "inbound", "from": "string", "to": "string", "forwardTo": "string", "greeting": "string", "status": "ringing", "isVoicemail": true, "amd": true, "answeredMachine": true, "forwardCallerId": "business", "recordingEnabled": true, "transcriptionEnabled": true, "transcriptionLanguage": "auto", "startedAt": "2019-08-24T14:15:22Z", "answeredAt": "2019-08-24T14:15:22Z", "endedAt": "2019-08-24T14:15:22Z", "transferredAt": "2019-08-24T14:15:22Z", "durationSeconds": 0, "endReason": "hangup", "hangupCause": "string", "sipHangupCause": "string", "callErrors": [ { "code": 0, "message": "string" } ], "recordingUrl": "string", "lastTranscriptSnippet": "string", "transcript": [ { "text": "string", "confidence": 0, "at": "2019-08-24T14:15:22Z" } ], "billing": { "metaMinutes": 0, "telnyxSeconds": 0, "transcriptionSeconds": 0, "transcriptionCostUSD": 0, "metaCostUSD": 0, "telnyxCostUSD": 0, "recordingCostUSD": 0, "billableCostUSD": 0, "totalCostUSD": 0, "currency": "string" }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "contactName": "string" }}Get a call recording
Channel-agnostic recording fetch: resolves a fresh, playable MP3 URL for any call regardless of channel (provider-signed URLs expire ~10 minutes after signing, so this re-signs on demand). Default responds `302 Found` redirecting to the fresh URL; pass `as=json` to receive `{ url }` instead.
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`.