Для AI-агентов: markdown этой страницы — /docs-content/ai/audio.md индекс документации — /llms.txt

Распознавание речи

Преобразование аудио в текст через BitrixGPT 5.6 Transcribe на инфраструктуре Битрикс24 — без подключения BYOK. Расшифровка учитывается в AI-квоте портала по длительности аудио: в рамках квоты тарифа деньги с баланса не списываются, сверх квоты расход списывается с денежного баланса портала по базовой цене модели.

Whisper Large v3 Turbo выводится с платформы. С 16.11.2026 запросы с bitrix/deepdml/faster-whisper-large-v3-turbo-ct2 и без поля model обслуживает BitrixGPT 5.6 Transcribe. Старый ID продолжает приниматься; ID по умолчанию остаётся прежним. Для новых интеграций явно указывайте model=bitrix/bitrixgpt-5.6-transcribe.

Для двух сторон разговора используйте model=bitrix/bitrixgpt-6.0-diarization (BitrixGPT 6.0 Diarization) с response_format=verbose_json: segments[].speaker содержит номер стороны. Тарификация — как у Transcribe: по длительности аудио.

Скоуп: vibe:ai

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

POST /v1/audio/transcriptions

Преобразует аудиофайл в текст через BitrixGPT 5.6 Transcribe или BitrixGPT 6.0 Diarization (см. «Модели» ниже) — без подключения BYOK. Расшифровка учитывается в AI-квоте портала по длительности аудио: в рамках квоты тарифа деньги с баланса не списываются, сверх квоты расход списывается с денежного баланса портала по базовой цене модели. Принимает файл через multipart/form-data. Формат запроса и ответа совместим с POST /v1/audio/transcriptions из OpenAI API.

Ответ приходит в сыром OpenAI-формате.

Обёртки {success, data}, которая используется в остальных эндпоинтах Вайбкод — /v1/deals, /v1/tasks и других, — здесь нет.

Так сделано для совместимости с OpenAI SDK. Если у вас единый клиент с проверкой if (!response.success), добавьте для AI Router исключение.

Модели

Whisper Large v3 Turbo выводится с платформы. С 16.11.2026 запросы с bitrix/deepdml/faster-whisper-large-v3-turbo-ct2 и без поля model обслуживает BitrixGPT 5.6 Transcribe. Старый ID продолжает приниматься; ID по умолчанию остаётся прежним. Для новых интеграций явно указывайте model=bitrix/bitrixgpt-5.6-transcribe.

При обслуживании запроса заменой ответ несёт X-Model-Fallback: bitrix/deepdml/faster-whisper-large-v3-turbo-ct2, X-Model-Replacement: bitrix/bitrixgpt-5.6-transcribe и X-Model-Fallback-Reason: model_disabled. Применяются языки, обработка параметров и тарификация замены. См. жизненный цикл моделей.

Заголовки X-Model-Fallback, X-Model-Replacement и X-Model-Fallback-Reason не входят в CORS-список, поэтому в браузерном fetch недоступны — читайте их на сервере или в инструментах разработчика.

