---
title: "Get voice call"
method: GET
path: "/v1/calls/{callId}"
tags: ["Voice Agents"]
---

# Get voice call

`GET /v1/calls/{callId}`

## Request

- Base URL: `https://api.zavu.dev`
- URL: `https://api.zavu.dev/v1/calls/{callId}`
- Auth: HTTP bearer

Retrieve a single voice call, including its full transcript once the conversation has produced turns.

## Path parameters

- `callId` string, required

## Response `200`

Voice call details.

- VoiceCallResponse
  - `call` VoiceCall, required
    - `id` string, required
    - `direction` 'inbound' | 'outbound', required: Whether the call was placed by Zavu (outbound) or received from a caller (inbound).
    - `from` string, required: Caller phone number in E.164 format. Your sender's number for outbound calls; the caller's number for inbound calls.
    - `to` string, required: Callee phone number in E.164 format.
    - `status` 'queued' | 'ringing' | 'in_progress' | 'completed' | 'failed' | 'busy' | 'no_answer' | 'canceled', required: Lifecycle status of a voice call. - `queued`: outbound call created, not yet dialing. - `ringing`: dialing (outbound) or received and ringing (inbound). - `in_progress`: answered, the agent is connected. - `completed`: ended after a conversation. - `failed`: could not be completed. - `busy`: the line was busy. - `no_answer`: rang but was not answered. - `canceled`: canceled before it was answered.
    - `endReason` string, nullable: Why the call ended (e.g. `agent_ended`, `max_duration`, `transfer`, `hangup`). Present once the call is no longer active.
    - `answeredAt` string, date-time, nullable: When the call was answered.
    - `endedAt` string, date-time, nullable: When the call ended.
    - `durationSeconds` integer, nullable: Billable talk time in seconds, measured from answer to hangup.
    - `turnCount` integer, nullable: Number of conversation turns exchanged during the call.
    - `transcript` VoiceCallTurn[]: Ordered transcript of the call. Included when retrieving a single call; omitted from list responses.
      - `seq` integer, required: Ordinal position of the turn within the call, starting at 0.
      - `role` 'user' | 'assistant' | 'tool', required: Who produced the turn. `tool` records a tool call the agent made during the conversation.
      - `text` string, required: Transcribed speech for `user` and `assistant` turns, or a JSON summary of the tool call for `tool` turns.
      - `startedAt` string, date-time, nullable: When the turn started.
      - `endedAt` string, date-time, nullable: When the turn ended.
    - `cost` number, nullable: Total cost of the call in USD, combining the managed voice pipeline per-minute charge, telephony, and, on an agent that runs a premium model, that model's tokens. Available once the call has ended. Tokens are charged between 30 minutes and 24 hours after the call ends, so the figure can grow until then.
    - `metadata` object: Arbitrary metadata you attached when creating the call.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time

## Other responses

- `401`: Unauthorized.
- `404`: Call not found.

## Changes

> 80 revisions in range; 1 not diffed.

- **2026-07-25** `5cce7d79055c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/changes/v1/calls/:callId/get.md)

---

[API](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api.md) - [All operations](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zavudev/apis/zavu-unified-messaging-layer-api/revisions/75bc777b0ffb?raw)
