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.
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
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.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"
}
}{
"error": "Unauthorized"
}Get a call recording (any channel) GET
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 GET
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`.