bitrix/deepdml/faster-whisper-large-v3-turbo-ct2 bitrix/bitrixgpt-5.6-transcribe bitrix/bitrixgpt-6.0-diarization
Витрина bitrix/deepdml/faster-whisper-large-v3-turbo-ct2Whisper Large v3 Turbo (выводится; замена с 16.11.2026) bitrix/bitrixgpt-5.6-transcribeBitrixGPT 5.6 Transcribe bitrix/bitrixgpt-6.0-diarizationBitrixGPT 6.0 Diarization
Языки bitrix/deepdml/faster-whisper-large-v3-turbo-ct2около 99 bitrix/bitrixgpt-5.6-transcribe25 европейских: bg, hr, cs, da, nl, en, et, fi, fr, de, el, hu, it, lv, lt, mt, pl, pt, ro, sk, sl, es, sv, ru, uk bitrix/bitrixgpt-6.0-diarization25 европейских, как у Transcribe
Влияют на распознавание bitrix/deepdml/faster-whisper-large-v3-turbo-ct2language, prompt, hotwords, temperature, vad_filter bitrix/bitrixgpt-5.6-transcribeни одно из этих полей — они принимаются и валидируются, но модель их не читает. Их имена возвращаются в заголовке ответа X-Ignored-Params bitrix/bitrixgpt-6.0-diarizationкак у Transcribe: принимаются и валидируются, но не влияют; имена в X-Ignored-Params
timestamp_granularities[] bitrix/deepdml/faster-whisper-large-v3-turbo-ct2word, segment bitrix/bitrixgpt-5.6-transcribeword; segment отбрасывается без ошибки bitrix/bitrixgpt-6.0-diarizationword принимается, но пословных таймкодов пока нет: words приходит null; segment отбрасывается без ошибки
Форматы text, srt, vtt bitrix/deepdml/faster-whisper-large-v3-turbo-ct2отдаёт модель; тарифицируются за вызов bitrix/bitrixgpt-5.6-transcribeстроит платформа из verbose_json; все форматы тарифицируются по длительности аудио bitrix/bitrixgpt-6.0-diarizationстроит платформа из verbose_json; тарифицируются по длительности аудио
Разделение говорящих bitrix/deepdml/faster-whisper-large-v3-turbo-ct2нет bitrix/bitrixgpt-5.6-transcribeнет bitrix/bitrixgpt-6.0-diarizationдве стороны разговора; метки в verbose_json

Заголовок X-Ignored-Params — информационный: тело ответа и коды ошибок не меняются. Он не входит в CORS-список, поэтому в браузерном fetch недоступен — читайте его на сервере или в инструментах разработчика.

Поля запроса (form-data)

Поле Тип Обяз. По умолч. Описание
Полеfile Типfile Обяз.да По умолч.— ОписаниеАудиофайл. Часть multipart обязана называться именно file. Отсутствующий параметр filename и пустое значение filename="" принимаются и заменяются именем audio без расширения — одинаково для Content-Type: audio/mpeg и Content-Type: application/octet-stream. Расширение в имени НЕ проверяется: контейнер определяет распознавание по содержимому, поэтому имя без расширения и редкие форматы диктофонов принимаются наравне с mp3, mpeg, mpga, mp4, m4a, wav, ogg, oga, flac, webm, opus, aac, amr, 3gp, 3gpp, wma — эти перечислены потому, что для них мы отдаём распознаванию подсказку о формате, когда её нет в самом запросе. Содержимое, которое заведомо не аудио — например, текст, PDF-документ, картинка или архив, — отклоняется с 400 invalid_audio до распознавания, какими бы ни были имя файла и Content-Type. Файл с аудиоформатом, который распознавание всё же не прочитало, возвращается как 400 ai_provider_rejected, если сервис ответил статусом 400 или 422, и как 502 ai_provider_unavailable, если сервис ответил внутренней ошибкой. Максимальный размер — 25 МБ
Полеmodel Типstring Обяз.нет По умолч.deepdml/faster-whisper-large-v3-turbo-ct2 ОписаниеДля новых интеграций указывайте bitrix/bitrixgpt-5.6-transcribe, а для меток говорящих в verbose_json — bitrix/bitrixgpt-6.0-diarization. Префикс bitrix/ опционален. ID по умолчанию не меняется; с 16.11.2026 его запросы, как и запросы с явным ID Whisper, обслуживает Transcribe. Неизвестный ID или модель, выключенная в каталоге, возвращает 404 ai_model_not_found. Модель в статусе DISABLED с доступной заменой обслуживается заменой, а без доступной замены возвращает 503 model_unavailable (тип service_unavailable). Обе ошибки возвращаются до распознавания, без списания
Полеlanguage Типstring Обяз.нет По умолч.автоопределение ОписаниеКод языка по ISO 639 (2-3 буквы): ru, en, de, fr, zh и т. п. Whisper учитывает указанный язык; Transcribe определяет язык сам. Для Transcribe: принимается и проверяется, на распознавание не влияет; имя возвращается в X-Ignored-Params.
Полеprompt Типstring Обяз.нет По умолч.— ОписаниеКонтекстная подсказка: тема разговора, стиль, правильное написание терминов. До 2000 символов, Whisper учитывает последние ~224 токена. Для Transcribe: принимается и проверяется, на распознавание не влияет; имя возвращается в X-Ignored-Params.
Полеhotwords Типstring Обяз.нет По умолч.— ОписаниеСпец-слова и термины через запятую — у Whisper повышают точность распознавания редких названий и брендов. До 500 символов. Для Transcribe: принимается и проверяется, на распознавание не влияет; имя возвращается в X-Ignored-Params.
Полеtemperature Типnumber Обяз.нет По умолч.0 ОписаниеТемпература декодера Whisper от 0 до 1. 0 — детерминированный результат, выше — больше вариативности. Значения вне диапазона отклоняются. Для Transcribe: принимается и проверяется, на распознавание не влияет; имя возвращается в X-Ignored-Params.
Полеvad_filter Типboolean Обяз.нет По умолч.— Описаниеtrue включает VAD-фильтр: Whisper вырезает тишину перед распознаванием — меньше галлюцинаций на записях с паузами. Для Transcribe: принимается и проверяется, на распознавание не влияет; имя возвращается в X-Ignored-Params.
Полеtimestamp_granularities[] Типstring Обяз.нет По умолч.segment ОписаниеДетализация меток времени: word или segment (поле можно повторять). Только с response_format=verbose_json. С word каждый сегмент дополняется массивом words с временными границами и вероятностью каждого слова. У Transcribe segment отбрасывается без ошибки; word работает.
Полеresponse_format Типstring Обяз.нет По умолч.json ОписаниеФормат результата: json, text, srt, vtt, verbose_json

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/audio/transcriptions \
  -H "X-Api-Key: YOUR_API_KEY" \
  -F "file=@call-recording.mp3" \
  -F "model=bitrix/bitrixgpt-5.6-transcribe" \
  -F "response_format=json"

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/audio/transcriptions \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -F "file=@call-recording.mp3" \
  -F "model=bitrix/bitrixgpt-5.6-transcribe" \
  -F "response_format=json"

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

