## Start an auto-call with speech synthesis

`POST /v1/calls/auto-call`

Dials `toNumber` and, after the call is answered, plays back synthesized text (`textToPronounce`). No operator is involved. Used for automated notifications, reminders, and robotic call campaigns.

## Request fields (body)

| Parameter | Type | Required | Default | Description |
|----------|-----|:-----:|-----------|---------|
| `fromLine` | string | yes | — | Outbound call line ID. List of lines — [`GET /v1/voximplant-lines`](../lines/voximplant.md) |
| `toNumber` | string | yes | — | Phone number in international format |
| `textToPronounce` | string | yes | — | Text for speech synthesis |
| `voice` | string | no | account language voice | Voice ID. List of available voices — [`GET /v1/calls/voices`](../analytics/voices.md) |

## Examples

### curl — personal key

```bash
curl -X POST https://vibecode.bitrix24.com/v1/calls/auto-call \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "fromLine": "YOUR_LINE_ID",
    "toNumber": "+12025550123",
    "textToPronounce": "Hello! Your order is ready for pickup."
  }'
```

### curl — OAuth application

```bash
curl -X POST https://vibecode.bitrix24.com/v1/calls/auto-call \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "fromLine": "YOUR_LINE_ID",
    "toNumber": "+12025550124",
    "textToPronounce": "Hello! Your order is ready for pickup."
  }'
```

### JavaScript — personal key

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/calls/auto-call', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    fromLine: 'YOUR_LINE_ID',
    toNumber: '+12025550125',
    textToPronounce: 'Hello! Your order is ready for pickup.',
  }),
})

const { success, data } = await res.json()
const callId = data.callId
```

### JavaScript — OAuth application

```javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/calls/auto-call', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    fromLine: 'YOUR_LINE_ID',
    toNumber: '+12025550126',
    textToPronounce: 'Hello! Your order is ready for pickup.',
  }),
})

const { success, data } = await res.json()
const callId = data.callId
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `result` | boolean | `true` when the call is initiated successfully |
| `callId` | string | Identifier of the initiated call with the `infocall.` prefix |

## Response example

HTTP 200 — call initiated:

```json
{
  "success": true,
  "data": {
    "result": true,
    "callId": "infocall.a3f2c1e4b8d06f7a9e2c5d1b4f8a3e06.1777974900"
  }
}
```

## Error response example

400 — required parameters not provided:

```json
{
  "success": false,
  "error": {
    "code": "MISSING_PARAMS",
    "message": "Required: fromLine (string — ID from GET /v1/voximplant-lines), toNumber (string), textToPronounce (string)"
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 400 | `MISSING_PARAMS` | `fromLine`, `toNumber`, or `textToPronounce` not provided |
| 401 | `MISSING_API_KEY` | `X-Api-Key` header not provided |
| 401 | `INVALID_API_KEY` | Invalid API key |
| 401 | `TOKEN_MISSING` | The key has no configured Bitrix24 tokens |
| 401 | `KEY_INACTIVE` | API key is inactive or revoked |
| 403 | `SCOPE_DENIED` | The key lacks the `telephony` scope |
| 422 | `BITRIX_ERROR` | Bitrix24 returned an error (message in `error.message`) |
| 429 | `RATE_LIMITED` | Request limit exceeded |
| 502 | `BITRIX_UNAVAILABLE` | Bitrix24 is unavailable |

Full list of common API errors — [Errors](/docs/errors).

## Known specifics

**Default voice.** If `voice` is not specified, Bitrix24 uses the voice matching the Bitrix24 account language. For Russian-language accounts — `ruinternalfemale`. Full list of available voices — [`GET /v1/calls/voices`](../analytics/voices.md).

**Monthly limit exceeded.** When the auto-call quota is exhausted, Bitrix24 returns `BITRIX_ERROR` with the message `"Infocall limit for this month is exceeded"`. The quota resets at the start of the next billing period.

**Base line is not supported.** An attempt to use the Bitrix24 account base line instead of a dedicated one returns `BITRIX_ERROR: "Making infocall using LINK_BASE_NUMBER is not allowed"`.

**Record in statistics.** After the call ends, it appears in the [statistics](../analytics/statistics.md) with `CALL_TYPE: "5"`.

## See also

- [Callback](./callback.md)
- [Auto-call with an audio file](./auto-call-audio.md)
- [Voices reference](../analytics/voices.md)
- [Call statistics](../analytics/statistics.md)
- [Voximplant line list](../lines/voximplant.md)
