# Call lists

## What this covers

Upload people to call (CSV, Excel, a Google Sheet or JSON rows), pick an agent and a phone line, set calling hours and start. Each person is called through the same door as an outbound voice session, a few at a time. The do-not-call list is here too.

Every example below runs as written once these are exported:

```bash
export DVAARIK_API_KEY="dvk_..."        # project API key, server side only
export DVAARIK_TOKEN="<account access token>"   # console session, from POST /console/auth/login
export LIST_ID="<uuid>"
export PHONE_NUMBER="<uuid>"
export PROJECT_ID="<uuid>"
```

A `<value>` inside a JSON body is a value you supply. Responses are JSON; every error body is `{ "detail": … }`. Each schema is expanded once per page, where it first appears.

### Machine door errors

Raised by the project-key dependency before any handler on this page runs.

| Status | Cause |
| --- | --- |
| `401` | `Missing API key` or `Invalid API key` — the `X-Api-Key` header is absent, unknown, or revoked. |
| `403` | `API key is not scoped to a project`, `Project unavailable`, or `API key is missing the required scope '<scope>'`. |
| `429` | The project's `api_rpm` ceiling was exceeded. Honour `Retry-After`; `X-RateLimit-*` headers are on every response. |

### Account door errors

| Status | Cause |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. Refresh once, then re-authenticate. |
| `403` | The account is suspended or its email is not verified. |

## Operations — project API key

Call these from your own server with a project key. Never from a browser or a mobile bundle.

### GET `/v2/call-lists`

List the project's call lists, newest first, with how far each has got.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `listCallLists` |
| Success | `200` `CallListPage` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no |  |
| `offset` | query | integer | no |  |

#### `CallListPage`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | CallListInfo[] | yes |  |

#### `CallListInfo`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `agent_id` | uuid or null | yes |  |
| `counts` | CallListCounts | yes |  |
| `created_at` | date-time | yes |  |
| `finished_at` | date-time or null | yes |  |
| `from` | string or null | no |  |
| `id` | uuid | yes |  |
| `name` | string | yes |  |
| `pause_reason` | string or null | yes |  |
| `settings` | object | yes |  |
| `started_at` | date-time or null | yes |  |
| `status` | string | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/v2/call-lists?limit=20" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists`

Make a call list for one agent and one phone line. Nobody is called until you start it.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `createCallList` |
| Success | `201` `CallListInfo` |

Request body: `CallListCreate`.

#### `CallListCreate`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `agent_id` | uuid | yes |  |
| `from` | string | yes |  |
| `name` | string | yes | min length 1; max length 120 |
| `settings` | CallListSettings | no |  |

#### `CallListSettings`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `calls_at_once` | integer or null | no |  |
| `days` | string[] | no |  |
| `default_country_code` | string | no | default "91" |
| `max_attempts` | integer | no | default 1 |
| `retry_after_minutes` | integer | no | default 60 |
| `timezone` | string | no | default "Asia/Kolkata" |
| `window_end` | string | no | default "21:00" |
| `window_start` | string | no | default "09:00" |

#### `CallListCounts`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `calling` | integer | no | default 0 |
| `done` | integer | no | default 0 |
| `skipped` | integer | no | default 0 |
| `total` | integer | no | default 0 |
| `waiting` | integer | no | default 0 |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists" \
  -H "X-Api-Key: $DVAARIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "<agent_id uuid>",
    "from": "<from>",
    "name": "<name>"
  }'
```

### DELETE `/v2/call-lists/{list_id}`

Delete a list and everyone on it. Pause or cancel it first.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `deleteCallList` |
| Success | `204` `no body` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X DELETE "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### GET `/v2/call-lists/{list_id}`

Read one call list: its settings, its counts and why it paused, if it did.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `getCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### PATCH `/v2/call-lists/{list_id}`

Change a list's name, agent, phone line or settings. Only while it is a draft or paused.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `updateCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

Request body: `CallListUpdate`.

#### `CallListUpdate`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `agent_id` | uuid or null | no |  |
| `from` | string or null | no |  |
| `name` | string or null | no |  |
| `settings` | CallListSettings or null | no |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X PATCH "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/cancel`

End the list. Everyone not called yet is skipped; calls already ringing finish.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `cancelCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/cancel" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/pause`

Stop placing new calls. Calls already ringing finish.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `pauseCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/pause" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/preview/file`

