> ## Documentation Index
> Fetch the complete documentation index at: https://omni.fireflo.au/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/calls/{call_id}

> One call: who, which way, how it ended, and what was said on it.

One call: who, which way, how it ended and how long it lasted, what it cost, and for a voice agent's call what was said and its summary.

<Note>Needs the `calls:read` scope.</Note>

## Path parameters

| Field | Type | Required | Notes |
| :- | :- | :- | :- |
| `call_id` | string | Yes | The call's id. |

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.fireflo.au/v1/calls/omni-2b8d4f6a1c3e4a5b9d7f0e2c4a6b8d1f \
    -H "Authorization: Bearer $OMNI_API_KEY"
  ```

  ```python Python theme={null}
  import os

  import requests

  response = requests.get(
      "https://api.fireflo.au/v1/calls/omni-2b8d4f6a1c3e4a5b9d7f0e2c4a6b8d1f",
      headers={"Authorization": f"Bearer {os.environ['OMNI_API_KEY']}"},
  )
  print(response.status_code, response.json())
  ```

  ```javascript Node theme={null}
  const response = await fetch("https://api.fireflo.au/v1/calls/omni-2b8d4f6a1c3e4a5b9d7f0e2c4a6b8d1f", {
    headers: {
      Authorization: `Bearer ${process.env.OMNI_API_KEY}`,
    },
  });
  console.log(response.status, await response.json());
  ```
</CodeGroup>

## Response

`200 OK` — the call, plus `price` and `currency` (what it cost, when known), `hangup_cause`, and `conversation`: a voice agent's `summary`, `flags` and the `turns` of what was said.

```json theme={null}
{
  "id": "omni-2b8d4f6a1c3e4a5b9d7f0e2c4a6b8d1f",
  "kind": "ai",
  "direction": "outbound",
  "to": "+919876543210",
  "number": "+919876543210",
  "caller_id": "+911140005678",
  "did": "",
  "contact": {
    "uuid": "3f6b2a1e-8c4d-4e2a-9b7f-5d1c0e8a9f42",
    "name": "Asha Rao"
  },
  "ivr": "",
  "agent": "Appointment reminder",
  "placed_by": "",
  "status": "ended",
  "reason": "",
  "seconds": 71,
  "recorded": false,
  "summary": "Confirmed the appointment for Tuesday at 11.",
  "created": "2026-10-05T07:30:00.912Z",
  "started_at": "2026-10-05T07:30:04.115Z",
  "answered_at": "2026-10-05T07:30:09.540Z",
  "ended_at": "2026-10-05T07:30:57.802Z",
  "price": "1.20",
  "currency": "INR",
  "hangup_cause": "NORMAL_CLEARING",
  "conversation": {
    "summary": "Confirmed the appointment for Tuesday at 11.",
    "flags": [],
    "turns": [
      {
        "role": "agent",
        "text": "Hello Asha, I'm calling about your appointment on Tuesday at 11."
      },
      {
        "role": "user",
        "text": "Yes, that works for me."
      }
    ]
  }
}
```

### The call

| Field | Notes |
| :- | :- |
| `id` | The call's id. |
| `kind` | `ivr` (rung into an IVR), `ai` (a voice agent), `inbound`, `phone` (dialled from a desk or app phone), `click` (click-to-call) or `broadcast`. |
| `direction` | `inbound` or `outbound`. |
| `to`, `number` | The number rung, and the other party's number. |
| `caller_id`, `did` | The number an outgoing call showed, and the number an incoming call rang. |
| `contact` | `{uuid, name}`, or null. |
| `ivr`, `agent`, `placed_by` | The IVR it went into, the agent who took it, and the team member who placed it. |
| `status` | `dialling`, `started` (in progress), `ended`, `failed` (not answered) or `missed` (rang in, nobody took it). |
| `reason` | Why it failed. |
| `seconds`, `recorded`, `summary` | How long it lasted, whether it was recorded, and a voice agent's summary. |
| `created`, `started_at`, `answered_at`, `ended_at` | When each happened, or null. |

## Errors

Every refusal is `{"error": {"code", "message", "field"}}`; `field` is there when one input is at fault.

| Status | Error code | When |
| :- | :- | :- |
| 404 | `not_found` | No call has that id on this account, or the account has no Voice. |
| 403 | `scope_missing` | The key doesn't have the `calls:read` scope. |

Any request can also be refused for its key, its account or its rate (`key_required`, `invalid_key`, `account_suspended`, `plan_excludes_api`, `address_not_allowed`, `rate_limited`); see [the overview](/api-reference/overview).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.