{"openapi":"3.1.0","info":{"title":"Диктуй API","version":"1.0.0","description":"API Диктуй — расшифровка записей файлом и по ссылке, встречи из приложения для ваших программ, ботов и автоматизаций (n8n, Make, Битрикс24).\n\n## Как начать\n1. Создайте ключ в личном кабинете на diktuy.ru, раздел «API». Ключ показывается один раз — сохраните его.\n2. Передавайте ключ в заголовке каждого запроса: `Authorization: Bearer dk_live_…`\n3. Проверьте ключ: `curl https://api.diktuy.ru/v1/me -H \"Authorization: Bearer dk_live_…\"`\n\n## Голосовые и короткие записи: текст сразу\nФайл до 25 МБ и 30 минут — текст ответом на запрос, без очереди. Подходят ogg, opus, mp3, m4a, wav, webm, flac, mp4 и другие форматы.\n```bash\ncurl https://api.diktuy.ru/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer dk_live_…\" -F file=@voice.ogg\n```\nЗапрос и ответ устроены как у OpenAI, поэтому подходят их библиотеки: смените адрес и ключ.\n```python\nfrom openai import OpenAI\nclient = OpenAI(base_url=\"https://api.diktuy.ru/v1\", api_key=\"dk_live_…\")\nprint(client.audio.transcriptions.create(model=\"whisper-1\", file=open(\"voice.ogg\", \"rb\")).text)\n```\nВид ответа — `response_format`: json (по умолчанию), text, srt, vtt, verbose_json (фрагменты, а с `timestamp_granularities[]=word` — и слова с таймкодами).\n\n## Расшифровать запись по ссылке\nДлинные записи (до 12 часов), разделение по говорящим и выжимка — по ссылке, через очередь.\n```bash\ncurl https://api.diktuy.ru/v1/transcriptions \\\n  -H \"Authorization: Bearer dk_live_…\" -H \"Content-Type: application/json\" \\\n  -d '{\"audio_url\": \"https://disk.yandex.ru/d/…\", \"summary\": \"protocol\", \"external_id\": \"deal-42\"}'\n```\nОтвет 202 с `id`. Готовность — `GET /v1/transcriptions/{id}` (`status: completed`, текст в `result`) или уведомление на ваш адрес. Файлом: `?format=text|markdown|srt|vtt`.\n\n## Имена говорящих\nПередайте участников в `speaker_names`: `{\"audio_url\": \"…\", \"speaker_names\": [\"Иван Петров\", \"Мария\"]}`. Говорящих подпишем по смыслу разговора, неузнанные останутся «Участник N». Поправить: `PATCH /v1/transcriptions/{id}/speakers` с `{\"speakers\": [{\"id\": 1, \"name\": \"Мария\"}]}` — имена поменяются в репликах, файлах и выжимке.\n\n## Уведомления\n1. Заведите адрес: `POST /v1/webhook-endpoints` с `{\"url\": \"https://…\"}` — в ответе секрет `whsec_…` (показывается один раз).\n2. Когда расшифровка готова или не удалась, на адрес придёт POST с JSON:\n`{\"type\": \"transcription.completed\", \"timestamp\": \"…\", \"data\": {\"id\": \"…\", \"object\": \"transcription\", \"status\": \"completed\", \"external_id\": \"deal-42\", \"duration_seconds\": 1834.6}}`\n   Встречи из приложения: `meeting.created`, `meeting.updated` (поменялись имена, выжимка, название) и `meeting.deleted`, в `data` — `id` для `GET /v1/meetings/{id}`. Приходят о встречах, записанных после того, как вы завели адрес.\n3. Проверьте подпись библиотекой Standard Webhooks — до разбора тела, по сырому тексту запроса:\n\n```js\n// Node.js: npm install standardwebhooks\nimport { Webhook } from \"standardwebhooks\";\nconst event = new Webhook(process.env.DIKTUY_WEBHOOK_SECRET).verify(rawBody, headers); // ошибка — подпись не та\n```\n```python\n# Python: pip install standardwebhooks\nfrom standardwebhooks.webhooks import Webhook\nevent = Webhook(os.environ[\"DIKTUY_WEBHOOK_SECRET\"]).verify(raw_body, headers)\n```\nОтвечайте 2xx за 15 секунд, текст забирайте запросом. Одно событие может прийти дважды — отсекайте повторы по заголовку `webhook-id`.\n\n## n8n и Make\nУзел HTTP Request: заголовок `Authorization` со значением `Bearer dk_live_…`, тело JSON. Для уведомлений — узел Webhook; его адрес передайте в `POST /v1/webhook-endpoints`.\n\n## Доступ\nAPI работает на тарифах Профи и Макс, в том числе на месте от компании. Расшифровка списывает кредиты: 1 кредит за минуту записи, при ошибке кредиты возвращаются. Результаты расшифровок по ссылке хранятся 30 дней; файлы, отправленные напрямую, и их текст не храним.\nОтзыв ключа и смена тарифа доходят до API в течение минуты.\n\n## Ошибки\nОтвет с ошибкой — в формате RFC 9457 (`application/problem+json`): `code` — постоянный код для программ, `detail` — пояснение для человека, `request_id` — номер запроса для поддержки (тот же — в заголовке `X-Request-Id`).\n\n| code | статус | что значит |\n|---|---|---|\n| `auth_required` | 401 | нет заголовка Authorization |\n| `invalid_key` | 401 | ключ неверный или отозван |\n| `plan_required` | 403 | тариф не Профи и не Макс или закончился |\n| `insufficient_scope` | 403 | у ключа нет нужного права |\n| `invalid_request` | 400 | неверные параметры, подробности — в `errors` |\n| `invalid_json` | 400 | тело запроса — не JSON |\n| `unsupported_media_type` | 415 | тело не в `application/json` (файл — не в `multipart/form-data`) |\n| `payload_too_large` | 413 | тело запроса больше 1 МБ, файл — больше 25 МБ |\n| `insufficient_credits` | 402 | не хватает кредитов |\n| `bad_media` | 422 | не удалось прочитать звук из файла |\n| `no_audio` | 422 | в файле нет звука |\n| `too_long` | 422 | файл длиннее 30 минут — отправьте ссылкой |\n| `not_found` | 404 | нет такого адреса или объекта |\n| `rate_limited` | 429 | слишком много запросов, повторите через `Retry-After` секунд |\n| `internal_error` | 500 | сбой у нас, повторите позже |\n| `transcription_failed` | 502 | сбой распознавания файла, кредиты вернули — повторите запрос |\n| `unavailable` | 503 | временно недоступно, повторите позже |\n\n## Лимиты\n60 запросов в минуту на ключ. Остаток — в заголовках `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`. Файлы напрямую: до 3 одновременно на аккаунт и до 5 часов звука в час.\n\n## Версии\nВерсия — в адресе: `/v1`. В её пределах мы только добавляем новое. Если что-то придётся изменить несовместимо, это будет `/v2`."},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Ключ из кабинета на diktuy.ru: Authorization: Bearer dk_live_…"}},"schemas":{}},"paths":{"/v1/transcriptions":{"post":{"summary":"Расшифровать запись по ссылке","tags":["Расшифровка"],"description":"Ставит запись в очередь и сразу отвечает 202 с номером задания. Готовность — в GET /v1/transcriptions/{id} или уведомлением transcription.completed на ваш адрес. Кредиты списываются, когда известна длительность (1 кредит за минуту записи); при ошибке возвращаются. Не больше 5 заданий в очереди и в работе одновременно.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"audio_url":{"type":"string","minLength":1,"maxLength":2048,"description":"Ссылка на запись: VK Видео, Rutube, Яндекс Диск, Google Диск или прямая https-ссылка на аудио/видео-файл (mp3, m4a, wav, ogg, opus, mp4, mov, webm…). Запись до 12 часов и 2 ГБ."},"language":{"default":"auto","description":"Язык записи (код ISO 639-1) или auto — определить самим","type":"string","enum":["auto","en","zh","de","es","ru","ko","fr","ja","pt","tr","pl","ca","nl","ar","sv","it","id","hi","fi","vi","he","uk","el","ms","cs","ro","da","hu","ta","no","th","ur","hr","bg","lt","la","mi","ml","cy","sk","te","fa","lv","bn","sr","az","sl","kn","et","mk","br","eu","is","hy","ne","mn","bs","kk","sq","sw","gl","mr","pa","si","km","sn","yo","so","af","oc","ka","be","tg","sd","gu","am","yi","lo","uz","fo","ht","ps","tk","nn","mt","sa","lb","my","bo","tl","mg","as","tt","haw","ln","ha","ba","jw","su","yue"]},"speakers":{"default":true,"description":"Определять ли говорящих","type":"boolean"},"speaker_names":{"description":"Имена участников, например гости встречи из календаря. Подпишем ими говорящих по смыслу разговора: кто представился, к кому обратились по имени. Кого не узнали, останется «Участник N», поправить можно PATCH /v1/transcriptions/{id}/speakers. Нужно speakers: true","minItems":1,"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"summary":{"default":"short","description":"Выжимка: short — кратко, protocol — протокол встречи, tasks — задачи, none — без выжимки","type":"string","enum":["short","protocol","tasks","none"]},"external_id":{"description":"Ваша метка (номер сделки, сообщения…): вернётся в ответах и уведомлениях","type":"string","minLength":1,"maxLength":200}},"required":["audio_url"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255},"in":"header","name":"idempotency-key","required":false,"description":"Ключ повтора: тот же ключ и тот же запрос в течение 24 часов вернут то же задание, а не создадут второе"}],"responses":{"202":{"description":"Задание создано (или найдено по ключу повтора)","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Номер задания"},"object":{"type":"string","enum":["transcription"]},"status":{"type":"string","enum":["queued","processing","completed","failed","cancelled"],"description":"queued — в очереди, processing — в работе, completed — готово, failed — ошибка, cancelled — отменено"},"stage":{"description":"Этап, пока status = processing: downloading, transcribing, diarizing, summarizing…","type":["string","null"]},"progress":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Готовность, 0–100"},"eta_seconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Примерно сколько секунд осталось"},"audio_url":{"type":["string","null"]},"site":{"description":"Откуда ссылка: vk, rutube, yandex_disk, google_drive, direct","type":["string","null"]},"title":{"description":"Название записи, если площадка его отдала","type":["string","null"]},"language":{"type":"string","description":"Язык, который просили (auto — определить)"},"speakers":{"type":"boolean","description":"Определять ли говорящих"},"speaker_names":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Имена участников из запроса"},"summary":{"type":"string","enum":["short","protocol","tasks","none"],"description":"Шаблон выжимки"},"external_id":{"description":"Ваша метка из запроса","type":["string","null"]},"duration_seconds":{"description":"Длительность записи","type":["number","null"]},"credits_charged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Списано кредитов (при ошибке и отмене — 0, кредиты возвращаются)"},"created_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"expires_at":{"description":"До какого момента хранится результат (30 дней)","type":["string","null"]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"result":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","description":"Вся расшифровка одним текстом"},"language":{"description":"Язык записи","type":["string","null"]},"speakers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Говорящие (пусто, если один или не определяли)"},"segments":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Номер говорящего, с 0"},"speaker_name":{"type":"string","description":"Имя или «Участник N»"},"start":{"type":"number","description":"Начало реплики, секунды от начала записи"},"end":{"type":"number","description":"Конец реплики, секунды"},"text":{"type":"string"}},"required":["speaker","speaker_name","start","end","text"],"additionalProperties":false},"description":"Реплики по говорящим (пусто, если говорящих не определяли или он один)"},"summary":{"anyOf":[{"type":"object","properties":{"template":{"type":"string"},"markdown":{"type":"string"}},"required":["template","markdown"],"additionalProperties":false},{"type":"null"}],"description":"Выжимка по выбранному шаблону"}},"required":["text","language","speakers","segments","summary"],"additionalProperties":false,"description":"Результат, когда status = completed"},{"type":"null"}]}},"required":["id","object","status","stage","progress","eta_seconds","audio_url","site","title","language","speakers","speaker_names","summary","external_id","duration_seconds","credits_charged","created_at","finished_at","expires_at","error","result"],"additionalProperties":false,"description":"Задание создано (или найдено по ключу повтора)"}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"402":{"description":"На балансе нет кредитов (insufficient_credits)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"На балансе нет кредитов (insufficient_credits)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"422":{"description":"Ссылка не подходит (link_unsupported) или ключ повтора занят другим запросом (idempotency_mismatch)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Ссылка не подходит (link_unsupported) или ключ повтора занят другим запросом (idempotency_mismatch)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}},"get":{"summary":"Список заданий","tags":["Расшифровка"],"description":"Задания этого аккаунта, новые сначала, без текста (его — по номеру). Постранично: next_cursor → cursor.","parameters":[{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","maxLength":100},"in":"query","name":"status","required":false,"description":"Через запятую: queued, processing, completed, failed, cancelled"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Номер задания"},"object":{"type":"string","enum":["transcription"]},"status":{"type":"string","enum":["queued","processing","completed","failed","cancelled"],"description":"queued — в очереди, processing — в работе, completed — готово, failed — ошибка, cancelled — отменено"},"stage":{"description":"Этап, пока status = processing: downloading, transcribing, diarizing, summarizing…","type":["string","null"]},"progress":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Готовность, 0–100"},"eta_seconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Примерно сколько секунд осталось"},"audio_url":{"type":["string","null"]},"site":{"description":"Откуда ссылка: vk, rutube, yandex_disk, google_drive, direct","type":["string","null"]},"title":{"description":"Название записи, если площадка его отдала","type":["string","null"]},"language":{"type":"string","description":"Язык, который просили (auto — определить)"},"speakers":{"type":"boolean","description":"Определять ли говорящих"},"speaker_names":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Имена участников из запроса"},"summary":{"type":"string","enum":["short","protocol","tasks","none"],"description":"Шаблон выжимки"},"external_id":{"description":"Ваша метка из запроса","type":["string","null"]},"duration_seconds":{"description":"Длительность записи","type":["number","null"]},"credits_charged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Списано кредитов (при ошибке и отмене — 0, кредиты возвращаются)"},"created_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"expires_at":{"description":"До какого момента хранится результат (30 дней)","type":["string","null"]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"result":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","description":"Вся расшифровка одним текстом"},"language":{"description":"Язык записи","type":["string","null"]},"speakers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Говорящие (пусто, если один или не определяли)"},"segments":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Номер говорящего, с 0"},"speaker_name":{"type":"string","description":"Имя или «Участник N»"},"start":{"type":"number","description":"Начало реплики, секунды от начала записи"},"end":{"type":"number","description":"Конец реплики, секунды"},"text":{"type":"string"}},"required":["speaker","speaker_name","start","end","text"],"additionalProperties":false},"description":"Реплики по говорящим (пусто, если говорящих не определяли или он один)"},"summary":{"anyOf":[{"type":"object","properties":{"template":{"type":"string"},"markdown":{"type":"string"}},"required":["template","markdown"],"additionalProperties":false},{"type":"null"}],"description":"Выжимка по выбранному шаблону"}},"required":["text","language","speakers","segments","summary"],"additionalProperties":false,"description":"Результат, когда status = completed"},{"type":"null"}]}},"required":["id","object","status","stage","progress","eta_seconds","audio_url","site","title","language","speakers","speaker_names","summary","external_id","duration_seconds","credits_charged","created_at","finished_at","expires_at","error","result"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/transcriptions/{id}":{"get":{"summary":"Статус и результат","tags":["Расшифровка"],"description":"Статус задания, а когда готово — текст, реплики по говорящим и выжимка. format=text|markdown|srt|vtt отдаёт результат файлом нужного вида (только для готовых: иначе 409). Результат хранится 30 дней.","parameters":[{"schema":{"default":"json","type":"string","enum":["json","text","markdown","srt","vtt"]},"in":"query","name":"format","required":false,"description":"Вид ответа"},{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true,"description":"Номер задания"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Номер задания"},"object":{"type":"string","enum":["transcription"]},"status":{"type":"string","enum":["queued","processing","completed","failed","cancelled"],"description":"queued — в очереди, processing — в работе, completed — готово, failed — ошибка, cancelled — отменено"},"stage":{"description":"Этап, пока status = processing: downloading, transcribing, diarizing, summarizing…","type":["string","null"]},"progress":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Готовность, 0–100"},"eta_seconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Примерно сколько секунд осталось"},"audio_url":{"type":["string","null"]},"site":{"description":"Откуда ссылка: vk, rutube, yandex_disk, google_drive, direct","type":["string","null"]},"title":{"description":"Название записи, если площадка его отдала","type":["string","null"]},"language":{"type":"string","description":"Язык, который просили (auto — определить)"},"speakers":{"type":"boolean","description":"Определять ли говорящих"},"speaker_names":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Имена участников из запроса"},"summary":{"type":"string","enum":["short","protocol","tasks","none"],"description":"Шаблон выжимки"},"external_id":{"description":"Ваша метка из запроса","type":["string","null"]},"duration_seconds":{"description":"Длительность записи","type":["number","null"]},"credits_charged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Списано кредитов (при ошибке и отмене — 0, кредиты возвращаются)"},"created_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"expires_at":{"description":"До какого момента хранится результат (30 дней)","type":["string","null"]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"result":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","description":"Вся расшифровка одним текстом"},"language":{"description":"Язык записи","type":["string","null"]},"speakers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Говорящие (пусто, если один или не определяли)"},"segments":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Номер говорящего, с 0"},"speaker_name":{"type":"string","description":"Имя или «Участник N»"},"start":{"type":"number","description":"Начало реплики, секунды от начала записи"},"end":{"type":"number","description":"Конец реплики, секунды"},"text":{"type":"string"}},"required":["speaker","speaker_name","start","end","text"],"additionalProperties":false},"description":"Реплики по говорящим (пусто, если говорящих не определяли или он один)"},"summary":{"anyOf":[{"type":"object","properties":{"template":{"type":"string"},"markdown":{"type":"string"}},"required":["template","markdown"],"additionalProperties":false},{"type":"null"}],"description":"Выжимка по выбранному шаблону"}},"required":["text","language","speakers","segments","summary"],"additionalProperties":false,"description":"Результат, когда status = completed"},{"type":"null"}]}},"required":["id","object","status","stage","progress","eta_seconds","audio_url","site","title","language","speakers","speaker_names","summary","external_id","duration_seconds","credits_charged","created_at","finished_at","expires_at","error","result"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такого задания (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такого задания (not_found)"}}}},"409":{"description":"Ещё не готово для выгрузки файлом (not_ready)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Ещё не готово для выгрузки файлом (not_ready)"}}}},"410":{"description":"Срок хранения результата истёк (expired)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Срок хранения результата истёк (expired)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}},"delete":{"summary":"Отменить и удалить","tags":["Расшифровка"],"description":"Если задание в очереди или в работе — отменяет (кредиты возвращаются). Результат удаляется сразу и безвозвратно.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Удалено"},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такого задания (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такого задания (not_found)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/transcriptions/{id}/speakers":{"patch":{"summary":"Переименовать говорящих","tags":["Расшифровка"],"description":"Имена говорящих готовой расшифровки: в репликах, во всех форматах выгрузки и в выжимке. Передавайте только тех, кого меняете; остальные останутся как были. Выжимку не пересчитываем: подписи в ней меняем там, где они стоят как есть; склонённая подпись получит имя в скобках («Участнику 2 (Мария)»), склонённое имя («Ивану») останется прежним. Чтобы выжимка сразу вышла с именами, передайте speaker_names при создании.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"speakers":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Номер говорящего из result.speakers"},"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Новое имя; пустая строка или null — вернуть «Участник N»"}},"required":["id","name"],"additionalProperties":false}}},"required":["speakers"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true,"description":"Номер задания"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Номер задания"},"object":{"type":"string","enum":["transcription"]},"status":{"type":"string","enum":["queued","processing","completed","failed","cancelled"],"description":"queued — в очереди, processing — в работе, completed — готово, failed — ошибка, cancelled — отменено"},"stage":{"description":"Этап, пока status = processing: downloading, transcribing, diarizing, summarizing…","type":["string","null"]},"progress":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Готовность, 0–100"},"eta_seconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Примерно сколько секунд осталось"},"audio_url":{"type":["string","null"]},"site":{"description":"Откуда ссылка: vk, rutube, yandex_disk, google_drive, direct","type":["string","null"]},"title":{"description":"Название записи, если площадка его отдала","type":["string","null"]},"language":{"type":"string","description":"Язык, который просили (auto — определить)"},"speakers":{"type":"boolean","description":"Определять ли говорящих"},"speaker_names":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Имена участников из запроса"},"summary":{"type":"string","enum":["short","protocol","tasks","none"],"description":"Шаблон выжимки"},"external_id":{"description":"Ваша метка из запроса","type":["string","null"]},"duration_seconds":{"description":"Длительность записи","type":["number","null"]},"credits_charged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Списано кредитов (при ошибке и отмене — 0, кредиты возвращаются)"},"created_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"expires_at":{"description":"До какого момента хранится результат (30 дней)","type":["string","null"]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"result":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","description":"Вся расшифровка одним текстом"},"language":{"description":"Язык записи","type":["string","null"]},"speakers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"description":"Говорящие (пусто, если один или не определяли)"},"segments":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Номер говорящего, с 0"},"speaker_name":{"type":"string","description":"Имя или «Участник N»"},"start":{"type":"number","description":"Начало реплики, секунды от начала записи"},"end":{"type":"number","description":"Конец реплики, секунды"},"text":{"type":"string"}},"required":["speaker","speaker_name","start","end","text"],"additionalProperties":false},"description":"Реплики по говорящим (пусто, если говорящих не определяли или он один)"},"summary":{"anyOf":[{"type":"object","properties":{"template":{"type":"string"},"markdown":{"type":"string"}},"required":["template","markdown"],"additionalProperties":false},{"type":"null"}],"description":"Выжимка по выбранному шаблону"}},"required":["text","language","speakers","segments","summary"],"additionalProperties":false,"description":"Результат, когда status = completed"},{"type":"null"}]}},"required":["id","object","status","stage","progress","eta_seconds","audio_url","site","title","language","speakers","speaker_names","summary","external_id","duration_seconds","credits_charged","created_at","finished_at","expires_at","error","result"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такого задания (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такого задания (not_found)"}}}},"409":{"description":"Расшифровка ещё не готова (not_ready)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Расшифровка ещё не готова (not_ready)"}}}},"410":{"description":"Срок хранения результата истёк (expired)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Срок хранения результата истёк (expired)"}}}},"422":{"description":"Говорящих в записи нет (no_speakers) или нет говорящего с таким id (unknown_speaker)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Говорящих в записи нет (no_speakers) или нет говорящего с таким id (unknown_speaker)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/audio/transcriptions":{"post":{"summary":"Расшифровать файл, текст сразу","tags":["Расшифровка"],"description":"Файл до 25 МБ и 30 минут — текст ответом на запрос, без очереди. Вид запроса и ответа как у OpenAI: подходят их библиотеки, если сменить адрес на https://api.diktuy.ru/v1 и ключ на ключ Диктуй. Списывает 1 кредит за минуту записи (к ближайшей, не меньше одной); запись без речи — бесплатно; при ошибке кредиты возвращаются. Не больше 3 запросов одновременно на аккаунт и 5 часов звука в час. Длиннее 30 минут или с разделением по говорящим — POST /v1/transcriptions. В verbose_json поля seek, tokens, temperature, avg_logprob, compression_ratio и no_speech_prob — нули, они для совместимости с библиотеками OpenAI.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Запись: ogg, opus, mp3, m4a, wav, webm, flac, mp4, amr и другие форматы звука и видео. До 25 МБ и 30 минут"},"model":{"description":"Не обязательно. Для библиотек OpenAI: любое значение, например whisper-1","type":"string","maxLength":100},"language":{"description":"Язык записи (ISO 639-1). Не указан — определим сами","type":"string","enum":["auto","en","zh","de","es","ru","ko","fr","ja","pt","tr","pl","ca","nl","ar","sv","it","id","hi","fi","vi","he","uk","el","ms","cs","ro","da","hu","ta","no","th","ur","hr","bg","lt","la","mi","ml","cy","sk","te","fa","lv","bn","sr","az","sl","kn","et","mk","br","eu","is","hy","ne","mn","bs","kk","sq","sw","gl","mr","pa","si","km","sn","yo","so","af","oc","ka","be","tg","sd","gu","am","yi","lo","uz","fo","ht","ps","tk","nn","mt","sa","lb","my","bo","tl","mg","as","tt","haw","ln","ha","ba","jw","su","yue"]},"prompt":{"description":"Подсказка: имена, термины, названия, которые встречаются в записи. До 500 знаков","type":"string","maxLength":500},"response_format":{"description":"Вид ответа: json (по умолчанию), text, srt, vtt, verbose_json","type":"string","enum":["json","text","srt","vtt","verbose_json"]},"timestamp_granularities[]":{"description":"Для verbose_json: segment — фрагменты (по умолчанию), word — слова с таймкодами","type":"array","items":{"type":"string","enum":["segment","word"]}}},"required":["file"]}}}},"responses":{"200":{"description":"Готово. Для response_format text, srt и vtt — текст файла (text/plain, application/x-subrip, text/vtt)","content":{"application/json":{"schema":{"type":"object","properties":{"task":{"type":"string","enum":["transcribe"]},"text":{"type":"string","description":"Весь текст"},"language":{"description":"Язык записи","type":["string","null"]},"duration":{"type":"number","description":"Длительность записи, секунды"},"segments":{"description":"verbose_json: фрагменты по предложениям с таймкодами","type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"start":{"type":"number"},"end":{"type":"number"},"text":{"type":"string"},"tokens":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"temperature":{"type":"number"},"avg_logprob":{"type":"number"},"compression_ratio":{"type":"number"},"no_speech_prob":{"type":"number"}},"required":["id","seek","start","end","text","tokens","temperature","avg_logprob","compression_ratio","no_speech_prob"],"additionalProperties":false}},"words":{"description":"verbose_json + timestamp_granularities[]=word: слова с таймкодами","type":"array","items":{"type":"object","properties":{"word":{"type":"string"},"start":{"type":"number"},"end":{"type":"number"}},"required":["word","start","end"],"additionalProperties":false}},"usage":{"type":"object","properties":{"type":{"type":"string","enum":["duration"]},"seconds":{"type":"number"}},"required":["type","seconds"],"additionalProperties":false,"description":"Длительность, за которую списаны кредиты"},"credits_charged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Списано кредитов (1 — минута записи; запись без речи — 0)"},"credits_remaining":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Остаток кредитов после списания"}},"required":["text","language","duration","usage","credits_charged","credits_remaining"],"additionalProperties":false,"description":"Готово. Для response_format text, srt и vtt — текст файла (text/plain, application/x-subrip, text/vtt)"}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"402":{"description":"Не хватает кредитов (insufficient_credits)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Не хватает кредитов (insufficient_credits)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"413":{"description":"Файл больше 25 МБ (payload_too_large)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Файл больше 25 МБ (payload_too_large)"}}}},"422":{"description":"Не удалось прочитать звук (bad_media), в файле нет звука (no_audio) или запись длиннее 30 минут (too_long)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Не удалось прочитать звук (bad_media), в файле нет звука (no_audio) или запись длиннее 30 минут (too_long)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}},"502":{"description":"Сбой распознавания, кредиты возвращены (transcription_failed)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Сбой распознавания, кредиты возвращены (transcription_failed)"}}}}}}},"/v1/webhook-endpoints":{"post":{"summary":"Завести адрес для уведомлений","tags":["Уведомления"],"description":"Сюда придут события (POST, JSON): transcription.completed и transcription.failed — по расшифровкам по ссылке; meeting.created, meeting.updated и meeting.deleted — по встречам из приложения, записанным после того, как завели адрес. Секрет подписи показывается ОДИН раз — сохраните его: по нему проверяется подпись (заголовки webhook-id, webhook-timestamp, webhook-signature по стандарту Standard Webhooks, библиотеки есть для Node, Python и др.). В событии — только номер, текст забирайте запросом GET /v1/transcriptions/{id} или GET /v1/meetings/{id}. Ответьте 2xx в течение 15 секунд; иначе повторим через 1 мин, 5 мин, 30 мин, 2 ч, 5 ч, 10 ч, 10 ч. Ответ 410 или 5 дней без единой удачи отключают адрес. Не больше 5 адресов.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"description":"https-адрес вашего сервера (n8n, Make, свой обработчик)"},"events":{"description":"По умолчанию — все события","minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["transcription.completed","transcription.failed","meeting.created","meeting.updated","meeting.deleted"]}},"description":{"type":"string","maxLength":200}},"required":["url"],"additionalProperties":false}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["webhook_endpoint"]},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"enabled":{"type":"boolean","description":"false — адрес отключён (ответил 410 или не отвечал 5 дней); заведите его заново"},"disabled_reason":{"type":["string","null"]},"failing_since":{"description":"С какого момента адрес подряд не принимает уведомления","type":["string","null"]},"created_at":{"type":"string"},"secret":{"type":"string","description":"Секрет подписи whsec_… — показывается один раз"}},"required":["id","object","url","events","description","enabled","disabled_reason","failing_since","created_at","secret"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"409":{"description":"Уже 5 адресов (too_many_endpoints)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Уже 5 адресов (too_many_endpoints)"}}}},"422":{"description":"Адрес не подходит (url_not_allowed)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Адрес не подходит (url_not_allowed)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}},"get":{"summary":"Адреса уведомлений","tags":["Уведомления"],"description":"Все адреса этого аккаунта, включая отключённые. Секрет не показывается.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string","enum":["webhook_endpoint"]},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"description":{"type":["string","null"]},"enabled":{"type":"boolean","description":"false — адрес отключён (ответил 410 или не отвечал 5 дней); заведите его заново"},"disabled_reason":{"type":["string","null"]},"failing_since":{"description":"С какого момента адрес подряд не принимает уведомления","type":["string","null"]},"created_at":{"type":"string"}},"required":["id","object","url","events","description","enabled","disabled_reason","failing_since","created_at"],"additionalProperties":false}}},"required":["object","data"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/webhook-endpoints/{id}":{"delete":{"summary":"Удалить адрес","tags":["Уведомления"],"parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такого адреса (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такого адреса (not_found)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/webhook-endpoints/{id}/test":{"post":{"summary":"Отправить проверочное событие","tags":["Уведомления"],"description":"Ставит в очередь событие webhook.test на этот адрес; уходит в течение минуты. Итог — в журнале доставок.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"queued":{"type":"boolean","enum":[true]}},"required":["queued"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такого адреса (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такого адреса (not_found)"}}}},"409":{"description":"Адрес отключён (endpoint_disabled)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Адрес отключён (endpoint_disabled)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/webhook-endpoints/{id}/deliveries":{"get":{"summary":"Журнал доставок","tags":["Уведомления"],"description":"Последние 50 доставок на адрес: событие, попытки, код ответа вашего сервера. Хранятся 30 дней.","parameters":[{"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"msg_id":{"type":"string"},"event":{"type":"string"},"status":{"type":"string","enum":["pending","sending","sent","failed"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"next_attempt_at":{"type":["string","null"]},"last_http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"type":["string","null"]},"created_at":{"type":"string"},"delivered_at":{"type":["string","null"]}},"required":["id","msg_id","event","status","attempts","next_attempt_at","last_http_status","last_error","created_at","delivered_at"],"additionalProperties":false}}},"required":["object","data"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такого адреса (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такого адреса (not_found)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/meetings":{"get":{"summary":"Встречи из приложения","tags":["Встречи"],"description":"Встречи, записанные в приложении Диктуй на компьютере: на Профи и Макс они уезжают сюда сами в течение минуты после расшифровки. Новые сначала, без текста (его — по номеру). Постранично: next_cursor → cursor. Удалённые не показываются.","parameters":[{"schema":{"default":20,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","maxLength":500},"in":"query","name":"cursor","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Номер встречи (32 знака), тот же на всех компьютерах человека"},"object":{"type":"string","enum":["meeting"]},"title":{"type":"string","description":"Как в приложении: «Zoom · 07.10 14:30»"},"source":{"description":"Где шла встреча: Zoom, Телемост, Google Meet…","type":["string","null"]},"started_at":{"description":"Начало, ISO 8601 (UTC)","type":["string","null"]},"duration_seconds":{"type":"number"},"language":{"type":["string","null"]},"speakers_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"summaries":{"type":"array","items":{"type":"string"},"description":"Какие выжимки готовы (шаблоны)"},"updated_at":{"description":"Когда встреча последний раз менялась на сервере","type":["string","null"]}},"required":["id","object","title","source","started_at","duration_seconds","language","speakers_count","summaries","updated_at"],"additionalProperties":false}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["object","data","has_more","next_cursor"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/meetings/{id}":{"get":{"summary":"Встреча целиком","tags":["Встречи"],"description":"Реплики по говорящим, выжимки и вопросы к встрече. format=text|markdown — текстом.","parameters":[{"schema":{"default":"json","type":"string","enum":["json","text","markdown"]},"in":"query","name":"format","required":false},{"schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"in":"path","name":"id","required":true,"description":"Номер встречи"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Номер встречи (32 знака), тот же на всех компьютерах человека"},"object":{"type":"string","enum":["meeting"]},"title":{"type":"string","description":"Как в приложении: «Zoom · 07.10 14:30»"},"source":{"description":"Где шла встреча: Zoom, Телемост, Google Meet…","type":["string","null"]},"started_at":{"description":"Начало, ISO 8601 (UTC)","type":["string","null"]},"duration_seconds":{"type":"number"},"language":{"type":["string","null"]},"speakers_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"summaries":{"type":"array","items":{"type":"string"},"description":"Какие выжимки готовы (шаблоны)"},"updated_at":{"description":"Когда встреча последний раз менялась на сервере","type":["string","null"]},"format_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Версия формата встречи в приложении"},"speakers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"segments":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"speaker_name":{"type":"string"},"start":{"type":"number"},"end":{"type":"number"},"text":{"type":"string"}},"required":["speaker","speaker_name","start","end","text"],"additionalProperties":false}},"summary_texts":{"type":"array","items":{"type":"object","properties":{"template":{"type":"string"},"markdown":{"type":"string"}},"required":["template","markdown"],"additionalProperties":false},"description":"Готовые выжимки"},"questions":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string"},"answer":{"type":"string"},"asked_at":{"type":["string","null"]}},"required":["question","answer","asked_at"],"additionalProperties":false},"description":"Вопросы к встрече и ответы («Спросить»)"}},"required":["id","object","title","source","started_at","duration_seconds","language","speakers_count","summaries","updated_at","format_version","speakers","segments","summary_texts","questions"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"404":{"description":"Нет такой встречи (not_found)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет такой встречи (not_found)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}},"/v1/me":{"get":{"summary":"Аккаунт, тариф и кредиты","tags":["Аккаунт"],"description":"Кому принадлежит ключ, действует ли тариф и сколько кредитов доступно. Удобно, чтобы проверить ключ: отвечает и тогда, когда тариф закончился (plan.active = false), а остальные адреса отвечают 403.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","properties":{"id":{"type":"string","description":"Номер аккаунта"},"email":{"description":"Почта аккаунта","type":["string","null"]}},"required":["id","email"],"additionalProperties":false},"plan":{"type":"object","properties":{"type":{"type":"string","enum":["free","pro","max","lifetime"],"description":"Тариф"},"active":{"type":"boolean","description":"Действует ли платный тариф (без него API отвечает 403)"},"expires_at":{"description":"До какого момента оплачен тариф, ISO 8601","type":["string","null"]}},"required":["type","active","expires_at"],"additionalProperties":false},"credits":{"type":"object","properties":{"available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Сколько кредитов можно потратить сейчас: месячные + купленные"},"monthly_limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Месячные кредиты по тарифу"},"monthly_used":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Потрачено из месячных в этом периоде"},"purchased":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Купленные кредиты (не сгорают)"},"period_start":{"description":"Начало текущего месячного периода","type":["string","null"]}},"required":["available","monthly_limit","monthly_used","purchased","period_start"],"additionalProperties":false},"key":{"type":"object","properties":{"id":{"type":"string","description":"Номер ключа"},"name":{"type":"string","description":"Название ключа из кабинета"},"scopes":{"type":"array","items":{"type":"string"},"description":"Права ключа"}},"required":["id","name","scopes"],"additionalProperties":false}},"required":["user","plan","credits","key"],"additionalProperties":false}}}},"401":{"description":"Нет ключа или ключ неверный (auth_required, invalid_key)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Нет ключа или ключ неверный (auth_required, invalid_key)"}}}},"403":{"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Тариф не Профи и не Макс или нет права у ключа (plan_required, insufficient_scope)"}}}},"429":{"description":"Слишком много запросов (rate_limited), см. Retry-After","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"about:blank"},"title":{"type":"string","description":"Стандартная фраза статуса HTTP"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Код статуса HTTP"},"detail":{"type":"string","description":"Пояснение для человека"},"code":{"type":"string","description":"Постоянный код ошибки для программ"},"request_id":{"type":"string","description":"Номер запроса для поддержки (тот же — в заголовке X-Request-Id)"}},"required":["type","title","status","detail","code","request_id"],"additionalProperties":{},"description":"Слишком много запросов (rate_limited), см. Retry-After"}}}}}}}},"servers":[{"url":"https://api.diktuy.ru","description":"Боевой сервер"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Расшифровка","description":"Файл → текст сразу; запись по ссылке → текст, реплики по говорящим, выжимка"},{"name":"Уведомления","description":"Событие на ваш адрес, когда расшифровка готова или не удалась (Standard Webhooks)"},{"name":"Встречи","description":"Встречи, записанные в приложении Диктуй (при включённой синхронизации)"},{"name":"Аккаунт","description":"Кто владелец ключа, тариф и кредиты"}]}