Передавайте ключ в каждом запросе в заголовке Authorization: Bearer …. Ключ с полным доступом отправляет, читает, экспортирует и удаляет записи. Ключ только для чтения получает список, статус, текст, экспорт и расход времени.
Ключ видит только записи, отправленные через API и MCP. Записи с сайта и из Telegram ему недоступны.
Ключ показывается один раз. Если он потерялся, отзовите его и создайте новый. Не храните ключи в коде браузера или мобильного приложения, в адресах, репозиториях и логах.
Отправка записи
Отправьте файл в поле file формы multipart. Необязательные поля: language (auto, ru или en; по умолчанию auto) и external_id — ваш идентификатор до 200 символов, например номер звонка. Он вернётся в ответах и уведомлениях.
Вместо файла можно передать JSON с audio_url — прямой публичной HTTPS-ссылкой на файл, путь которой заканчивается расширением медиафайла. Подписанные параметры допустимы; переадресации, логин в адресе и внутренние адреса — нет. Запрос может длиться до 15 минут: поставьте клиенту такой таймаут и не меняйте ссылку при повторе.
Подходят аудио MP3, M4A, WAV, AAC, OGG, OPUS, FLAC, AMR и WMA, а также видео MP4, MOV, WEBM, MKV и 3GP. Файл — до 1 ГБ, запись — до 4 ч. Записи аккаунта распознаются по очереди, по одной.
Статус и результат
Статус
Что значит
queued
ждёт очереди
transcribing
распознаём
ready
текст готов
failed
не получилось — причина в error
Готовая запись содержит text — весь текст, segments — реплики с speaker_id, start и end в секундах — и speakers — имена участников. Если распознать не удалось, причину объясняет error.code, а время не списывается.
Уведомления
Укажите адрес в Профиле, в разделе «API и MCP». Мы отправим POST-запрос при событиях transcription.completed и transcription.failed. В событии — id записи, статус и ваш external_id; текст получите запросом с ключом.
Проверяйте подпись до разбора JSON. Заголовок Slowo-Signature имеет вид t=TIMESTAMP,v1=HEX, где v1 — HMAC-SHA256 строки TIMESTAMP + "." + тело запроса с вашим секретом в качестве ключа. Сравнивайте подписи за постоянное время и отклоняйте запросы старше пяти минут.
Уведомление может прийти повторно: отсеивайте дубли по Slowo-Event-Id и отвечайте коротким ответом 2xx — до 64 КиБ, без переадресации. Если сервер не ответил за 10 секунд или ответил иначе, мы попробуем снова — всего до 10 попыток: первая пауза 30 секунд, дальше она удваивается, но не превышает часа. Недоставленные уведомления видны в «API и MCP», там их можно отправить снова.
Экспорт
Готовую запись можно скачать в формате txt, docx, pdf или srt. Экспорт не списывает время.
Каждая отправка требует заголовок Idempotency-Key — UUID, который вы создаёте и сохраняете до запроса. Если ответ потерялся, повторите запрос с тем же UUID и теми же данными: вы получите ту же запись без второго списания. Для новой записи нужен новый UUID.
Повтор работает 24 часа. Позже, до 30 дней с первой отправки, тот же UUID вернёт 409 IDEMPOTENCY_EXPIRED, для удалённой записи — 410 RESOURCE_DELETED, а с другими данными — 409 IDEMPOTENCY_CONFLICT. Через 30 дней ключ забывается.
Ошибки приходят в одном формате. Опирайтесь на code, а request_id (он же в заголовке X-Request-Id) пришлите в поддержку.
Исправьте запрос или выберите файл в пределах лимита.
401, 403
Проверьте ключ, его срок и уровень доступа. Повтор не поможет.
409
Конфликт — смотрите код ошибки. Не меняйте ключ идемпотентности у неподтверждённой отправки.
429
Подождите и повторите позже.
422 и 502 REMOTE_REDIRECT
Файл по ссылке не скачался: нужна прямая ссылка без переадресации и сжатия. Исправьте ссылку и отправьте запрос с новым UUID.
Другие 5xx и сбой сети
Повторите позже с тем же ключом идемпотентности и теми же данными.
Оплата и лимиты
Сайт, API и MCP используют один баланс и одни пакеты. Время списывается один раз — по измеренной длительности и только за распознанную запись. Запись должна целиком помещаться в доступное время, иначе она завершится ошибкой INSUFFICIENT_BALANCE — частичного текста API не возвращает. Пополнение баланса не перезапускает такую запись: отправьте её снова с новым UUID.
GET /usage показывает доступное и зарезервированное время, число распознанных записей и списанное за них время — всего и отдельно для API и MCP, а также лимиты аккаунта: запросы в минуту, очередь, размер и длительность файла.
Данные и версии
Записи API хранятся в вашем аккаунте и видны в «Записях». Запрос DELETE /transcriptions/{id} удаляет файл и текст; во время распознавания удалить запись нельзя. Для учёта остаются только сведения о расходе времени, повторах и уведомлениях. Подробнее — в политике конфиденциальности и оферте.
Версия API — в адресе: /v1. Игнорируйте незнакомые поля в ответах и обрабатывайте незнакомые коды ошибок как общую ошибку.
Справочник
Точные схемы запросов и ответов — в спецификации OpenAPI: openapi.json.