javascript
const formData = new FormData()
formData.append('file', audioFile)  // объект File или Blob
formData.append('model', 'bitrix/bitrixgpt-5.6-transcribe')
formData.append('response_format', 'json')

const res = await fetch('https://vibecode.bitrix24.tech/v1/audio/transcriptions', {
  method: 'POST',
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
  body: formData,
})

const result = await res.json()
console.log('Распознанный текст:', result.text)

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

javascript
const formData = new FormData()
formData.append('file', audioFile)
formData.append('model', 'bitrix/bitrixgpt-5.6-transcribe')

const res = await fetch('https://vibecode.bitrix24.tech/v1/audio/transcriptions', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
  body: formData,
})

const result = await res.json()
console.log('Текст:', result.text)

Поля ответа

Структура ответа зависит от response_format. Формат json (по умолчанию) — самый компактный, verbose_json — с временными границами.

`response_format: json`

Поле Тип Описание
Полеtext Типstring ОписаниеРаспознанный текст целиком

`response_format: text`

Ответ — обычная строка с распознанным текстом, без JSON-обёртки.

`response_format: verbose_json`

Поле Тип Описание
Полеtask Типstring ОписаниеТип задачи: transcribe
Полеlanguage Типstring ОписаниеКод определённого или указанного языка
Полеduration Типnumber ОписаниеДлительность аудио в секундах
Полеtext Типstring ОписаниеРаспознанный текст целиком
Полеusage Типobject | null ОписаниеМетаданные использования модели. null, если модель их не возвращает
Полеwords Типarray ОписаниеПословные временные границы на уровне всего ответа. Пустой массив, если пословные границы не запрошены
Полеsegments Типarray ОписаниеСегменты с временными границами и метаданными распознавания
Полеsegments[].id Типnumber ОписаниеПорядковый номер сегмента
Полеsegments[].seek Типnumber ОписаниеВнутренний сдвиг окна распознавания Whisper
Полеsegments[].start Типnumber ОписаниеНачало сегмента в секундах
Полеsegments[].end Типnumber ОписаниеКонец сегмента в секундах
Полеsegments[].text Типstring ОписаниеТекст сегмента
Полеsegments[].speaker Типstring | null ОписаниеСторона разговора у Diarization: "1" или "2". Может отсутствовать или быть null, если не определена
Полеsegments[].source_id Типstring ОписаниеИдентификатор источника у Diarization: L/R для стерео или M:1/M:2 для моно. Может отсутствовать; для подписей используйте speaker
Полеsegments[].tokens Типarray ОписаниеТокены модели для текста сегмента (целые числа)
Полеsegments[].temperature Типnumber ОписаниеТемпература декодирования, применённая моделью
Полеsegments[].avg_logprob Типnumber ОписаниеСредняя логарифмическая вероятность токенов сегмента — метрика уверенности
Полеsegments[].compression_ratio Типnumber ОписаниеКоэффициент сжатия текста сегмента
Полеsegments[].no_speech_prob Типnumber ОписаниеВероятность того, что в сегменте нет речи
Полеsegments[].words Типarray ОписаниеПословные временные границы внутри сегмента. Пустой массив, если не запрошены
Полеsegments[].emotion Типstring | null ОписаниеОпределённая эмоция сегмента. null, если не определена