Show how a file would be read (phone column, variables, skipped rows) without saving anything.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `previewCallListFile` |
| Success | `200` `CallListPreview` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `filename` | query | string | no |  |
| `phone_column` | query | string or null | no |  |

#### `CallListPreview`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `duplicates` | integer | yes |  |
| `headers` | string[] | yes |  |
| `invalid` | integer | yes |  |
| `issues` | string[] | yes |  |
| `phone_column` | string | yes |  |
| `sample` | CallListPreviewRow[] | yes |  |
| `unused_columns` | string[] | yes |  |
| `would_add` | integer | yes |  |

#### `CallListPreviewRow`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `extra` | object | yes |  |
| `to` | string | yes |  |
| `variables` | object | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/preview/file" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/preview/sheet`

Show how a Google Sheet would be read without saving anything.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `previewCallListSheet` |
| Success | `200` `CallListPreview` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

Request body: `CallListSheetIn`.

#### `CallListSheetIn`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `phone_column` | string or null | no |  |
| `url` | string | yes | min length 1; max length 2000 |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/preview/sheet" \
  -H "X-Api-Key: $DVAARIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "<url>"
  }'
```

### GET `/v2/call-lists/{list_id}/results.csv`

Everyone on the list with how their call went, the call id, connected seconds and cost, as a CSV.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `downloadCallListResults` |
| Success | `200` `no body` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/results.csv" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/resume`

Carry on after a pause, once whatever paused it is fixed.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `resumeCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/resume" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### GET `/v2/call-lists/{list_id}/rows`

Page through the people with their status, tries and outcome.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `listCallListRows` |
| Success | `200` `CallListRowPage` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `status_filter` | query | string or null | no |  |
| `limit` | query | integer | no |  |
| `offset` | query | integer | no |  |

#### `CallListRowPage`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | CallListRowInfo[] | yes |  |
| `next_offset` | integer or null | yes |  |

#### `CallListRowInfo`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `attempts` | integer | yes |  |
| `call_id` | uuid or null | yes |  |
| `detail` | string or null | yes |  |
| `extra` | object | yes |  |
| `id` | uuid | yes |  |
| `next_attempt_at` | date-time or null | yes |  |
| `outcome` | string or null | yes |  |
| `position` | integer | yes |  |
| `status` | string | yes |  |
| `to` | string | yes |  |
| `variables` | object | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/rows?limit=20" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/rows`

Add up to 1,000 people as JSON. Variable names must match the agent's exactly.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `addCallListRows` |
| Success | `200` `CallListRowsAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

Request body: `CallListRowsIn`.

#### `CallListRowsIn`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `rows` | CallListRowIn[] | yes | min 1 item(s); max 1000 item(s) |

#### `CallListRowIn`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `metadata` | object | no |  |
| `to` | string | yes | min length 1; max length 40 |
| `variables` | object<string> | no |  |

#### `CallListRowsAdded`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `added` | integer | yes |  |
| `counts` | CallListCounts | yes |  |
| `duplicates` | integer | yes |  |
| `invalid` | integer | yes |  |
| `issues` | string[] | yes |  |
| `on_do_not_call` | integer | yes |  |
| `phone_column` | string or null | yes |  |
| `unused_columns` | string[] | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/rows" \
  -H "X-Api-Key: $DVAARIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rows": []
  }'
```

### POST `/v2/call-lists/{list_id}/rows/file`

Add people from a .csv or .xlsx sent as the raw request body (at most 5 MB, 10,000 people per list).

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `uploadCallListFile` |
| Success | `200` `CallListRowsAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `filename` | query | string | no |  |
| `phone_column` | query | string or null | no |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/rows/file" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/call-lists/{list_id}/rows/sheet`

Add people from a Google Sheet shared as 'Anyone with the link can view'.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `importCallListSheet` |
| Success | `200` `CallListRowsAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

Request body: `CallListSheetIn`.

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/rows/sheet" \
  -H "X-Api-Key: $DVAARIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "<url>"
  }'
```

### POST `/v2/call-lists/{list_id}/start`

