# List callbacks

`GET https://api.morevoice.ai/v1/callbacks`

Returns a page of `Callback` objects, newest first. Pass `next_cursor` as `starting_after` for the next page; the SDKs iterate every page for you.

Authenticate with a secret API key: `Authorization: Bearer $MOREVOICE_API_KEY`.

Operation ID: `callbacks_list`.

## Parameters

### Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `limit` | `integer` | no | How many objects to return, 1–100 (default 20). |
| `starting_after` | `string` | no | A cursor (`next_cursor`) or object ID: return the objects after it (older). |
| `ending_before` | `string` | no | A cursor or object ID: return the objects before it (newer). |
| `status` | `"pending" \| "offered" \| "dialing" \| "connected" \| "completed" \| "failed" \| "cancelled" \| "expired"` | no | Only callbacks in this status: `pending` (waiting for its time), `offered` (ringing an agent), `dialing`, `connected` (on the call back), `completed`, `failed` (attempts used up), `cancelled` or `expired` (past its window, or too old). |
| `source` | `"queue" \| "ivr" \| "flow" \| "ai" \| "web" \| "manual" \| "campaign" \| "voicemail" \| …` | no | Only callbacks from this source. |
| `queue_id` | `string` | no | Only callbacks routed to this queue. |
| `agent_id` | `string` | no | Only callbacks assigned to this agent. |
| `phone` | `string` | no | Only callbacks for this number (any common form). |

### Headers

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `MoreVoice-Version` | `string` | no | The API version to use for this request. Defaults to the version the API key is pinned to. |

## Responses

### 200 OK

OK Returns `CallbackList`.

| Field | Type | Description |
| --- | --- | --- |
| `object` | `"list"` | — |
| `data` | `Callback[]` | — |
| `has_more` | `boolean` | Whether more objects follow in the requested direction. |
| `next_cursor` | `string \| null` | Pass as starting_after (or ending_before, when paging backwards) to continue; null on the last page. |
| `url` | `string` | The list's path. |

Example:

```json
{
  "data": [
    {
      "agent_id": null,
      "assistant_id": null,
      "attempts": 0,
      "call_id": null,
      "completed_at": null,
      "context": {
        "web": null
      },
      "created": "2026-11-03T09:14:22.000Z",
      "due_at": "2026-11-03T10:00:00.000Z",
      "id": "cb_2dXk9QmZ4rTv",
      "last_attempt_at": null,
      "last_result": null,
      "livemode": true,
      "max_attempts": 3,
      "merged_requests": 0,
      "metadata": {
        "crm_ticket": "T-1042"
      },
      "name": "Dana Levi",
      "notes": "Asked about the renewal offer.",
      "object": "callback",
      "origin_call_id": null,
      "phone": "+972501234567",
      "priority": 5,
      "queue_id": "q_3hRf8Kd2LmPq",
      "route": "agent_queue",
      "site_id": null,
      "sla_at": "2026-11-03T11:00:00.000Z",
      "source": "api",
      "status": "pending",
      "summary": null,
      "updated": "2026-11-03T09:14:22.000Z",
      "window_end": null
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "object": "list",
  "url": "/v1/callbacks"
}
```

### 400 Bad Request

The request is invalid: a parameter is missing, malformed or unknown, or the version header is unknown. Returns `ErrorEnvelope`.

### 401 Unauthorized

No valid API key was sent. Returns `ErrorEnvelope`.

### 403 Forbidden

The key may not do this (a missing scope, a plan limit, or a compliance block). Returns `ErrorEnvelope`.

### 429 Too Many Requests

Too many requests, or no call capacity right now. Retry after the Retry-After delay. Returns `ErrorEnvelope`.

### 500 Internal Server Error

Something went wrong on MoreVoice's side. Retry with the same Idempotency-Key. Returns `ErrorEnvelope`.

## Code samples

**TypeScript**

```ts
import MoreVoice from "@morevoice/sdk";

const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment

for await (const callback of mv.callbacks.list()) {
	console.log(callback);
}
```

**Python**

```python
from morevoice import MoreVoice

client = MoreVoice()  # MOREVOICE_API_KEY from the environment

for callback in client.callbacks.list():
    print(callback)
```

**cURL**

```sh
curl https://api.morevoice.ai/v1/callbacks \
  -H "Authorization: Bearer $MOREVOICE_API_KEY"
```
