{
  "aboutHtml": "<p>GPT Transcribe — модель OpenAI для преобразования речи в текст из готовых аудиофайлов, потоковой выдачи расшифровок файлов и обработки зафиксированных аудиофрагментов в сессиях Realtime. Она принимает аудио с необязательным текстовым контекстом и возвращает распознанный текст. Разработчик позиционирует её для точной расшифровки записанной речи на исходном языке, включая предметную лексику, многоязычные записи и переключение языков внутри речи. Полезный результат — расшифровка, связанная с записью, и метаданные определённых языков, когда модель может сделать надёжный прогноз.</p><h4>Подготовка готовой записи</h4><p>Процесс распознавания файлов OpenAI принимает загрузки размером до 25 MB. Текущая справка конечной точки перечисляет входные форматы FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV и WebM и рекомендует передавать достаточно метаданных для определения формата, включая подходящее расширение имени файла и тип содержимого. Для более крупной записи руководство рекомендует сжатие или разделение на файлы не более 25 MB. Не разрезайте предложение посередине: потеря окружающей речи может снизить точность. Сохраняйте порядок фрагментов и их позиции в исходной записи.</p><p>Для встречи, интервью или записанной презентации передайте фактическое аудио и укажите тему и термины, которые могут прозвучать. Полезный результат — распознанные слова, а не предполагаемое краткое содержание обсуждения. Сохраняйте идентификатор записи вместе с возвращённым текстом, чтобы проверяющий имя, число или спорную фразу человек мог обратиться к нужному источнику. Затем расшифровку можно использовать для отдельного краткого изложения, перевода или редакторской работы.</p><h4>Контекст, ключевые подсказки и ожидаемые языки</h4><p>Разработчик разделяет три вида указаний. Текстовая подсказка даёт свободный контекст темы или обстановки записи. Ключевые слова задают точные слова или выражения, ожидаемые в речи. Список languages указывает ожидаемые языки. Для двуязычного обсуждения продукта опишите обстановку в подсказке, перечислите названия продуктов как ключевые слова и укажите ожидаемые языки. Это подсказки распознаванию, а не инструкции вставлять лексику, которую никто не произнёс.</p><p>GPT Transcribe использует поле languages во множественном числе вместо старого поля language в единственном; OpenAI указывает, что отправлять оба не следует. Руководство принимает поддерживаемые коды ISO 639-1, некоторые коды ISO 639-3 и региональные китайские коды локалей; неподдерживаемые или неверно сформированные значения отклоняются. Каждая ключевая подсказка должна занимать одну строку и не содержать угловых скобок, возврата каретки или перевода строки. Неверная ключевая подсказка или слишком длинный текстовый контекст могут привести к отклонению всего запроса. Сохраняйте уместность контекста и проверяйте, действительно ли подсказанные имена встречаются в аудио, а не считайте список подсказок расшифровкой.</p><h4>Вывод JSON и прогнозы определённых языков</h4><p>Документированный результат файла — JSON с расшифровкой и определёнными языками. Прогнозы языка являются выводом модели, а не копией переданных языковых подсказок. Пустой список языков допустим, если модель не может сделать надёжный прогноз; сам по себе он не подтверждает тишину в записи или сбой распознавания. Отделяйте распознанный текст от языковых метаданных, чтобы последующая обработка использовала каждую часть по её смыслу.</p><h4>Потоковая выдача расшифровки файла</h4><p>Готовый файл может выдавать текст расшифровки постепенно по мере обработки. OpenAI документирует события transcript.text.delta для частичного текста и transcript.text.done для полной расшифровки файла; финальное событие также содержит определённые языки. Это потоковая выдача результата уже предоставленной записи. Она полезна для отображения прогресса при длинной загрузке, а финальное событие задаёт текст, который нужно сохранить как завершённый результат.</p><h4>Зафиксированные аудиофрагменты в сессиях Realtime</h4><p>У GPT Transcribe также есть специальный процесс Realtime через WebSocket. Аудио добавляется во входной буфер, затем приложение явно фиксирует аудиофрагмент. Распознавание начинается для этого зафиксированного фрагмента и может выдавать части текста до события завершения, включая сведения об определённых языках. В этом процессе, предусмотренном производителем для сессии, модель автоматически использует ранее распознанные фрагменты как контекст. Это отличается от непрерывной выдачи текста живых субтитров по мере поступления аудио с микрофона; для такого непрерывного процесса OpenAI использует название GPT Live Transcribe.</p><p>Для нескольких фрагментов сохраняйте идентификатор входного элемента вместе с соответствующей расшифровкой. OpenAI предупреждает, что события завершения разных фрагментов могут приходить не в порядке речи, поэтому связывайте каждый итоговый результат с зафиксированным вводом, а не стройте беседу только по времени завершения. Полезный материал — упорядоченная расшифровка из правильных итоговых элементов; промежуточный текст считается прогрессом, а не отдельной завершённой репликой.</p><h4>Специальные результаты и существенные ограничения</h4><p>Этот профиль не задаёт универсальную спецификацию субтитров, временных меток, перевода или меток говорящих. Руководство OpenAI по миграции различает эти специальные возможности: собственные форматы субтитров и временные метки слов требуют совместимых модели и формата, а метки говорящих используют GPT-4o Transcribe Diarize. Результат файла GPT Transcribe — JSON, который не является прямой заменой ответа SRT, VTT или подробного ответа с временными метками. Карточка этой конкретной модели не публикует численный лимит контекста или максимального вывода, поэтому нельзя автоматически переносить контекстное окно чат-модели на распознавание аудио.</p><p>Сверяйте с записью сложную лексику, числа, акценты, фоновый шум и смену языков. Проверяйте, что полезные подсказки улучшили распознавание, не добавляя непроизнесённые слова, и что итоговая расшифровка включает конец аудио. Для многоязычного результата сохраняйте произнесённые слова перед подготовкой перевода. Эти проверки делают расшифровку полезным исходным материалом, сохраняя различие между контекстными подсказками, определёнными языками и распознанной речью.</p>",
  "aboutText": "GPT Transcribe — модель OpenAI для преобразования речи в текст из готовых аудиофайлов, потоковой выдачи расшифровок файлов и обработки зафиксированных аудиофрагментов в сессиях Realtime. Она принимает аудио с необязательным текстовым контекстом и возвращает распознанный текст. Разработчик позиционирует её для точной расшифровки записанной речи на исходном языке, включая предметную лексику, многоязычные записи и переключение языков внутри речи. Полезный результат — расшифровка, связанная с записью, и метаданные определённых языков, когда модель может сделать надёжный прогноз.\n\n### Подготовка готовой записи\n\nПроцесс распознавания файлов OpenAI принимает загрузки размером до 25 MB. Текущая справка конечной точки перечисляет входные форматы FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV и WebM и рекомендует передавать достаточно метаданных для определения формата, включая подходящее расширение имени файла и тип содержимого. Для более крупной записи руководство рекомендует сжатие или разделение на файлы не более 25 MB. Не разрезайте предложение посередине: потеря окружающей речи может снизить точность. Сохраняйте порядок фрагментов и их позиции в исходной записи.\n\nДля встречи, интервью или записанной презентации передайте фактическое аудио и укажите тему и термины, которые могут прозвучать. Полезный результат — распознанные слова, а не предполагаемое краткое содержание обсуждения. Сохраняйте идентификатор записи вместе с возвращённым текстом, чтобы проверяющий имя, число или спорную фразу человек мог обратиться к нужному источнику. Затем расшифровку можно использовать для отдельного краткого изложения, перевода или редакторской работы.\n\n### Контекст, ключевые подсказки и ожидаемые языки\n\nРазработчик разделяет три вида указаний. Текстовая подсказка даёт свободный контекст темы или обстановки записи. Ключевые слова задают точные слова или выражения, ожидаемые в речи. Список languages указывает ожидаемые языки. Для двуязычного обсуждения продукта опишите обстановку в подсказке, перечислите названия продуктов как ключевые слова и укажите ожидаемые языки. Это подсказки распознаванию, а не инструкции вставлять лексику, которую никто не произнёс.\n\nGPT Transcribe использует поле languages во множественном числе вместо старого поля language в единственном; OpenAI указывает, что отправлять оба не следует. Руководство принимает поддерживаемые коды ISO 639-1, некоторые коды ISO 639-3 и региональные китайские коды локалей; неподдерживаемые или неверно сформированные значения отклоняются. Каждая ключевая подсказка должна занимать одну строку и не содержать угловых скобок, возврата каретки или перевода строки. Неверная ключевая подсказка или слишком длинный текстовый контекст могут привести к отклонению всего запроса. Сохраняйте уместность контекста и проверяйте, действительно ли подсказанные имена встречаются в аудио, а не считайте список подсказок расшифровкой.\n\n### Вывод JSON и прогнозы определённых языков\n\nДокументированный результат файла — JSON с расшифровкой и определёнными языками. Прогнозы языка являются выводом модели, а не копией переданных языковых подсказок. Пустой список языков допустим, если модель не может сделать надёжный прогноз; сам по себе он не подтверждает тишину в записи или сбой распознавания. Отделяйте распознанный текст от языковых метаданных, чтобы последующая обработка использовала каждую часть по её смыслу.\n\n### Потоковая выдача расшифровки файла\n\nГотовый файл может выдавать текст расшифровки постепенно по мере обработки. OpenAI документирует события transcript.text.delta для частичного текста и transcript.text.done для полной расшифровки файла; финальное событие также содержит определённые языки. Это потоковая выдача результата уже предоставленной записи. Она полезна для отображения прогресса при длинной загрузке, а финальное событие задаёт текст, который нужно сохранить как завершённый результат.\n\n### Зафиксированные аудиофрагменты в сессиях Realtime\n\nУ GPT Transcribe также есть специальный процесс Realtime через WebSocket. Аудио добавляется во входной буфер, затем приложение явно фиксирует аудиофрагмент. Распознавание начинается для этого зафиксированного фрагмента и может выдавать части текста до события завершения, включая сведения об определённых языках. В этом процессе, предусмотренном производителем для сессии, модель автоматически использует ранее распознанные фрагменты как контекст. Это отличается от непрерывной выдачи текста живых субтитров по мере поступления аудио с микрофона; для такого непрерывного процесса OpenAI использует название GPT Live Transcribe.\n\nДля нескольких фрагментов сохраняйте идентификатор входного элемента вместе с соответствующей расшифровкой. OpenAI предупреждает, что события завершения разных фрагментов могут приходить не в порядке речи, поэтому связывайте каждый итоговый результат с зафиксированным вводом, а не стройте беседу только по времени завершения. Полезный материал — упорядоченная расшифровка из правильных итоговых элементов; промежуточный текст считается прогрессом, а не отдельной завершённой репликой.\n\n### Специальные результаты и существенные ограничения\n\nЭтот профиль не задаёт универсальную спецификацию субтитров, временных меток, перевода или меток говорящих. Руководство OpenAI по миграции различает эти специальные возможности: собственные форматы субтитров и временные метки слов требуют совместимых модели и формата, а метки говорящих используют GPT-4o Transcribe Diarize. Результат файла GPT Transcribe — JSON, который не является прямой заменой ответа SRT, VTT или подробного ответа с временными метками. Карточка этой конкретной модели не публикует численный лимит контекста или максимального вывода, поэтому нельзя автоматически переносить контекстное окно чат-модели на распознавание аудио.\n\nСверяйте с записью сложную лексику, числа, акценты, фоновый шум и смену языков. Проверяйте, что полезные подсказки улучшили распознавание, не добавляя непроизнесённые слова, и что итоговая расшифровка включает конец аудио. Для многоязычного результата сохраняйте произнесённые слова перед подготовкой перевода. Эти проверки делают расшифровку полезным исходным материалом, сохраняя различие между контекстными подсказками, определёнными языками и распознанной речью.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "62b3ab283066ea340ffc782c7b2e9c08d1a72e74d2e62a3dbcea65a7bc4f80cc",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ru",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">O</span><h2 id=\"sheet-title\">OpenAI: GPT Transcribe</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-transcribe</code><button type=\"button\" id=\"copy-id\">Скопировать ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Разделы карточки модели\"><button type=\"button\" data-card-jump=\"overview\">Начало</button><button type=\"button\" data-card-jump=\"methods\">Входные данные и методы</button><button type=\"button\" data-card-jump=\"pricing\">Тарифы</button><button type=\"button\" data-card-jump=\"examples\">Примеры</button><button type=\"button\" data-card-jump=\"results\">Результаты</button><button type=\"button\" data-card-jump=\"aliases\">Псевдонимы</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Методы API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-transcribe\">Распознавание</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Начало</h3><p class=\"mdesc-full\">GPT Transcribe превращает записанную речь в текст на исходном языке, используя контекстные подсказки, точные ключевые слова и подсказки о нескольких языках. OpenAI документирует распознавание готового файла, потоковую выдачу результата файла и распознавание после фиксации аудиофрагментов в Realtime.</p><dl class=\"card-io\" data-card-io><div><dt>Допустимые входные данные</dt><dd>Аудио</dd></div><div><dt>Результаты</dt><dd>Текст</dd></div></dl><details class=\"card-about\"><summary>О модели</summary><p class=\"note-s\" data-model-method-boundary>Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.</p><div class=\"mabout\" id=\"m-about\"><p>GPT Transcribe — модель OpenAI для преобразования речи в текст из готовых аудиофайлов, потоковой выдачи расшифровок файлов и обработки зафиксированных аудиофрагментов в сессиях Realtime. Она принимает аудио с необязательным текстовым контекстом и возвращает распознанный текст. Разработчик позиционирует её для точной расшифровки записанной речи на исходном языке, включая предметную лексику, многоязычные записи и переключение языков внутри речи. Полезный результат — расшифровка, связанная с записью, и метаданные определённых языков, когда модель может сделать надёжный прогноз.</p><h4>Подготовка готовой записи</h4><p>Процесс распознавания файлов OpenAI принимает загрузки размером до 25 MB. Текущая справка конечной точки перечисляет входные форматы FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV и WebM и рекомендует передавать достаточно метаданных для определения формата, включая подходящее расширение имени файла и тип содержимого. Для более крупной записи руководство рекомендует сжатие или разделение на файлы не более 25 MB. Не разрезайте предложение посередине: потеря окружающей речи может снизить точность. Сохраняйте порядок фрагментов и их позиции в исходной записи.</p><p>Для встречи, интервью или записанной презентации передайте фактическое аудио и укажите тему и термины, которые могут прозвучать. Полезный результат — распознанные слова, а не предполагаемое краткое содержание обсуждения. Сохраняйте идентификатор записи вместе с возвращённым текстом, чтобы проверяющий имя, число или спорную фразу человек мог обратиться к нужному источнику. Затем расшифровку можно использовать для отдельного краткого изложения, перевода или редакторской работы.</p><h4>Контекст, ключевые подсказки и ожидаемые языки</h4><p>Разработчик разделяет три вида указаний. Текстовая подсказка даёт свободный контекст темы или обстановки записи. Ключевые слова задают точные слова или выражения, ожидаемые в речи. Список languages указывает ожидаемые языки. Для двуязычного обсуждения продукта опишите обстановку в подсказке, перечислите названия продуктов как ключевые слова и укажите ожидаемые языки. Это подсказки распознаванию, а не инструкции вставлять лексику, которую никто не произнёс.</p><p>GPT Transcribe использует поле languages во множественном числе вместо старого поля language в единственном; OpenAI указывает, что отправлять оба не следует. Руководство принимает поддерживаемые коды ISO 639-1, некоторые коды ISO 639-3 и региональные китайские коды локалей; неподдерживаемые или неверно сформированные значения отклоняются. Каждая ключевая подсказка должна занимать одну строку и не содержать угловых скобок, возврата каретки или перевода строки. Неверная ключевая подсказка или слишком длинный текстовый контекст могут привести к отклонению всего запроса. Сохраняйте уместность контекста и проверяйте, действительно ли подсказанные имена встречаются в аудио, а не считайте список подсказок расшифровкой.</p><h4>Вывод JSON и прогнозы определённых языков</h4><p>Документированный результат файла — JSON с расшифровкой и определёнными языками. Прогнозы языка являются выводом модели, а не копией переданных языковых подсказок. Пустой список языков допустим, если модель не может сделать надёжный прогноз; сам по себе он не подтверждает тишину в записи или сбой распознавания. Отделяйте распознанный текст от языковых метаданных, чтобы последующая обработка использовала каждую часть по её смыслу.</p><h4>Потоковая выдача расшифровки файла</h4><p>Готовый файл может выдавать текст расшифровки постепенно по мере обработки. OpenAI документирует события transcript.text.delta для частичного текста и transcript.text.done для полной расшифровки файла; финальное событие также содержит определённые языки. Это потоковая выдача результата уже предоставленной записи. Она полезна для отображения прогресса при длинной загрузке, а финальное событие задаёт текст, который нужно сохранить как завершённый результат.</p><h4>Зафиксированные аудиофрагменты в сессиях Realtime</h4><p>У GPT Transcribe также есть специальный процесс Realtime через WebSocket. Аудио добавляется во входной буфер, затем приложение явно фиксирует аудиофрагмент. Распознавание начинается для этого зафиксированного фрагмента и может выдавать части текста до события завершения, включая сведения об определённых языках. В этом процессе, предусмотренном производителем для сессии, модель автоматически использует ранее распознанные фрагменты как контекст. Это отличается от непрерывной выдачи текста живых субтитров по мере поступления аудио с микрофона; для такого непрерывного процесса OpenAI использует название GPT Live Transcribe.</p><p>Для нескольких фрагментов сохраняйте идентификатор входного элемента вместе с соответствующей расшифровкой. OpenAI предупреждает, что события завершения разных фрагментов могут приходить не в порядке речи, поэтому связывайте каждый итоговый результат с зафиксированным вводом, а не стройте беседу только по времени завершения. Полезный материал — упорядоченная расшифровка из правильных итоговых элементов; промежуточный текст считается прогрессом, а не отдельной завершённой репликой.</p><h4>Специальные результаты и существенные ограничения</h4><p>Этот профиль не задаёт универсальную спецификацию субтитров, временных меток, перевода или меток говорящих. Руководство OpenAI по миграции различает эти специальные возможности: собственные форматы субтитров и временные метки слов требуют совместимых модели и формата, а метки говорящих используют GPT-4o Transcribe Diarize. Результат файла GPT Transcribe — JSON, который не является прямой заменой ответа SRT, VTT или подробного ответа с временными метками. Карточка этой конкретной модели не публикует численный лимит контекста или максимального вывода, поэтому нельзя автоматически переносить контекстное окно чат-модели на распознавание аудио.</p><p>Сверяйте с записью сложную лексику, числа, акценты, фоновый шум и смену языков. Проверяйте, что полезные подсказки улучшили распознавание, не добавляя непроизнесённые слова, и что итоговая расшифровка включает конец аудио. Для многоязычного результата сохраняйте произнесённые слова перед подготовкой перевода. Эти проверки делают расшифровку полезным исходным материалом, сохраняя различие между контекстными подсказками, определёнными языками и распознанной речью.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Доступно в Ailoot · входные данные и методы</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Распознавание речи</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Входные данные</dt><dd><code>audio</code></dd></div><div><dt>Результат</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Поле</th><th>Тип</th><th>Требование</th><th>Значения и ограничения</th><th>По умолчанию</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>openai/gpt-transcribe</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Параметры и жизненный цикл метода</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Параметр</th><th>Контракт</th></tr></thead><tbody><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>content_type</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>application/json</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>required</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>model, input_audio</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_types</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>audio</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_conditions</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>Пример читает ваш реальный непустой файл PCM WAV, кодирует все байты файла в base64 и передаёт wav в input_audio.format.</td></tr></tbody></table></div><p>Жизненный цикл: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · точный task_id из существующей записи медиаресурса, принадлежащего Ailoot</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Тарифы</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.</p><dl data-price-conditions><dt>Быстрый режим</dt><dd>Не указано <span class=\"note-s\">При выборе быстрого режима</span></dd><dt>Режим flex</dt><dd>Не указано <span class=\"note-s\">При выборе режима flex</span></dd><dt>Максимальная интенсивность рассуждений</dt><dd>Не указано <span class=\"note-s\">При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ставки Ailoot</h4><h4>Цены по конфигурациям</h4><p class=\"note-s\">Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Конфигурация</th><th>Шкала ставок</th><th>Расчётная единица</th><th>Плата</th></tr></thead><tbody><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Базовые тарифы на токены</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>Базовая ставка</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>—</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>секунда входного аудио</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за секунду входного аудио</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · секунда входного аудио</span> <b>$0.00015</b> <span class=\"price-unit\">за секунду входного аудио</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. <a href=\"/docs/ru/billing/reserve/\">Как работают резервирование и расчёт →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Примеры запросов</h3><h4>Ailoot Ultra · Распознавание речи</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-2158-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2158-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · реальный файл WAV и полный исходный результат</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2158-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2158-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;openai/gpt-transcribe&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Получить и сохранить результаты</h3><h4>Ailoot Ultra · Распознавание речи</h4><p class=\"note-s\">Полное исходное тело ответа, статус и переданные заголовки. Этот обработчик не добавляет универсальную структуру JSON, текстовое поле или оболочку задачи.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Сохраняйте все готовые результаты</h5><p class=\"note-s\">Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.</p><p class=\"note-s\">Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Если нужно проверить исходный ответ</h5><p class=\"note-s\">Сохраните фактический X-Client-Request-ID и полный ответ. Читайте исходные ресурсы, принадлежащие Ailoot, по их точным подписанным URL содержимого; никогда не повторяйте создание с неопределённым исходом.</p></div><details class=\"card-about\" data-output-fields><summary>Поля ответа</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Поле</th><th>Тип</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span></td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ошибки и дальнейшие шаги</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Ответ</th><th>Условие</th><th>Следующий шаг</th></tr></thead><tbody><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Тело JSON или явно указанный канонический ID модели недопустимы.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните ответ и исправьте указанное поле запроса.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Недействительный ключ Ailoot API.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Используйте ваш авторизованный ключ Ailoot API.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>403 · <code>permission_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Группа ключа не допускает этот метод.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните возвращённые подробности ошибки.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>У выбранного метода нет допущенного маршрута.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните возвращённые подробности ошибки.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Для принятого тарифа невозможно определить требуемое количество входных данных или его границу.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните ответ; используйте представление входных данных, требуемое принятым тарифом.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>503 · <code></code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Требуемое хранилище, маршрут, цена метода или резервирование недоступны.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните полный исходный ответ. Неопределённость резервирования не разрешает повторную отправку.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>502 · <code>server_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Исходный результат, использование или окончательный расчёт требуют проверки.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните фактический ID запроса и исходный ответ. Читайте существующую запись ресурса, принадлежащего Ailoot; не повторяйте создание.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Псевдонимы</h3><h4>Псевдонимы моделей</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-transcribe",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-transcribe",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Тело JSON или явно указанный канонический ID модели недопустимы.",
                "http_status": 400,
                "recovery": "Сохраните ответ и исправьте указанное поле запроса.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Недействительный ключ Ailoot API.",
                "http_status": 401,
                "recovery": "Используйте ваш авторизованный ключ Ailoot API.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Группа ключа не допускает этот метод.",
                "http_status": 403,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "У выбранного метода нет допущенного маршрута.",
                "http_status": 404,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Для принятого тарифа невозможно определить требуемое количество входных данных или его границу.",
                "http_status": 422,
                "recovery": "Сохраните ответ; используйте представление входных данных, требуемое принятым тарифом.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Требуемое хранилище, маршрут, цена метода или резервирование недоступны.",
                "http_status": 503,
                "recovery": "Сохраните полный исходный ответ. Неопределённость резервирования не разрешает повторную отправку.",
                "type": null
              },
              {
                "code": null,
                "condition": "Исходный результат, использование или окончательный расчёт требуют проверки.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Сохраните фактический ID запроса и исходный ответ. Читайте существующую запись ресурса, принадлежащего Ailoot; не повторяйте создание.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Сохраните фактический X-Client-Request-ID и полный ответ. Читайте исходные ресурсы, принадлежащие Ailoot, по их точным подписанным URL содержимого; никогда не повторяйте создание с неопределённым исходом."
            },
            "outputs": {
              "all_results": "Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Полное исходное тело ответа, статус и переданные заголовки. Этот обработчик не добавляет универсальную структуру JSON, текстовое поле или оболочку задачи."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "openai/gpt-transcribe"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "openai/gpt-transcribe"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "openai/gpt-transcribe"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Пример читает ваш реальный непустой файл PCM WAV, кодирует все байты файла в base64 и передаёт wav в input_audio.format."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "точный task_id из существующей записи медиаресурса, принадлежащего Ailoot",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00015
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-transcribe",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "2b749ca5e588812afdae806357be65ce3688e7117b8299fa09e8293b03f2db45",
    "input_html_sha256": "db41f5a7776c41d2d1385a8ed167d7fd8e5c0a41041033b3c2f86a497515bcb2",
    "private_audit_sha256": "6af75b6f74e2eae34dd94fca591d33383b07912d37becc94fadbc6225eae070f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ru/openai-gpt-transcribe/",
    "description": "GPT Transcribe превращает записанную речь в текст на исходном языке, используя контекстные подсказки, точные ключевые слова и подсказки о нескольких языках. OpenAI документирует распознавание готового файла, потоковую выдачу результата файла и распознавание после фиксации аудиофрагментов в Realtime.",
    "locale": "ru",
    "md_url": "https://ailoot.ai/models/ru/openai-gpt-transcribe/index.md",
    "title": "OpenAI: GPT Transcribe — Ailoot",
    "url": "https://ailoot.ai/models/ru/openai-gpt-transcribe/"
  },
  "rawModel": {
    "about": "GPT Transcribe — модель OpenAI для преобразования речи в текст из готовых аудиофайлов, потоковой выдачи расшифровок файлов и обработки зафиксированных аудиофрагментов в сессиях Realtime. Она принимает аудио с необязательным текстовым контекстом и возвращает распознанный текст. Разработчик позиционирует её для точной расшифровки записанной речи на исходном языке, включая предметную лексику, многоязычные записи и переключение языков внутри речи. Полезный результат — расшифровка, связанная с записью, и метаданные определённых языков, когда модель может сделать надёжный прогноз.\n\n### Подготовка готовой записи\n\nПроцесс распознавания файлов OpenAI принимает загрузки размером до 25 MB. Текущая справка конечной точки перечисляет входные форматы FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV и WebM и рекомендует передавать достаточно метаданных для определения формата, включая подходящее расширение имени файла и тип содержимого. Для более крупной записи руководство рекомендует сжатие или разделение на файлы не более 25 MB. Не разрезайте предложение посередине: потеря окружающей речи может снизить точность. Сохраняйте порядок фрагментов и их позиции в исходной записи.\n\nДля встречи, интервью или записанной презентации передайте фактическое аудио и укажите тему и термины, которые могут прозвучать. Полезный результат — распознанные слова, а не предполагаемое краткое содержание обсуждения. Сохраняйте идентификатор записи вместе с возвращённым текстом, чтобы проверяющий имя, число или спорную фразу человек мог обратиться к нужному источнику. Затем расшифровку можно использовать для отдельного краткого изложения, перевода или редакторской работы.\n\n### Контекст, ключевые подсказки и ожидаемые языки\n\nРазработчик разделяет три вида указаний. Текстовая подсказка даёт свободный контекст темы или обстановки записи. Ключевые слова задают точные слова или выражения, ожидаемые в речи. Список languages указывает ожидаемые языки. Для двуязычного обсуждения продукта опишите обстановку в подсказке, перечислите названия продуктов как ключевые слова и укажите ожидаемые языки. Это подсказки распознаванию, а не инструкции вставлять лексику, которую никто не произнёс.\n\nGPT Transcribe использует поле languages во множественном числе вместо старого поля language в единственном; OpenAI указывает, что отправлять оба не следует. Руководство принимает поддерживаемые коды ISO 639-1, некоторые коды ISO 639-3 и региональные китайские коды локалей; неподдерживаемые или неверно сформированные значения отклоняются. Каждая ключевая подсказка должна занимать одну строку и не содержать угловых скобок, возврата каретки или перевода строки. Неверная ключевая подсказка или слишком длинный текстовый контекст могут привести к отклонению всего запроса. Сохраняйте уместность контекста и проверяйте, действительно ли подсказанные имена встречаются в аудио, а не считайте список подсказок расшифровкой.\n\n### Вывод JSON и прогнозы определённых языков\n\nДокументированный результат файла — JSON с расшифровкой и определёнными языками. Прогнозы языка являются выводом модели, а не копией переданных языковых подсказок. Пустой список языков допустим, если модель не может сделать надёжный прогноз; сам по себе он не подтверждает тишину в записи или сбой распознавания. Отделяйте распознанный текст от языковых метаданных, чтобы последующая обработка использовала каждую часть по её смыслу.\n\n### Потоковая выдача расшифровки файла\n\nГотовый файл может выдавать текст расшифровки постепенно по мере обработки. OpenAI документирует события transcript.text.delta для частичного текста и transcript.text.done для полной расшифровки файла; финальное событие также содержит определённые языки. Это потоковая выдача результата уже предоставленной записи. Она полезна для отображения прогресса при длинной загрузке, а финальное событие задаёт текст, который нужно сохранить как завершённый результат.\n\n### Зафиксированные аудиофрагменты в сессиях Realtime\n\nУ GPT Transcribe также есть специальный процесс Realtime через WebSocket. Аудио добавляется во входной буфер, затем приложение явно фиксирует аудиофрагмент. Распознавание начинается для этого зафиксированного фрагмента и может выдавать части текста до события завершения, включая сведения об определённых языках. В этом процессе, предусмотренном производителем для сессии, модель автоматически использует ранее распознанные фрагменты как контекст. Это отличается от непрерывной выдачи текста живых субтитров по мере поступления аудио с микрофона; для такого непрерывного процесса OpenAI использует название GPT Live Transcribe.\n\nДля нескольких фрагментов сохраняйте идентификатор входного элемента вместе с соответствующей расшифровкой. OpenAI предупреждает, что события завершения разных фрагментов могут приходить не в порядке речи, поэтому связывайте каждый итоговый результат с зафиксированным вводом, а не стройте беседу только по времени завершения. Полезный материал — упорядоченная расшифровка из правильных итоговых элементов; промежуточный текст считается прогрессом, а не отдельной завершённой репликой.\n\n### Специальные результаты и существенные ограничения\n\nЭтот профиль не задаёт универсальную спецификацию субтитров, временных меток, перевода или меток говорящих. Руководство OpenAI по миграции различает эти специальные возможности: собственные форматы субтитров и временные метки слов требуют совместимых модели и формата, а метки говорящих используют GPT-4o Transcribe Diarize. Результат файла GPT Transcribe — JSON, который не является прямой заменой ответа SRT, VTT или подробного ответа с временными метками. Карточка этой конкретной модели не публикует численный лимит контекста или максимального вывода, поэтому нельзя автоматически переносить контекстное окно чат-модели на распознавание аудио.\n\nСверяйте с записью сложную лексику, числа, акценты, фоновый шум и смену языков. Проверяйте, что полезные подсказки улучшили распознавание, не добавляя непроизнесённые слова, и что итоговая расшифровка включает конец аудио. Для многоязычного результата сохраняйте произнесённые слова перед подготовкой перевода. Эти проверки делают расшифровку полезным исходным материалом, сохраняя различие между контекстными подсказками, определёнными языками и распознанной речью.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Полная информация о ценах конфигурации — в подробностях."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "openai/gpt-transcribe",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Тело JSON или явно указанный канонический ID модели недопустимы.",
                "http_status": 400,
                "recovery": "Сохраните ответ и исправьте указанное поле запроса.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Недействительный ключ Ailoot API.",
                "http_status": 401,
                "recovery": "Используйте ваш авторизованный ключ Ailoot API.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Группа ключа не допускает этот метод.",
                "http_status": 403,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "У выбранного метода нет допущенного маршрута.",
                "http_status": 404,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Для принятого тарифа невозможно определить требуемое количество входных данных или его границу.",
                "http_status": 422,
                "recovery": "Сохраните ответ; используйте представление входных данных, требуемое принятым тарифом.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Требуемое хранилище, маршрут, цена метода или резервирование недоступны.",
                "http_status": 503,
                "recovery": "Сохраните полный исходный ответ. Неопределённость резервирования не разрешает повторную отправку.",
                "type": null
              },
              {
                "code": null,
                "condition": "Исходный результат, использование или окончательный расчёт требуют проверки.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Сохраните фактический ID запроса и исходный ответ. Читайте существующую запись ресурса, принадлежащего Ailoot; не повторяйте создание.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Сохраните фактический X-Client-Request-ID и полный ответ. Читайте исходные ресурсы, принадлежащие Ailoot, по их точным подписанным URL содержимого; никогда не повторяйте создание с неопределённым исходом."
            },
            "outputs": {
              "all_results": "Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Полное исходное тело ответа, статус и переданные заголовки. Этот обработчик не добавляет универсальную структуру JSON, текстовое поле или оболочку задачи."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "openai/gpt-transcribe"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "openai/gpt-transcribe"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "openai/gpt-transcribe"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Пример читает ваш реальный непустой файл PCM WAV, кодирует все байты файла в base64 и передаёт wav в input_audio.format."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "точный task_id из существующей записи медиаресурса, принадлежащего Ailoot",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00015
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-transcribe",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT Transcribe",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "GPT Transcribe превращает записанную речь в текст на исходном языке, используя контекстные подсказки, точные ключевые слова и подсказки о нескольких языках. OpenAI документирует распознавание готового файла, потоковую выдачу результата файла и распознавание после фиксации аудиофрагментов в Realtime."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "GPT Transcribe превращает записанную речь в текст на исходном языке, используя контекстные подсказки, точные ключевые слова и подсказки о нескольких языках. OpenAI документирует распознавание готового файла, потоковую выдачу результата файла и распознавание после фиксации аудиофрагментов в Realtime.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "192a2cd4cf58346e824c9266d386e69993a2f7034a2ce5bcb24c6a8ab04615c6",
    "renderer_sha256": "aa692ffec412026bdeaf316df24a58e6c5083045e5246f6033f898d132afa5ff"
  },
  "sourceRevision": "3b2d5e88ec3d7248a6d3a153d8208862d4f3c485bb503d620707c01fc827940a"
}