`response_format: srt` / `vtt`

Ответ — субтитры в формате SubRip Text или WebVTT.

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

response_format: json:

JSON
{
  "text": "Здравствуйте, ООО Вектор. Хотим CRM на 50 пользователей, бюджет до 500 тысяч в месяц."
}

response_format: verbose_json:

JSON
{
  "task": "transcribe",
  "language": "ru",
  "duration": 8.42,
  "text": "Здравствуйте, ООО Вектор. Хотим CRM на 50 пользователей, бюджет до 500 тысяч в месяц.",
  "usage": null,
  "words": [],
  "segments": [
    {
      "id": 0,
      "seek": 0,
      "start": 0.0,
      "end": 3.2,
      "text": "Здравствуйте, ООО Вектор.",
      "tokens": [50365, 2425, 11, 341, 307],
      "temperature": 0.0,
      "avg_logprob": -0.38,
      "compression_ratio": 1.12,
      "no_speech_prob": 0.02,
      "words": [],
      "emotion": null
    },
    {
      "id": 1,
      "seek": 320,
      "start": 3.2,
      "end": 8.42,
      "text": "Хотим CRM на 50 пользователей, бюджет до 500 тысяч в месяц.",
      "tokens": [50414, 1003, 13767, 295, 1500],
      "temperature": 0.0,
      "avg_logprob": -0.41,
      "compression_ratio": 1.20,
      "no_speech_prob": 0.01,
      "words": [],
      "emotion": null
    }
  ]
}

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

400 no_file — поле file не передано:

JSON
{
  "error": {
    "message": "Audio file is required. Send as multipart/form-data with field \"file\".",
    "type": "invalid_request_error",
    "code": "no_file"
  }
}

Ошибки

