Принять асинхронный STT-запрос
const url = 'https://stt.techcon-ml.ru/transcribe/audio_url';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"url":"https://storage.yandexcloud.net/techconimg/example-ru-speech.wav","metadata":{"source":"demo-request","locale":"ru-RU"},"webhook":{"url":"https://integrator.example/hooks/stt","secret":"stt-demo-secret"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://stt.techcon-ml.ru/transcribe/audio_url \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "url": "https://storage.yandexcloud.net/techconimg/example-ru-speech.wav", "metadata": { "source": "demo-request", "locale": "ru-RU" }, "webhook": { "url": "https://integrator.example/hooks/stt", "secret": "stt-demo-secret" } }'Принимает STT-задачу в общий постоянно доступный слой. После 202 Accepted интегратор должен сохранить task_id, status_url и estimated_wait_seconds. Первый полезный опрос результата обычно имеет смысл не раньше estimated_wait_seconds: около 60 секунд при уже запущенном worker и около 180 секунд при холодном или неопределённом состоянии. webhook может быть дополнительным сигналом, но не заменяет GET /result/{task_id}.
Authorizations
Заголовок раздела «Authorizations»Request Bodyrequired
Заголовок раздела «Request Bodyrequired»object
HTTPS URL на аудиофайл по адресу, который проходит общую проверку https:// и имени хоста.
Example
https://storage.yandexcloud.net/techconimg/example-ru-speech.wavДополнительные метаданные, которые будут сохранены рядом с задачей.
object
object
HTTPS URL для уведомления о результате.
Example
https://integrator.example/hooks/sttНеобязательный секрет для подписи или проверки webhook.
Example
stt-demo-secretExample
{ "url": "https://storage.yandexcloud.net/techconimg/example-ru-speech.wav", "metadata": { "source": "demo-request", "locale": "ru-RU" }, "webhook": { "url": "https://integrator.example/hooks/stt", "secret": "stt-demo-secret" }}Responses
Заголовок раздела «Responses»Запрос принят слоем приёма и поставлен в очередь.
object
object
object
object
Example
{ "data": { "status": "queued", "status_url": "/result/stt-123", "estimated_wait_seconds": 180, "webhook": { "status": "pending" } }}Bearer-токен отсутствует или неверен.
object
object
Example
{ "ok": false, "error": { "code": "UNAUTHORIZED", "message": "Bearer-токен отсутствует или неверен." }}Входные данные не прошли проверку.
object
object
Example
{ "ok": false, "error": { "code": "VALIDATION_ERROR", "message": "Поле url должно быть непустым HTTPS-адресом." }}Превышен лимит запросов на токен.
object
object
Example
{ "ok": false, "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Превышен лимит запросов на токен." }}Headers
Заголовок раздела «Headers»Example
60Через сколько секунд безопасно повторить запрос.
STT-задача не была поставлена в очередь: либо Redis недоступен, либо не настроен канонический набор Bearer-токенов.
object
object
Example
{ "ok": false, "error": { "code": "QUEUE_UNAVAILABLE", "message": "STT-задача не была поставлена в очередь: очередь сейчас недоступна." }}