Start calling. Needs at least one person waiting, an active agent and a line that can call out.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `startCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/call-lists/$LIST_ID/start" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### GET `/v2/do-not-call`

List the numbers this project never calls.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `listDoNotCall` |
| Success | `200` `DoNotCallPage` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `limit` | query | integer | no |  |
| `offset` | query | integer | no |  |

#### `DoNotCallPage`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | DoNotCallEntry[] | yes |  |
| `next_offset` | integer or null | yes |  |

#### `DoNotCallEntry`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `created_at` | date-time | yes |  |
| `note` | string or null | yes |  |
| `phone_number` | string | yes |  |
| `source` | string | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/v2/do-not-call?limit=20" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/do-not-call`

Add numbers this project must never call. Lists skip them; a single outbound call to one is refused.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `addDoNotCall` |
| Success | `200` `DoNotCallAdded` |

Request body: `DoNotCallIn`.

#### `DoNotCallIn`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `default_country_code` | string | no | default "91" |
| `note` | string or null | no |  |
| `numbers` | string[] | yes | min 1 item(s); max 1000 item(s) |

#### `DoNotCallAdded`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `added` | integer | yes |  |
| `already` | integer | yes |  |
| `invalid` | string[] | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/do-not-call" \
  -H "X-Api-Key: $DVAARIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": []
  }'
```

### DELETE `/v2/do-not-call/{phone_number}`

Take one number off the do-not-call list.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `removeDoNotCall` |
| Success | `204` `no body` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `phone_number` | path | string | yes |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X DELETE "https://api.developers.dvaarik.com/v2/do-not-call/$PHONE_NUMBER" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

### POST `/v2/do-not-call/file`

Add do-not-call numbers from a .csv or .xlsx sent as the raw request body.

| Detail | Value |
| --- | --- |
| Door | Project API key — `X-Api-Key: $DVAARIK_API_KEY` |
| Operation | `uploadDoNotCallFile` |
| Success | `200` `DoNotCallAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `filename` | query | string | no |  |
| `phone_column` | query | string or null | no |  |
| `default_country_code` | query | string | no |  |

| Error | When |
| --- | --- |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the machine-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/v2/do-not-call/file" \
  -H "X-Api-Key: $DVAARIK_API_KEY"
```

## Operations — account session

The same resource through the console door. These are what the web console calls; both doors return the same shapes.

### GET `/console/v2/projects/{project_id}/call-lists`

List the project's call lists, newest first, with how far each has got.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleListCallLists` |
| Success | `200` `CallListPage` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `project_id` | path | uuid | yes |  |
| `limit` | query | integer | no |  |
| `offset` | query | integer | no |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists?limit=20" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists`

Make a call list for one agent and one phone line. Nobody is called until you start it.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleCreateCallList` |
| Success | `201` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `project_id` | path | uuid | yes |  |

Request body: `CallListCreate`.

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists" \
  -H "Authorization: Bearer $DVAARIK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "<agent_id uuid>",
    "from": "<from>",
    "name": "<name>"
  }'
```

### DELETE `/console/v2/projects/{project_id}/call-lists/{list_id}`

Delete a list and everyone on it. Pause or cancel it first.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleDeleteCallList` |
| Success | `204` `no body` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X DELETE "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### GET `/console/v2/projects/{project_id}/call-lists/{list_id}`

Read one call list: its settings, its counts and why it paused, if it did.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleGetCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### PATCH `/console/v2/projects/{project_id}/call-lists/{list_id}`

Change a list's name, agent, phone line or settings. Only while it is a draft or paused.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleUpdateCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

Request body: `CallListUpdate`.

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X PATCH "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/cancel`

End the list. Everyone not called yet is skipped; calls already ringing finish.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleCancelCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/cancel" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/pause`

Stop placing new calls. Calls already ringing finish.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consolePauseCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/pause" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/preview/file`

Show how a file would be read (phone column, variables, skipped rows) without saving anything.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consolePreviewCallListFile` |
| Success | `200` `CallListPreview` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |
| `filename` | query | string | no |  |
| `phone_column` | query | string or null | no |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/preview/file" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/preview/sheet`

Show how a Google Sheet would be read without saving anything.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consolePreviewCallListSheet` |
| Success | `200` `CallListPreview` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

Request body: `CallListSheetIn`.

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/preview/sheet" \
  -H "Authorization: Bearer $DVAARIK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "<url>"
  }'
```

### GET `/console/v2/projects/{project_id}/call-lists/{list_id}/results.csv`