HTTP Код Описание
HTTP400 Кодno_file ОписаниеПоле file не передано в multipart/form-data, либо файловая часть названа иначе (например audio). Размер такой части на ответ не влияет: имя читается из заголовка части, до содержимого
HTTP400 Кодempty_file ОписаниеПоле file передано, но файл пустой (0 байт). Частая причина: curl -F "file=path" без префикса @ — curl отправляет строку пути вместо содержимого файла
HTTP400 Кодinvalid_prompt ОписаниеПоле prompt длиннее 2000 символов
HTTP400 Кодinvalid_hotwords ОписаниеПоле hotwords длиннее 500 символов
HTTP400 Кодinvalid_temperature ОписаниеПоле temperature не число или вне диапазона 0..1
HTTP400 Кодinvalid_vad_filter ОписаниеПоле vad_filter не true и не false
HTTP400 Кодinvalid_timestamp_granularities ОписаниеЗначение не word/segment, либо формат ответа не verbose_json
HTTP400 Кодinvalid_language ОписаниеКод языка не соответствует формату ISO 639 (2-3 буквы)
HTTP400 Кодinvalid_idempotency_key ОписаниеЗаголовок Idempotency-Key не проходит проверку: длина вне 1–255 символов или символ вне набора [A-Za-z0-9_.:-]. Распознавания и списания нет. Поле param ответа — Idempotency-Key
HTTP400 Кодinvalid_audio ОписаниеСодержимое поля file заведомо не аудио — например, текст, PDF-документ, картинка или архив. Проверка идёт по содержимому до распознавания, имя файла и Content-Type на неё не влияют, списания нет. Поле param ответа — file. Повторять запрос без замены файла бессмысленно
HTTP400 Кодai_provider_rejected ОписаниеСервис распознавания отклонил само содержимое запроса (его ответ — 400 или 422). Поле providerStatusCode несёт исходный статус. Повторять запрос без изменений бессмысленно
HTTP402 Кодai_credentials_not_configured ОписаниеНа платформе не настроен Bitrix-провайдер
HTTP402 Кодinsufficient_balance ОписаниеPREPAY-счёт ушёл за овердрафт — проверяется ДО вызова распознавания (только PLATFORM/PORTAL-ключи, BYOK бесплатен и не проверяется)
HTTP402 Кодaccount_frozen ОписаниеСчёт портала заморожен за долг, и расшифровка выходит за месячную AI-квоту тарифа — расход сверх квоты платит баланс. Расшифровка внутри квоты, ключом подписки Cowork/Code и на собственном ключе провайдера под заморозкой продолжает работать. Пока сужение отказа не дошло до портала, заморозка закрывает расшифровку целиком и отвечает конвертом V1 с кодом ACCOUNT_FROZEN в верхнем регистре — состав отказа
HTTP402 Кодai_quota_exhausted ОписаниеМесячная AI-квота портала исчерпана — см. «Известные особенности» ниже
HTTP402 Кодcompany_budget_exhausted ОписаниеИсчерпан месячный бюджет расхода компании, который задаёт администратор портала. Поле scope называет пробитый бюджет: USER — личный бюджет вызывающего, PORTAL — бюджет всего портала. Поле canRequest говорит, можно ли запросить увеличение: у личного бюджета true, у портального false — его поднимает только администратор. Отказ приходит только на вызовах, которые списывают средства с баланса портала. Расшифровка внутри тарифной квоты, ключом подписки Cowork/Code и на собственном ключе продолжает работать
HTTP403 Кодscope_missing ОписаниеAPI-ключу не хватает скоупа vibe:ai
HTTP404 Кодai_model_not_found ОписаниеНеизвестный ID или модель, выключенная в каталоге. Проверка идёт до распознавания, списания нет
HTTP409 Кодidempotency_in_progress ОписаниеПервый запрос с этим Idempotency-Key и этим файлом ещё распознаётся. Списания нет. Повторите тем же ключом через число секунд из Retry-After — не больше 10
HTTP422 Кодidempotency_key_reused ОписаниеЭтот Idempotency-Key в течение последних 72 часов уже использован с другим файлом. Распознавания и списания нет — для нового аудио нужен новый ключ. Поле param ответа — Idempotency-Key
HTTP503 Кодmodel_unavailable ОписаниеМодель в статусе DISABLED без доступной замены. Тип ошибки — service_unavailable. Проверка идёт до распознавания, списания нет. При доступной замене запрос обслуживает она
HTTP413 Кодrequest_too_large ОписаниеПревышен один из лимитов multipart: файл больше 25 МБ, либо в запросе больше 16 текстовых полей или 24 частей, либо одно поле больше 64 КБ
HTTP413 Кодai_payload_too_large ОписаниеСервис распознавания отклонил запрос по размеру. Поле providerStatusCode несёт исходный статус 413. Повтор того же запроса получит тот же ответ — разбейте файл на части
HTTP502 Кодai_provider_unavailable ОписаниеСервис распознавания вернул ошибку авторизации или внутреннюю ошибку, в том числе на повреждённом аудиофайле с корректным заголовком формата. Исходный статус приходит в поле providerStatusCode, если сервис ответил HTTP-статусом. Отказ по содержимому запроса приходит отдельным кодом ai_provider_rejected
HTTP502 Кодai_provider_network ОписаниеПлатформа не смогла соединиться с сервисом распознавания или соединение оборвалось до ответа. Поля providerStatusCode у этого ответа нет: сервис не ответил. Повторите запрос
HTTP503 Кодai_provider_timeout ОписаниеСервис распознавания не ответил в течение 15 минут — файл слишком длинный или сервис перегружен. Для записей длиннее ~30 минут разбивайте на части
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP429 Кодai_provider_cooldown ОписаниеКластер распознавания временно недоступен, и платформа держит паузу, чтобы повторы его не добивали. Запрос не выполнялся, списания нет — повторите его через число секунд из Retry-After. Заголовков X-RateLimit-Scope и X-AI-Admission у этого ответа нет
HTTP429 Кодai_congested ОписаниеПул AI-кластера перегружен. Запрос не выполнялся, списания нет, повторите его по заголовку Retry-After. Ответ несёт заголовок X-AI-Admission: shed, а не X-RateLimit-Scope
HTTP429 Кодai_pacing_limited ОписаниеПревышено суточное или недельное окно равномерного расходования квоты. Это не исчерпание квоты — повторите запрос по заголовку Retry-After. Подробнее — «Равномерное расходование»

