---
title: "Retrieve a call record"
method: GET
path: "/api/v1/calls/{callId}"
tags: ["Call Records"]
---

# Retrieve a call record

`GET /api/v1/calls/{callId}`

## Request

- Base URL: `https://api.callnode.io`
- URL: `https://api.callnode.io/api/v1/calls/{callId}`
- Auth: API key in header `X-Api-Key` and API key in header `X-Timestamp` and API key in header `X-Signature`

One record by call id — the same uuid CallNode hands you everywhere
else for that call: the `X-CallNode-Call-Id` header on a BYOC delivery
INVITE, and the `callId` in webhook and audio-stream query strings.
Returns 404 for a call that does not exist **or is not yours**.

## Path parameters

- `callId` string, required

## Response `200`

The call record.

- object
  - `call` CallRecord: A finished or in-progress call on one of your numbers.
    - `callId` string: The call's uuid — matches `X-CallNode-Call-Id` on BYOC INVITEs.
    - `direction` 'inbound' | 'outbound'
    - `from` string
    - `to` string
    - `number` string: The CallNode number (E.164) the record belongs to.
    - `status` 'in_progress' | 'completed' | 'failed'
    - `startTime` string, date-time
    - `endTime` string, date-time, nullable
    - `durationSecs` integer
    - `endReason` string, nullable: CallNode's reason the call ended. Null = ordinary hangup.
    - `sipCause` string, nullable: SIP-level hangup cause of the caller leg (e.g. NORMAL_CLEARING).
    - `errorMessage` string, nullable
    - `webhookErrors` integer
    - `sipTrunkId` string, nullable: Set when the call arrived over one of your SIP trunks.
    - `createdAt` string, date-time

## Other responses

- `401`: Missing, unknown, or badly signed credentials — check the HMAC and the timestamp skew.
- `404`: No such resource on this account.

---

[API](https://skmtc.dev/callnode/apis/callnode-outbound-api.md) · [All operations](https://skmtc.dev/callnode/apis/callnode-outbound-api/llms.txt) · [OpenAPI document](https://skmtc.dev/callnode/apis/callnode-outbound-api/revisions/c7da6ad06509?raw)
