# Get a call

`GET /v1/calls/{call_id}`

Needs an API key.

Fetch one of your organization's calls by id, with its `output`.

A call still running has `status: "pending"` and no output or cost yet. Pass `wait` (up to 50 seconds) to wait for it to finish instead of reading it again and again: the call is answered as soon as it finishes, or as it is once `wait` is up.

A failed call has no output, a `failure_reason`, and a cost of zero, unless it failed `billed_provider_failure`: then the provider's cost, with no fee. Outputs are kept with no time limit. Pass `fields` (repeat for each path) and `max_items` to read a smaller view of a large output; reading a call is free and changes nothing stored.

## Example request

cURL:

```bash
curl "https://api.voxoria.ai/v1/calls/tcall_8xQ2vT7mKpR4nW9cYb3LdE?wait=50" \
  -H "Authorization: Bearer $VOXORIA_API_KEY"
```

Python:

```python
import os

import httpx

response = httpx.get(
    "https://api.voxoria.ai/v1/calls/tcall_8xQ2vT7mKpR4nW9cYb3LdE",
    params={"wait": 50},
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/calls/tcall_8xQ2vT7mKpR4nW9cYb3LdE?wait=50", {
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
  },
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "get_call",
  "arguments": {
    "call_id": "tcall_8xQ2vT7mKpR4nW9cYb3LdE",
    "wait": 50
  }
}
```

## Path parameters

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `call_id` | string | Yes |  | The call's ID. |

## Query parameters

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `fields` | array of string | No |  | Return only these parts of `output`, as paths from its root: `results.title` keeps each `results` row's `title`; `page` keeps the whole `page` block. Blocks no path names are left out; a path the output lacks is ignored. Omit for the whole output. Each item: 1 to 200 characters. Repeat for each value. |
| `max_items` | integer | No |  | Return at most this many rows of each list block in `output`. Lists inside a row are kept whole. From 1 to 1000. |
| `wait` | integer | No | `0` | Seconds to wait for a call still running to finish, 0 to 50, before answering with it as it is then. 0, the default, answers at once. From 0 to 50. |

## Response

### 200

The call, as it is once `wait` is up or it finished.

The body is a call: see [the call response](/docs/call-response.md) for every field, an example and the error bodies.

### Example 200 response

```json
{
  "id": "tcall_8xQ2vT7mKpR4nW9cYb3LdE",
  "tool": "google.serp.organic",
  "status": "succeeded",
  "failure_reason": null,
  "provider": "example-provider",
  "requested_provider": null,
  "input": {
    "query": "crm for small teams",
    "country": "gb"
  },
  "resolved_input": {
    "query": "crm for small teams",
    "country": "gb",
    "language": "en",
    "device": "desktop",
    "page": 1,
    "autocorrect": true
  },
  "require": [],
  "cost": {
    "provider_usd": "0.02",
    "platform_fee_usd": "0.0014",
    "total_usd": "0.0214"
  },
  "label": "weekly-rankings",
  "created_at": "2026-01-05T09:00:00Z",
  "completed_at": "2026-01-05T09:00:02Z",
  "output": {
    "results": [
      {
        "position": 1,
        "title": "5 best CRMs for small teams (and how to choose the right ...",
        "url": "https://www.insightly.com/blog/top-crms-for-small-teams/",
        "snippet": "Insightly is a modern, affordable CRM that small teams love because it's easy to use, you can customize it to your needs, and it scales with you as you grow. Read more",
        "displayed_url": "https://www.insightly.com › blog › top-crms-for-small-t..."
      },
      {
        "position": 2,
        "title": "Best CRM software for small businesses (2026)",
        "url": "https://www.enterprisenation.com/learn-something/best-crm-software-small-businesses/",
        "snippet": "22 Dec 2025 — Comprehensive set of features: HubSpot CRM lets you manage your contacts and track leads with ease. You can also integrate your email marketing. Read more",
        "displayed_url": "https://www.enterprisenation.com › learn-something › b..."
      },
      {
        "position": 3,
        "title": "10 Shortlist UK's CRM Software for Small Business (2026)",
        "url": "https://www.dynamicssquare.co.uk/blog/best-crm-software-for-small-business/",
        "snippet": "12 Jul 2025 — CRM software provides teams with access to customer information, communication history, preferences, opportunities, and previous interactions. Read more",
        "displayed_url": "https://www.dynamicssquare.co.uk › blog › best-crm-sof..."
      }
    ],
    "related_questions": [],
    "related_searches": [
      {
        "query": "Best crm for small teams"
      },
      {
        "query": "Best CRM for small business free"
      },
      {
        "query": "Best CRM for small business reddit"
      }
    ]
  },
  "reused": false
}
```

## Errors

| Status | Body | Description |
| --- | --- | --- |
| 400 | [Refused request](/docs/call-response.md#refused-request) | The request was refused. |
| 401 | [Refused request](/docs/call-response.md#refused-request) | The API key is missing, wrong or revoked (`INVALID_AUTH_TOKEN`). |
| 404 | [Refused request](/docs/call-response.md#refused-request) | Your workspace has no call with this ID (`MODEL_NOT_FOUND`). |
| 422 | [Invalid request](/docs/call-response.md#invalid-request) | The request is not valid (`VALIDATION`). |
| 429 | [Refused request](/docs/call-response.md#refused-request) | Too many requests with this API key (`RATE_LIMITED`). |
| 503 | [Refused request](/docs/call-response.md#refused-request) | Voxoria is too busy to return the call right now (`TOOL_UNAVAILABLE`). Retry shortly. |
