К содержимому

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/accountEmail, бесплатные и платные минуты, статус аккаунта.
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.

HTTPcodeЧто значит
400consent_requiredНужно подтвердить согласие на обработку записи.
400not_audioЭто не аудиофайл. Поддерживаются mp3, wav, ogg, m4a, opus, flac, aac, webm.
400too_longЗапись длиннее допустимой. Разрежьте её на части и загрузите по очереди.
400too_largeФайл больше допустимого размера. Сожмите запись или разрежьте её на части.
402insufficient_minutesНе хватает минут на балансе. Купите пакет минут и повторите загрузку.
403blockedАккаунт заблокирован. Если это ошибка, напишите в поддержку.
404not_readyРезультат ещё не готов. Дождитесь окончания обработки.
410expiredСрок хранения истёк, файл и результат удалены.
401unauthorizedКлюч неверный, отозван или не передан.
429rate_limitedСлишком много запросов.
API расшифровки аудио · Стенограмма