# CRM по номеру телефона

`GET /v1/calls/crm-entities`

**Скоуп:** `telephony` | **Авторизация:** `X-Api-Key` | **URL:** `https://vibecode.bitrix24.tech/v1`

GET /v1/calls/crm-entities?phone=%2B10000000000 вызывает telephony.externalCall.searchCrmEntities с PHONE_NUMBER. Пустой phone: 400 MISSING_REQUIRED_FIELDS. Ответ — массив карточек и ответственных, нормализованный в camelCase: crmEntityType, crmEntityId, assignedById и остальные поля Б24. Нет совпадений: пустой массив. Используйте для маршрутизации звонка. [Поиск дублей](/docs/duplicates) вызывает crm.duplicate.findbycomm и возвращает идентификаторы дублей, а не карточки и ответственного.

Ошибки: 400 неверные параметры; 401 ключ или токен; 403 scope, права Б24 или READONLY на записи; 422 отказ Б24; 429 лимиты; 502 недоступность; 503 таймаут или заморозка.

## Параметры запроса

| Поле | Тип | Обязательно | Значение |
|---|---|---|---|
| phone | string | да | Непустой номер телефона. Знак + в query кодируйте как %2B. |

## Поля ответа

| Поле | Значение |
|---|---|
| success | Успех операции |
| data | Результат, описанный выше; секреты исключены |

## Примеры

### cURL Личный ключ

```bash
curl -X GET 'https://vibecode.bitrix24.tech/v1/calls/crm-entities?phone=%2B10000000000' \
  -H 'X-Api-Key: FAKE_VIBE_API_KEY'
```

### cURL OAuth

```bash
curl -X GET 'https://vibecode.bitrix24.tech/v1/calls/crm-entities?phone=%2B10000000000' \
  -H 'X-Api-Key: FAKE_VIBE_API_KEY' \
  -H 'Authorization: Bearer FAKE_APP_SESSION_TOKEN'
```

### JavaScript Личный ключ

```javascript
const response = await fetch('https://vibecode.bitrix24.tech/v1/calls/crm-entities?phone=%2B10000000000', {
  method: 'GET',
  headers: {"X-Api-Key": "FAKE_VIBE_API_KEY"},
});
console.log(await response.json());
```

### JavaScript OAuth

```javascript
const response = await fetch('https://vibecode.bitrix24.tech/v1/calls/crm-entities?phone=%2B10000000000', {
  method: 'GET',
  headers: {"X-Api-Key": "FAKE_VIBE_API_KEY", "Authorization": "Bearer FAKE_APP_SESSION_TOKEN"},
});
console.log(await response.json());
```

Наблюдалось на тестовом портале 2026-10-02; пример содержит поля ответа без секретов.

```json
{
  "success": true,
  "data": []
}
```

## Ошибки

| HTTP | Code |
|---|---|
| 400 | INVALID_PARAMS / MISSING_REQUIRED_FIELDS / READONLY_FIELD |
| 401 | MISSING_API_KEY / INVALID_API_KEY / TOKEN_MISSING |
| 403 | SCOPE_DENIED / WRITE_BLOCKED_READONLY_KEY / BITRIX_ACCESS_DENIED |
| 422 | BITRIX_ERROR |
| 429 | RATE_LIMITED |
| 502 | BITRIX_UNAVAILABLE |
| 503 | BITRIX_TIMEOUT |

[Справочник ошибок](/docs/errors)

403, если у ключа нет скоупа telephony:

```json
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'telephony' scope"
  }
}
```

## Смотрите также

[Calls](/docs/calls)

[SIP](/docs/voximplant-sip)