Полный список общих ошибок API — Ошибки.

Идемпотентность

Передайте необязательный заголовок Idempotency-Key, чтобы безопасно повторять расшифровку того же файла. Если ответ на первый запрос потерялся (обрыв сети, таймаут), повтор с тем же ключом и тем же файлом распознаёт аудио заново, но второй раз ничего не списывает: ни AI-квоту портала, ни деньги с баланса, ни квоту подписки Cowork/Code. Ответ такого повтора несёт заголовок Idempotent-Replayed: true.

  • Ключ — строка 1–255 символов из набора [A-Za-z0-9_.:-]. Для записи, которую вы режете на части, подходит форма <id записи>:<id дорожки>:<номер части>, например rec-8f2c:mic:12.
  • Область действия ключа — портал и пользователь, на которого ложится расход, а без пользователя — API-ключ. Новый API-ключ того же пользователя повтор не ломает.
  • Повтор бесплатен в течение 72 часов после успешного вызова со списанием. Позже тот же ключ проходит как новый вызов и списывается.
  • Бесплатный повтор проходит и при исчерпанной квоте: за этот файл уже заплачено.
  • Бесплатных повторов одного файла — не больше трёх. Четвёртый и следующие повторы с тем же ключом обрабатываются и оплачиваются как обычный вызов, со всеми проверками квоты и баланса.
  • Если первый вызов завершился ошибкой, ключ освобождается, и повтор проходит как новый вызов со списанием.
  • Если первый вызов ничего не списал — например, шёл на собственном ключе провайдера, — повтор тоже проходит как обычный вызов, без заголовка Idempotent-Replayed.
  • Платформа не хранит ни текст расшифровки, ни аудио — только отпечатки ключа и файла. Поэтому ответ повтора — это новая расшифровка того же файла.
  • Без заголовка Idempotency-Key поведение не меняется.

Отказы по ключу — 400 invalid_idempotency_key, 409 idempotency_in_progress и 422 idempotency_key_reused — описаны в разделе «Ошибки».

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

BitrixGPT 6.0 Diarization размечает две стороны разговора. Стерео разделяется по каналам, моно — на две стороны. Номера говорящих действуют в пределах одного ответа и обозначают стороны разговора, а не людей или роли. Повтор по Idempotency-Key — новая расшифровка, нумерация в ней может отличаться. Ответ 200 может прийти без меток или с частичной разметкой; успешная расшифровка всё равно тарифицируется. Верхнеуровневый text может содержать таймкоды и подписи говорящих, например [00:00] Спикер 1:; их формат и язык не фиксированы. json и text отдают его как есть, а построенные платформой srt/vtt подписей говорящих не содержат. Для разбора по репликам используйте verbose_json: segments[].speaker, segments[].start, segments[].end и segments[].text — текст реплики без подписей. Пословных таймкодов у модели пока нет: с timestamp_granularities[]=word поле words приходит null. Тарификация — как у Transcribe: по длительности аудио, с учётом AI-квоты портала.

