
## Расшифровать аудиофайл

`POST /v1/chats/files/:fileId/transcribe`

Запускает расшифровку речи в аудио- или видеофайле сообщения — например, в голосовом сообщении или видеокружке. Расшифровку выполняет искусственный интеллект (AI) портала — CoPilot: вызов ставит задачу в очередь и сразу отвечает её состоянием, а текст появляется, когда задача закончится.

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|---------|
| `fileId` (path) | number | да | ID файла чата. Получить: `files[].id` в [загрузке чата](/docs/chats/messages/load) или в [ленте в режиме v2](/docs/chats/messages/list) |

Параметры строки запроса не принимаются и отклоняются с `400 INVALID_PARAMS`.

## Поля запроса (body)

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|---------|
| `messageId` | number | да | ID сообщения, к которому прикреплён файл. Получить: `messages[].id` в [загрузке чата](/docs/chats/messages/load) или в [ленте в режиме v2](/docs/chats/messages/list) |

Другие поля тела отклоняются с `400 INVALID_PARAMS`.

## Примеры

### curl — личный ключ

```bash
curl -X POST https://vibecode.bitrix24.tech/v1/chats/files/7701/transcribe \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"messageId": 1003}'
```

### curl — OAuth-приложение

```bash
curl -X POST https://vibecode.bitrix24.tech/v1/chats/files/7701/transcribe \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"messageId": 1003}'
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/files/7701/transcribe', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ messageId: 1003 }),
})

const { success, data } = await res.json()
console.log('Состояние:', data.status, data.transcriptText)
```

### JavaScript — OAuth-приложение

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/files/7701/transcribe', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ messageId: 1003 }),
})

const { success, data } = await res.json()
console.log('Состояние:', data.status, data.transcriptText)
```

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

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.fileId` | number | ID файла |
| `data.status` | string | Состояние расшифровки: `Pending` — задача в работе, `Success` — текст готов, `Error` — расшифровка не удалась |
| `data.transcriptText` | string\|null | Текст расшифровки. `null`, пока текста нет |

## Пример ответа

```json
{
  "success": true,
  "data": {
    "fileId": 7701,
    "status": "Pending",
    "transcriptText": null
  }
}
```

## Пример ответа при ошибке

422 — файл не аудио и не видео:

```json
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "FILE_NOT_TRANSCRIBABLE",
    "b24Code": "FILE_NOT_TRANSCRIBABLE"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | `fileId` не является положительным целым числом, нет `messageId` или он не положительное целое число, передано другое поле тела или параметр строки запроса. Проверяется до обращения к Битрикс24 |
| 404 | `ENTITY_NOT_FOUND` | Битрикс24 вернул «не найдено» — нет файла или сообщения. Код портала — в `error.b24Code` |
| 422 | `BITRIX_ERROR` | `error.b24Code` = `FILE_NOT_TRANSCRIBABLE` — файл не аудио и не видео |
| 422 | `BITRIX_ERROR` | `error.b24Code` = `FILE_SIZE_EXCEEDED` — файл больше 25 МБ |
| 422 | `BITRIX_ERROR` | `error.b24Code` = `TRANSCRIPTION_NOT_ACTIVE` — расшифровка выключена на портале |
| 422 | `BITRIX_ERROR` | `error.b24Code` = `LIMIT_IS_EXCEEDED_BAAS` — исчерпан лимит AI-запросов |
| 422 | `BITRIX_ERROR` | `error.b24Code` = `TRANSCRIPTION_SERVICE_ERROR` — сбой сервиса расшифровки |
| 422 | `BITRIX_ERROR` | `error.b24Code` = `FILE_ACCESS_ERROR` — нет доступа к файлу |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `im` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ только для чтения — вызов запускает задачу AI и может сделать владельца ключа участником чата |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов Битрикс24 |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

**Вызов запускает AI портала.** Расшифровка расходует лимит AI-запросов портала. Повторный вызов для того же файла новую задачу не ставит: пока расшифровка идёт, вернётся `Pending`, после — `Success` и текст.

**Вызов может сделать вас участником.** Если чат сообщения разрешает автовступление — например, чат комментариев, коллаб или чат задачи, — вызов добавляет текущего пользователя в участники, как открытие чата в интерфейсе Битрикс24.

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

- [Файлы чатов](/docs/chats/files)
- [Загрузка чата](/docs/chats/messages/load)
- [Сохранить файлы на Диск](/docs/chats/files/save)
