ДокументацияОшибки

Ошибки

Разберитесь в кодах ошибок API и транскрибации. Узнайте, когда исправить запрос, а когда повторить попытку.

Сначала определите, где произошла ошибка. Если API не принял запрос, вы получите HTTP-ошибку. Если запрос прошёл, но расшифровать запись не удалось, у созданной задачи будет status=failed.

Формат ошибки

Для всех ошибок запросов к /v1 API использует один формат:

{
  "error": {
    "code": "insufficient_minutes",
    "message": "Not enough minutes",
    "retryable": false,
    "action_url": "https://transcript1.com/dashboard/billing",
    "minutes_needed": 20,
    "minutes_remaining": 3
  }
}

Логику обработки привязывайте к code, а message показывайте пользователю. На текст сообщения полагаться нельзя: мы можем его изменить. Значение retryable=true означает, что повторный запрос позже может пройти.

В зависимости от ошибки рядом с retryable могут быть дополнительные поля:

ПолеКод ошибкиЧто содержит
action_urlinsufficient_minutesСсылку для подключения тарифа или покупки минут.
minutes_needed, minutes_remaininginsufficient_minutesСколько минут требуется и сколько осталось. Если длительность ещё неизвестна, в первом поле будет null.
supported_platformsunsupported_platformСписок допустимых платформ: ["youtube", "x", "tiktok", "instagram", "facebook", "bluesky", "twitch", "dailymotion", "pinterest", "linkedin", "snapchat"].
missing_chunksupload_incompleteИндексы недостающих частей файла.
max_bytesmedia_too_largeВаш лимит размера файла в байтах.
paramsinvalid_requestОшибки в полях тела запроса или query-параметрах. Ключ объекта — имя поля, значение — описание проблемы.

Ошибки запроса

HTTP-кодcodeПовторить без изменений?Причина и действие
400, 422invalid_requestНетНе хватает параметра или поля, либо значение недопустимо. Например, нельзя сочетать diarize с source: "captions", а reuse_recent — с webhook_url. Невалидный JSON даёт тот же код.
422invalid_urlНетПроверьте ссылку и её соответствие platform. Подойдут YouTube, X, TikTok, Instagram, Facebook, Bluesky и другие платформы из раздела «Источники и параметры».
422unsupported_platformНетAPI не поддерживает указанное значение platform.
422unsupported_mediaНетРасширение загруженного файла не входит в список поддерживаемых.
401unauthorizedНетКлюч или токен не передан, неверен, истёк или отозван. Для загрузки — токен неверен или истёк.
403insufficient_scopeНетВ OAuth-токене нет нужного разрешения: transcriptions:read или transcriptions:write.
403email_not_verifiedНетДля создания задачи сначала подтвердите почту.
402insufficient_minutesНетНа балансе 0 минут или их не хватает на запись.
402no_active_planНетДля покупки дополнительных минут нужен активный платный тариф. Ошибку возвращает только платёжный эндпоинт личного кабинета, не эндпоинты транскрибации.
404not_foundНетЗадача не найдена или принадлежит другой команде.
409upload_incompleteНетЗагрузите недостающие части файла и снова вызовите завершение загрузки.
409invalid_stateНетЗадача больше не ждёт загрузки. Отправлять части или завершать её уже нельзя.
409idempotency_conflictНетЭтот Idempotency-Key ранее передали с другим набором параметров.
413media_too_largeНетРазмер файла превышает ваш лимит — см. «Загрузка файлов».
413invalid_requestНетТело JSON превышает 1 МБ. Для слишком большого файла используется другой код: media_too_large.
429rate_limitedДаИсчерпан лимит запросов в минуту. Число секунд до повтора указано в Retry-After.
429too_many_active_jobsДаДостигнут лимит выполняющихся задач или открытых загрузок. Подождите столько секунд, сколько указано в Retry-After.
500internal_errorДаОшибка на стороне transcript1. Попробуйте ещё раз чуть позже.
503service_unavailableДаСервис временно недоступен. Попробуйте ещё раз чуть позже.

Для браузерных запросов с cookie входа вместо Bearer-аутентификации проверяем также источник запроса. Вызов с другого сайта вернёт 403 forbidden_origin. К API-запросам с заголовком Authorization эта проверка не относится.

В любом ответе 429 есть Retry-After — время ожидания в секундах. Значения лимитов приведены в разделе «Тарифы и лимиты».

Когда повторять запрос

  • Автоматически повторяйте запрос только при retryable=true. Это ошибки rate_limited, too_many_active_jobs, internal_error и service_unavailable. Выдержите паузу из Retry-After, а если заголовка нет, увеличивайте интервал между попытками.
  • Для повторного POST /v1/transcriptions сохраняйте прежний Idempotency-Key. Если первый запрос успел пройти, новая попытка не приведёт к повторному списанию.
  • Остальные ошибки требуют исправления запроса. Отправлять его без изменений не стоит.

Если транскрибация завершилась с ошибкой

Задача со status=failed содержит error: { "code", "message" }. HTTP-запрос к этому моменту мог давно завершиться успешно. Поэтому проверяйте error, когда запрашиваете статус или получаете вебхук transcription.failed.

error.codeЧто случилосьЧто делать
media_unavailableВидео удалено, не существует или недоступно.Проверьте URL. Повтор без изменений не поможет.
media_privateДоступ к видео закрыт.Нужен публичный пост. Для YouTube подойдёт также видео с доступом по ссылке.
login_requiredДля просмотра нужен вход в аккаунт.Не повторяйте: это постоянная ошибка, автоматических повторов нет.
no_audioУ видео нет звуковой дорожки.Не повторяйте: это постоянная ошибка, автоматических повторов нет.
age_restrictedПросмотр ограничен по возрасту.Вместо повторного запроса загрузите файл.
live_streamТрансляция ещё идёт или не началась.Попробуйте после её завершения.
no_captionsВ режиме captions не нашлось подходящей дорожки субтитров.Смените source на "auto" или "stt".
media_too_longЗапись длиннее 5 часов — лимита распознавания речи.Разделите запись. Повтор целиком не поможет.
unsupported_mediaНе удалось прочитать файл или в нём нет аудиодорожки.Отправьте файл в поддерживаемом формате.
no_speechРечь не обнаружена.Не повторяйте.
unsupported_languageЯзык записи не поддерживается.Укажите в language поддерживаемый код или "auto". Без изменений не повторяйте.
insufficient_minutesК моменту списания на балансе не хватило минут.Пополните баланс и попробуйте снова.
fetch_failedНесколько попыток скачать запись не удались.Попробуйте ещё раз позже.
transcription_failedРаспознать речь не удалось даже после повторных попыток.Попробуйте ещё раз позже.

Если транскрибация завершилась с ошибкой или вы её отменили, платить не нужно. Уже списанные минуты вернём на баланс.

Дата обновления 19 октября 2026 г.