Транскрибация

API транскрипции аудио и видео

Эндпоинты защищены HMAC‑аутентификацией (см. Аутентификация). Все пути ниже начинаются с /v2.

Общий поток

  1. (Опционально) Рассчитать стоимость: POST /transcriptions/calculateКонтракт
  2. Создать транскрипцию и поставить задание в очередь: POST /transcriptionsКонтракт
  3. Проверять статус и забирать ссылки на результаты: GET /transcriptions/{id} где {id} — идентификатор транскрипции — Контракт. Либо получать уведомления по вебхукам (события transcription.completed, transcription.failed).
  4. (Опционально) После завершения транскрипции — запросы к ИИ по тексту: POST /transcriptions/{id}/chat/completions (см. раздел ниже). Список моделей и общий чат — LLM.

Примеры

Все защищённые запросы требуют заголовков X-Public-Key, X-Timestamp, X-Signature.

1) Рассчитать стоимость — POST /v2/transcriptions/calculate

Контракт

TS=$(date +%s)
BODY='{"priority":"queue","duration":"00:05"}'
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS -X POST "https://api.transcription.aiesa.ru/api/v2/transcriptions/calculate" \
  -H "Content-Type: application/json" \
  -H "X-Public-Key: $API_PUBLIC" \
  -H "X-Timestamp: $TS" \
  -H "X-Signature: $SIG" \
  -d "$BODY"

Пример ответа 200 (сокращено):

{
  "durationSeconds": 120.5,
  "durationMinutes": 2.01,
  "minutesBilled": 3,
  "cost": 0.05,
  "balance": {
    "balance": 15000.5,
    "currency": "RUB",
    "credit_limit": 50000,
    "overdraft_enabled": true,
    "overdraft_used": 0,
    "available_credit": 65000.5,
    "tariff_plan": "regional_plus",
    "usage_current_month": {
      "minutes_lightning": 1250,
      "minutes_queue": 8500,
      "total_cost": 3125.5
    }
  }
}

2) Создать транскрипцию — POST /v2/transcriptions

Контракт

Вариант А: загрузка файла (multipart/form-data, поле file)

TS=$(date +%s)
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS -X POST "https://api.transcription.aiesa.ru/api/v2/transcriptions" \
  -H "X-Public-Key: $API_PUBLIC" \
  -H "X-Timestamp: $TS" \
  -H "X-Signature: $SIG" \
  -F "file=@/path/to/meeting_record.mp3" \
  -F "language=ru" \
  -F "priority=queue" \
  -F "terms=AIESA, SLA, Whisper" \
  -F "prompt=Сделай саммари встречи"

Вариант Б: загрузка по URL (source_url)

TS=$(date +%s)
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS -X POST "https://api.transcription.aiesa.ru/api/v2/transcriptions" \
  -H "X-Public-Key: $API_PUBLIC" \
  -H "X-Timestamp: $TS" \
  -H "X-Signature: $SIG" \
  -F "source_url=https://example.com/audio.mp3" \
  -F "language=en" \
  -F "priority=lightning" \
  -F "terms=AIESA, roadmap, KPI"

Пример ответа 201 (сокращено):

{
  "transcription_id": "2f0b2f2a-5b07-4c3e-8a42-5c8a3f2b1e9d"
}

3) Получить транскрипцию — GET /v2/transcriptions/{id}

Контракт

TS=$(date +%s)
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS "https://api.transcription.aiesa.ru/api/v2/transcriptions/2f0b2f2a-5b07-4c3e-8a42-5c8a3f2b1e9d" \
  -H "X-Public-Key: $API_PUBLIC" \
  -H "X-Timestamp: $TS" \
  -H "X-Signature: $SIG"

Пример ответа — статус «В процессе»:

{
  "data": {
    "id": "2f0b2f2a-5b07-4c3e-8a42-5c8a3f2b1e9d",
    "status": "processing",
    "progress": 65,
    "duration_seconds": 125.5,
    "duration_minutes": 2.09,
    "minutes_billed": 3,
    "priority_type": "queue",
    "filename": "meeting_record.mp3",
    "file_size": 15728640,
    "source_type": "upload",
    "language": "ru",
    "results": null,
    "ai_analysis": null,
    "error_message": null,
    "created_at": "2025-10-29T11:22:33Z",
    "started_at": "2025-10-29T11:23:01Z",
    "completed_at": null,
    "billed_at": null
  }
}

Пример ответа — статус «Готово» (с результатами):

{
  "data": {
    "id": "2f0b2f2a-5b07-4c3e-8a42-5c8a3f2b1e9d",
    "status": "completed",
    "progress": 100,
    "duration_seconds": 125.5,
    "duration_minutes": 2.09,
    "minutes_billed": 3,
    "cost": 2.1,
    "priority_type": "queue",
    "filename": "meeting_record.mp3",
    "file_size": 15728640,
    "source_type": "upload",
    "language": "ru",
    "results": {
      "text": "https://cdn.aiesa.ru/transcriptions/2f0b2f2a/text.txt",
      "json": "https://cdn.aiesa.ru/transcriptions/2f0b2f2a/result.json",
      "pdf": "https://cdn.aiesa.ru/transcriptions/2f0b2f2a/report.pdf"
    },
    "ai_analysis": {
      "model": "aiesa-mini",
      "prompt": "Ключевые моменты разговора",
      "text": "... краткое резюме ..."
    },
    "error_message": null,
    "created_at": "2025-10-29T11:22:33Z",
    "started_at": "2025-10-29T11:23:01Z",
    "completed_at": "2025-10-29T11:24:15Z",
    "billed_at": "2025-10-29T11:24:30Z"
  }
}

Чат по тексту транскрипции

После того как транскрипция завершена (status: completed и есть текст), можно отправлять запросы к ИИ по её тексту с сохранением контекста диалога.

Эндпоинт: POST /v2/transcriptions/{id}/chat/completions

Контракт

Тело запроса (JSON):

ПолеТипОбязательноеОписание
messagesarray of stringдаСообщения пользователя
modelstringнетaiesa-mini (по умолчанию) или aiesa-pro
temperaturenumberнет0–2, по умолчанию 0.1
maxTokens / max_tokensintegerнет1–32000, по умолчанию из конфигурации API

Поведение: текст транскрипции подставляется в контекст LLM; история диалога хранится по транскрипции. Для aiesa-mini — 5 бесплатных запросов на транскрипцию; для aiesa-pro — платные. Если при создании была передана ai_prompt, она учитывается как один из пяти бесплатных запросов.

Формат ответа: как у POST /v2/chat/completions (стриминг, OpenAI-совместимые поля: id, object, created, model, choices, usage).

TS=$(date +%s)
BODY='{"messages":["Кратко перечисли ключевые решения из встречи"],"model":"aiesa-mini"}'
SIG=$(printf "%s\n%s" "$API_PUBLIC" "$TS" | openssl dgst -sha256 -hmac "$API_SECRET" -hex | sed 's/^.* //')

curl -sS -X POST "https://api.transcription.aiesa.ru/api/v2/transcriptions/2f0b2f2a-5b07-4c3e-8a42-5c8a3f2b1e9d/chat/completions" \
  -H "Content-Type: application/json" \
  -H "X-Public-Key: $API_PUBLIC" \
  -H "X-Timestamp: $TS" \
  -H "X-Signature: $SIG" \
  -d "$BODY"

Коды ошибок: 400 — транскрипция не готова к чату; 402 — недостаточно средств; 403 — нет доступа; 404 — не найдена.

На этой странице