Everyone on the list with how their call went, the call id, connected seconds and cost, as a CSV.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleDownloadCallListResults` |
| Success | `200` `no body` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/results.csv" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/resume`

Carry on after a pause, once whatever paused it is fixed.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleResumeCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/resume" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### GET `/console/v2/projects/{project_id}/call-lists/{list_id}/rows`

Page through the people with their status, tries and outcome.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleListCallListRows` |
| Success | `200` `CallListRowPage` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |
| `status_filter` | query | string or null | no |  |
| `limit` | query | integer | no |  |
| `offset` | query | integer | no |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/rows?limit=20" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/rows`

Add up to 1,000 people as JSON. Variable names must match the agent's exactly.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleAddCallListRows` |
| Success | `200` `CallListRowsAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

Request body: `CallListRowsIn`.

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/rows" \
  -H "Authorization: Bearer $DVAARIK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "rows": []
  }'
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/rows/file`

Add people from a .csv or .xlsx sent as the raw request body (at most 5 MB, 10,000 people per list).

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleUploadCallListFile` |
| Success | `200` `CallListRowsAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |
| `filename` | query | string | no |  |
| `phone_column` | query | string or null | no |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/rows/file" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/rows/sheet`

Add people from a Google Sheet shared as 'Anyone with the link can view'.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleImportCallListSheet` |
| Success | `200` `CallListRowsAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

Request body: `CallListSheetIn`.

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/rows/sheet" \
  -H "Authorization: Bearer $DVAARIK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "<url>"
  }'
```

### POST `/console/v2/projects/{project_id}/call-lists/{list_id}/start`

Start calling. Needs at least one person waiting, an active agent and a line that can call out.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleStartCallList` |
| Success | `200` `CallListInfo` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `list_id` | path | uuid | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/call-lists/$LIST_ID/start" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### GET `/console/v2/projects/{project_id}/do-not-call`

List the numbers this project never calls.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleListDoNotCall` |
| Success | `200` `DoNotCallPage` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `project_id` | path | uuid | yes |  |
| `limit` | query | integer | no |  |
| `offset` | query | integer | no |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X GET "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/do-not-call?limit=20" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/do-not-call`

Add numbers this project must never call. Lists skip them; a single outbound call to one is refused.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleAddDoNotCall` |
| Success | `200` `DoNotCallAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `project_id` | path | uuid | yes |  |

Request body: `DoNotCallIn`.

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/do-not-call" \
  -H "Authorization: Bearer $DVAARIK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": []
  }'
```

### DELETE `/console/v2/projects/{project_id}/do-not-call/{phone_number}`

Take one number off the do-not-call list.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleRemoveDoNotCall` |
| Success | `204` `no body` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `phone_number` | path | string | yes |  |
| `project_id` | path | uuid | yes |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X DELETE "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/do-not-call/$PHONE_NUMBER" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

### POST `/console/v2/projects/{project_id}/do-not-call/file`

Add do-not-call numbers from a .csv or .xlsx sent as the raw request body.

| Detail | Value |
| --- | --- |
| Door | Account session — `Authorization: Bearer $DVAARIK_TOKEN` |
| Operation | `consoleUploadDoNotCallFile` |
| Success | `200` `DoNotCallAdded` |

| Parameter | In | Type | Required | Notes |
| --- | --- | --- | --- | --- |
| `project_id` | path | uuid | yes |  |
| `filename` | query | string | no |  |
| `phone_column` | query | string or null | no |  |
| `default_country_code` | query | string | no |  |

| Error | When |
| --- | --- |
| `401` | No account session was presented, or it is invalid or expired. |
| `403` | The account is suspended or its email is not verified. |
| `404` | The project or the addressed resource does not exist for this owner. A resource owned by another developer is deliberately indistinguishable from one that never existed. |
| `409` | The project or resource is in a state that refuses this change. |
| `422` | The request body or query is not valid. `detail` is an array of `{loc, msg, type}` and `loc` names the offending field. |

Plus the account-door errors above. Full list on the [errors page](/docs/errors).

```bash
curl -sS -X POST "https://api.developers.dvaarik.com/console/v2/projects/$PROJECT_ID/do-not-call/file" \
  -H "Authorization: Bearer $DVAARIK_TOKEN"
```

---

Source: https://developers.dvaarik.com/docs/api/call-lists · every page as one file: https://developers.dvaarik.com/docs.md