Transcribe определяет язык автоматически. Он поддерживает 25 европейских языков из таблицы выше вместо примерно 99 у Whisper. Разделения говорящих нет. language, prompt, hotwords, temperature и vad_filter проверяются, но на распознавание не влияют; имена переданных полей возвращаются в X-Ignored-Params. Подсказки, влиявшие на Whisper, перестают влиять, когда запрос обслуживает Transcribe. Перед переходом проверьте записи и нужные языки.

В рамках квоты — без списаний, сверх квоты — по базовой цене модели. BitrixGPT 5.6 Transcribe работает на инфраструктуре Битрикс24. Все его форматы, включая построенные платформой text, srt и vtt, тарифицируются по длительности аудио и учитываются в месячной AI-квоте портала. Пока расход укладывается в квоту тарифа, деньги с баланса портала не списываются. Сверх квоты расход списывается с денежного баланса портала по базовой цене модели из каталога. На порталах с включённым контролем квоты запрос может вернуть 402 ai_quota_exhausted, когда месячный лимит исчерпан. Поле reason различает три случая: breaker — сработал часовой предохранитель расходов сверх квоты, wallet_empty — квота исчерпана и на балансе портала нет средств, wallet_off — расход сверх квоты для портала недоступен. Поле resetAt — момент, когда запросы снова начнут проходить, для wallet_off оно может отсутствовать. В ветке wallet_empty ответ может дополнительно нести строку hint с подсказкой и ссылку topupUrl на пополнение баланса — оба поля появляются, когда на платформе включены принудительный контроль квоты и подсказка о пополнении, поэтому читайте их как необязательные. Поле hint в этом ответе — строка. Когда у портала нет оплаченного доступа к AI-моделям, ответ с reason: "wallet_off" дополнительно несёт details.learnMoreUrl — страницу с описанием подписки или тарифа Битрикс24, в которые входит AI, а поле message называет нужный продукт. При других причинах wallet_off поля details.learnMoreUrl нет.

Ключ подписки Cowork/Code считается отдельно. Вызов ключом со скоупом vibe:cowork в AI-квоту аккаунта не попадает. Если подписка активна и администратор платформы назначил доступной вам модели расшифровки цену за минуту аудио или за вызов, такой вызов расходует квоту подписки: при исчерпании окна ручка отвечает 402 с кодом cowork_quota_exhausted, заголовком Retry-After и полями window (5h, week или month), resetAt и nextTier. Пока цена не назначена, расшифровка таким ключом не тарифицируется. У Whisper форматы text, srt и vtt длительность не возвращают, поэтому тарифицируются по цене за вызов. У BitrixGPT 5.6 Transcribe они строятся платформой и тарифицируются по длительности.

Отключение Cowork/Code на уровне платформы управляет продуктовыми возможностями, но не тарификацией AI-запросов уже выданного ключа. При активной подписке расшифровка продолжает расходовать её квоту, как и чат; отключение продукта не переводит этот расход в кошелёк портала. Без активной подписки расшифровка по-прежнему не расходует квоту подписки, а поведение обычного пути тарификации сохраняется.

Лимит размера — 25 МБ. Файл сверх лимита отклоняется целиком — 413 request_too_large, списания нет. Для длинных записей разбивайте файл на части до 25 МБ и склеивайте результаты на стороне клиента. Один час mp3 128 кбит/с примерно 60 МБ — придётся резать.

Тайм-аут запроса — 15 минут. Расшифровка длится примерно 5-15 % от длины аудио. Файл на 5 минут (5-7 МБ mp3) расшифровывается за 15-45 секунд. При превышении тайм-аута возвращается 503 ai_provider_timeout.

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