API
Загружайте записи и получайте текст из своих программ. Базовый адрес: https://api.transcribe.skud24.ru
Авторизация
Каждый запрос подписывается ключом в заголовке Authorization: Bearer trk_…. Ключ показывается один раз при выдаче, храните его в секрете. Минуты списываются с баланса владельца ключа так же, как при загрузке через сайт. Управлять ключами и смотреть баланс можно в кабинете.
Методы
| Метод | Назначение |
|---|---|
POST /v1/jobs | Загрузить запись, multipart: file, consent=true, language=ru. Ответ 201 с объектом задачи. |
GET /v1/jobs?limit=50&offset=0 | Список задач: {items, total}. |
GET /v1/jobs/:id | Состояние задачи. |
GET /v1/jobs/:id/result.:fmt | Результат в формате txt, srt, vtt, md, docx или json. |
DELETE /v1/jobs/:id | Удалить данные задачи. Если обработка не начиналась, минуты возвращаются. |
GET /v1/account | Email, бесплатные и платные минуты, статус аккаунта. |
GET /v1/packages | Тарифы и лимиты бесплатного уровня, без авторизации. |
Согласие на обработку
В каждой загрузке нужно передать consent=true. Этим вы подтверждаете, что вправе обрабатывать запись и отвечаете за её содержимое и персональные данные в ней. Без этого поля задача не принимается и вернётся ошибка consent_required. Время согласия, версия оферты и IP-адрес сохраняются.
Загрузка
curl -X POST https://api.transcribe.skud24.ru/v1/jobs \ -H "Authorization: Bearer trk_ВАШ_КЛЮЧ" \ -F "file=@record.mp3" \ -F "consent=true" \ -F "language=ru"
Пример ответа:
{
"id": "9b2f6c1e-…",
"status": "queued",
"queue": "free",
"filename": "record.mp3",
"sizeBytes": 4812034,
"durationSec": 180.0,
"progress": 0.0,
"minutesCharged": 3,
"formats": [],
"error": null,
"source": "api",
"createdAt": "2026-10-09T10:00:00.000Z",
"startedAt": null,
"finishedAt": null,
"expiresAt": "2026-10-11T10:00:00.000Z"
}Статусы и результат
queued— в очереди. Задачи с платных минут идут в приоритетной очереди.processing— идёт обработка, ход выполнения в полеprogressот 0 до 1.done— готово, вformatsперечислены доступные форматы.failed— ошибка обработки, причина вerror, минуты возвращаются.deletedиexpired— данные удалены вами или по сроку хранения.
curl https://api.transcribe.skud24.ru/v1/jobs/ID_ЗАДАЧИ \ -H "Authorization: Bearer trk_ВАШ_КЛЮЧ" curl -OJ https://api.transcribe.skud24.ru/v1/jobs/ID_ЗАДАЧИ/result.srt \ -H "Authorization: Bearer trk_ВАШ_КЛЮЧ"
Опрашивайте задачу не чаще одного раза в несколько секунд. Если результат запрошен раньше времени, придёт not_ready.
Пример на Python
import time
import requests
API = "https://api.transcribe.skud24.ru"
HEAD = {"Authorization": "Bearer trk_ВАШ_КЛЮЧ"}
with open("record.mp3", "rb") as f:
r = requests.post(
f"{API}/v1/jobs",
headers=HEAD,
files={"file": f},
data={"consent": "true", "language": "ru"},
)
r.raise_for_status()
job = r.json()
while job["status"] in ("queued", "processing"):
time.sleep(5)
job = requests.get(f"{API}/v1/jobs/{job['id']}", headers=HEAD).json()
if job["status"] == "done":
text = requests.get(f"{API}/v1/jobs/{job['id']}/result.txt", headers=HEAD).text
print(text)
else:
print("Ошибка:", job["error"])Форматы и лимиты
- Аудио: mp3, wav, ogg, m4a, opus, flac, aac, webm. Язык: русский (
ru). - Результат: txt, srt, vtt, md, docx, json.
- Максимальные длительность и размер файла зависят от тарифа и возвращаются в
GET /v1/packagesи на странице кабинета. - Файлы и результаты хранятся 2 дня, затем удаляются автоматически. Поле
expiresAtпоказывает момент удаления. - При частых запросах возвращается 429, повторите позже.
Ошибки
Все ошибки приходят в виде {"statusCode", "code", "message"}. Ориентируйтесь на поле code.
| HTTP | code | Что значит |
|---|---|---|
| 400 | consent_required | Нужно подтвердить согласие на обработку записи. |
| 400 | not_audio | Это не аудиофайл. Поддерживаются mp3, wav, ogg, m4a, opus, flac, aac, webm. |
| 400 | too_long | Запись длиннее допустимой. Разрежьте её на части и загрузите по очереди. |
| 400 | too_large | Файл больше допустимого размера. Сожмите запись или разрежьте её на части. |
| 402 | insufficient_minutes | Не хватает минут на балансе. Купите пакет минут и повторите загрузку. |
| 403 | blocked | Аккаунт заблокирован. Если это ошибка, напишите в поддержку. |
| 404 | not_ready | Результат ещё не готов. Дождитесь окончания обработки. |
| 410 | expired | Срок хранения истёк, файл и результат удалены. |
| 401 | unauthorized | Ключ неверный, отозван или не передан. |
| 429 | rate_limited | Слишком много запросов. |