Справочник API
Перевод версии 3.29.2. Основная версия документации — английская (переключатель EN вверху страницы). Если данные в переводе и в английской версии расходятся, верна английская.
Модели ChatGPT (16.10.2026): 12 новых ID
chatgpt-*дляPOST /v1/chat/completions— семейства GPT-6, GPT-5.6, GPT-5.3 со встроенным веб-поиском. Добавьте-searchк базовому ID (например,chatgpt-gpt-6-mini-search) для включения веб-поиска. Цены соответствуют официальным ставкам OpenAI API.chatgpt-research— автономный deep research. Подробнее в разделе GPT ниже.Claude 5.5 — совместимость API (18.10.2026):
claude-opus-5-5иclaude-sonnet-5-5сохраняют ID, тарифы и клиентские скидки. Эти модели поддерживают текст, изображения на входе, стриминг и полный цикл автоматических вызовов функций, включая параллельные.thinking_level:low,medium,high(по умолчанию High). Заявленный контекст — 1M токенов, выход — до 128K; фактическая проверка контекста выполнена на 38K входных токенов. Реальные попадания в кэш возвращаются вusage.prompt_tokens_details.cached_tokensи учитываются в стоимости. На текущих активных маршрутах Claude 5.5 гарантированный JSON object/schema недоступен:response_formatвозвращает 400 до генерации и списания. Просьба вернуть JSON в обычном тексте не гарантирует соблюдение схемы. Принудительный выбор функции на текущих маршрутах Claude 5.5 недоступен и возвращает 400. Параметры не упрощаются молча. API429 не добавляет системный промпт агента или его инструменты.Gemini 4 Argon (15.10.2026): ID
gemini-4-argon, методPOST /v1/chat/completions, обычный ответ и стриминг. Параметрthinking_level:low,mediumилиhigh(по умолчанию). Поддерживаются текст, анализ изображений, функции, исполняемые клиентом, иresponse_format(json_object/json_schema). JSON-стриминг буферизуется до полной проверки JSON и схемы, затем выдаётся в формате OpenAI SSE. Невалидный или обрезанный JSON возвращает 502 без списания API429; невалидная схема — 400 до генерации. Разрешены локальные ссылки в схеме; внешние ссылки и ресурсы$idотклоняются. Встроенные инструменты, видео и сочетание функций с JSON response_format в одном запросе недоступны. Доступ проверяйте своим ключом черезGET /v1/models. Токены рассуждения входят вcompletion_tokensи оплачиваются как выходные. Актуальные цены и скидки — в каталоге API429.
Версия: 3.29.2 | Последнее обновление: 2026-10-18 | Редакция документации: 2026-10-24
Дополнительные текстовые модели (2026-10-13):
gemini-3.1-flash-lite,gemini-2.5-flash-thinkingиgpt-oss-120b-mediumподдерживают чат и стриминг. Проверяйте доступность и разрешения своего ключа черезGET /v1/models, используя точные ID. Тарифы и скидки доступны в актуальном каталоге. Скрытые части рассуждений GPT-OSS не добавляются в текст итогового ответа.Названия моделей изображений: в документации и на сайте каждая модель изображений указана один раз — по техническому ID, а понятное название приведено в скобках. Названия Nano Banana — это алиасы для совместимости, а не отдельные модели. Существующие вызовы API и записи для совместимости в
/v1/modelsдля аутентифицированных пользователей не изменились.GPT-6 Astra:
gpt-6-astraподдерживает текст и изображения, стриминг, reasoning и строгий JSON. Для инструментов, которые выполняются на стороне клиента, включая асинхронные вызовы функций, используйте/v1/responses. Хостинговые инструменты OpenAI, управление через WebSocket и режимы Fast/Flex на этом маршруте не включены. Подробнее — в разделе о GPT ниже.GPT-6.1 Sol (2026-09-30): используйте
gpt-6.1-sol; короткийgpt-6.1— его псевдоним. Из GPT-6.1 доступен только уровень Sol:gpt-6.1-luna,gpt-6.1-astraиgpt-6.1-terraнедоступны. Уровень рассуждения — отlowдоmax(безnone); для инструментов используйте/v1/responses.GPT-6 Sol и Luna (2026-09-23): используйте точные ID
gpt-6-solиgpt-6-luna. Перед использованием проверьтеGET /v1/modelsдля своего токена. Опубликованного IDgpt-6-terraнет;gpt-5.6-terraпо-прежнему доступна.Уточнение о ценах (2026-09-06): числовые таблицы здесь — базовые и конфигурационные ориентиры API429, а не актуальная официальная цена поставщика и не персональная розничная цена. Стандартные розничные цены API429, условия и тарифы кеша берутся из каталога в рантайме. Базовые тарифы GPT-5.6 не изменились; текущие промоцены OpenAI на Sol/Terra ниже. Не рассчитывайте на универсальную экономию 70% относительно сегодняшней цены поставщика.
Актуальные модели Gemini Flash (2026-09-03):
gemini-3.8-flash— последняя стабильная модель Flash, опубликованная API429.gemini-3.7-flashпо-прежнему поддерживается. Примечания к релизам ниже описывают прошлые релизы, а не доступ конкретного токена.Проверяйте доступ с тем же ключом и эндпоинтом: публичный каталог на сайте общий для всей платформы;
GET /v1/modelsфильтруется по токену, с которым выполнен запрос, и по доступным сейчас маршрутам обслуживания. У старого токена может быть явный allowlist моделей, в который новые модели не добавляются автоматически. Отсутствие модели в каталоге токена само по себе не повод повышать тариф. Попросите поддержку проверить права токена на модели, а затем обновите каталог.Если модель из списка возвращает
not supported: повторите проверку каталога с тем же токеном и базовым URL, что и при генерации, и используйте точный канонический ID модели. Эта ошибка также может означать, что allowlist токена не включает модель. Отправьте в поддержку ID модели, эндпоинт, время запроса иtrace_id(или только последние четыре символа токена) — никогда не отправляйте токен целиком. Не повторяйте запросы при постоянном ограничении доступа и не рассчитывайте, что смена тарифа его снимет.Что нового в 3.26.0
- Новые модели Gemini TTS:
gemini-3.8-flash-tts,gemini-3.8-flash-lite-ttsиgemini-2.5-flash-preview-ttsдоступны наPOST /v1/audio/speechвместе сgemini-3.1-flash-tts-preview. См. «Синтез речи».- Распознавание речи: новый OpenAI-совместимый
POST /v1/audio/transcriptionsс модельюgemini-3.5-transcribe— форматыjson,text,verbose_json(сегменты с метками спикеров, таймкоды слов),srtиvtt. См. «Распознавание речи».Что нового в 3.25.0
- Eleven v4 и v4 Turbo:
eleven_v4иeleven_v4_turbo, новейшие речевые модели ElevenLabs (вышли 2026-09-28, 90+ языков), доступны наPOST /v1/audio/speechи выводятся вGET /v1/models.eleven_v3по-прежнему доступна без изменений. См. «Модели ElevenLabs».Что нового в 3.24.0
- Расширенный текстовый каталог: Kimi (
kimi-k3,kimi-k2.7-code), Qwen (qwen-3.8-max,qwen-3.8-flash), GLM (glm-5.3,glm-5.3-flash,glm-5.2,glm-5-turbo), DeepSeek (deepseek-v4-pro,deepseek-v4.1-flash), MiMo (mimo-v2.5-pro,mimo-v2.5),minimax-m3,hy4-previewиcomposer-2.5-fastнаPOST /v1/chat/completions. См. «Расширенные текстовые модели».- Новые ID Claude, Gemini и Grok:
claude-fable-5.1,gemini-3.6-flashиgrok-4.5.- Эти модели принимают только текстовый ввод.
Что нового в 3.23.0
- GPT Image 2.5:
gpt-image-2.5-flare(быстрый режим) иgpt-image-2.5-sunburst(режим thinking) доступны наPOST /v1/images/generationsпо фиксированной цене за изображение: $0.053 и $0.211 официально, $0.0159 и $0.0633 по стандартной цене API429. См. «GPT Image 2.5».- Горизонтальные и вертикальные размеры сохраняют пропорции: на
/v1/images/generationsзначенияsize:"1536x1024"иsize:"1024x1536"теперь дают изображения 3:2 и 2:3 вместо квадратных, а любое другоеWIDTHxHEIGHTиспользует ближайшее поддерживаемое соотношение сторон. Размеры DALL·E иgpt-image-2не изменились.Что нового в 3.22.1
- GPT-5.4 / 5.3 / 5.2 выведены из эксплуатации у поставщика: 2026-09-08 OpenAI перестала обслуживать
gpt-5.4,gpt-5.4-mini,gpt-5.3-codexиgpt-5.2через API429. Эти ID по-прежнему принимаются как алиасы для совместимости:gpt-5.4-mini(иgpt-5-mini) разрешаются вgpt-5.6-luna, остальные — вgpt-5.6-terra. Каждый запрос тарифицируется по ставке итоговой модели. Явно перейдите на ID GPT-5.6.- Доступна
gpt-5.6-luna: облегчённый уровень GPT-5.6 теперь работает в Chat Completions и Responses по цене $1.00 / $0.10 / $1.25 / $6.00 за 1M (ввод / кешированный ввод / запись в кеш / вывод).Релиз GPT-6.1 Sol (2026-09-30)
gpt-6.1-solдобавлен в публичный каталог;gpt-6.1— его псевдоним. Цены: $2.00 / $0.10 / $2.50 / $10.00 за 1M (вход / кэш / запись в кэш / выход); при входе свыше 272K — $4 / $0.20 / $5 / $15.- Остальные уровни GPT-6.1 на этом маршруте отвечают «not supported» и не публикуются.
Релиз GPT-6 Sol/Luna (2026-09-23)
- Канонические
gpt-6-solиgpt-6-lunaдобавлены в публичный каталог.gpt-6-terraне является доступным ID модели.- Существующие allowlist токенов не изменились.
Что нового в 3.20.3
- Изображения в Chat Completions:
message.imagesи реальныйusage: модель изображений на/v1/chat/completionsтеперь возвращает картинки вmessage.imagesкак частиimage_url(такой формат используют OpenRouter и Vercel AI SDK) в дополнение к markdown data URI, который остаётся вcontent.usageбольше не равен{0, 0, 0}: в нём указаны текстовые токены промпта плюс 1290 за каждое референсное изображение, 1290 за каждое сгенерированное изображение (completion_tokens_details.image_tokens) иimage_count. При стриминге отправляются одно событие с изображением, финальный чанк и, если заданstream_options.include_usage, чанк с usage перед[DONE]. Тарификация не изменилась: за каждое сгенерированное изображение. См. «Модели изображений в Chat Completions».gemini-2.5-flash-imageна/v1/chat/completionsснова генерирует изображения: модель теперь работает через путь генерации изображений, как и остальные модели изображений Gemini. Текстовый промпт возвращает сгенерированное изображение, частиimage_urlв последнем сообщении пользователя используются как исходник для редактирования, а запрос тарифицируется по ставке для изображений. Раньше вызов мог вернуть пустой контент (только reasoning-токены) и тарифицироваться как текстовый.- Без оплаты, если модель изображений не вернула изображение: если модель изображений Gemini отвечает на чат-запрос без изображения и без видимого текста, шлюз возвращает
502с сообщениемThe image model returned no image; the request was not billed.вместо платного пустого200.capabilitiesвGET /v1/models: каждый элемент модели теперь содержит списокcapabilities(например,["chat", "image_editing", "image_generation", "vision"]) — те же значения, что публикует публичный каталог. Чтобы выбрать модель для/v1/images/edits, ориентируйтесь наimage_editing, а не проверяйте модели платными вызовами. Стандартные поля OpenAI не изменились.- Алиасы изображений в списке моделей:
nano-bananaиnano-banana-proснова отображаются вGET /v1/models(Google обслуживает их какgemini-2.5-flash-image/gemini-3-pro-image).nana-bana-proи выведенные из эксплуатацииgemini-3-pro-image-preview/gemini-3.1-flash-image-previewпо-прежнему принимаются как алиасы для совместимости, но в списке не отображаются.- Совместимость Gemini 3.5 Flash:
gemini-3.5-flash-low,-mediumи-highостаются алиасамиgemini-3.5-flashпо той же цене. Для управления рассуждением используйтеthinking_level(low/medium/high).gemini-3.5-flash-lowбольше не выводится вGET /v1/models.- Уведомления о недоступности модели: ответ, содержащий только уведомление о снятии модели, считается ошибкой и не оплачивается.
Что нового в 3.20.2
- Доступ к музыке для клиентов: новые активные токены
external_customerпо умолчанию получают асинхронные скоупыvideoиaudio. Существующие клиентские и проектные токены обновляются, только если у них сохранена управляемая политика API429.- Доступ к музыке: чтобы токен с ограниченным allowlist моделей мог генерировать музыку, в allowlist должна входить
lyria-3-pro-preview.Что нового в 3.20.0
- Генерация музыки Lyria 3 Pro: добавлена
lyria-3-pro-previewчерез надёжный асинхронный APIPOST /v1/music/generations.- Песни и инструментальные треки: в промпте можно указать жанр, настроение, аранжировку и структуру; при необходимости передайте текст песни или запросите только инструментальную версию. Результат — MP3, доступный по HTTPS URL.
- Безопасные платные запросы:
Idempotency-Keyобязателен, задания никогда не перезапускаются автоматически после неопределённого результата у поставщика, а каждая готовая песня стоит $0.08.Что нового в 3.19.0
- Gemini 3.8 Flash GA: добавлен точный канонический ID модели
gemini-3.8-flash, общедоступной с 2026-09-02. API429 предоставляет её как с аутентификацией по клиентскому токену, так и через Service Account.- Контекст и reasoning: окно ввода 1,048,576 токенов, лимит вывода 65,536 токенов и уровни reasoning
low/medium/high, по умолчаниюmedium.- Только канонические запросы: не добавляйте к ID модели
-non-thinkingили суффиксы уровня усилий. Пользовательскиеtemperature,top_p,top_kиn/ нативныйcandidateCountне поддерживаются.- Строгая валидация запросов: генерация должна заканчиваться непустым текстовым сообщением пользователя; сообщения с предзаполнением ответа модели отклоняются. Нативным частям
FunctionResponseнужны и ID вызова, и имя функции.- Промоцены: $0.75 за ввод, $0.075 за кешированный ввод и $3.75 за вывод (включая thought-токены) за 1M токенов до 2026-12-31. В 2027 году цены удвоятся до $1.50 / $0.15 / $7.50, и до 2027-01-01 потребуется обновить цены.
Что нового в 3.18.0
- Gemini Omni 1.1 Flash: используйте стабильный клиентский ID модели
gemini-omni-1.1-flash. Выведенный из эксплуатацииgemini-omni-flash-previewи короткое написаниеgemini-omni-flashостаются алиасами для совместимости, которые принимаются только во входящих запросах.- Новые параметры Omni: к
720pдобавлены360p,1080pи4k, интерполяция по первому и последнему кадру и продление исходного видео.- Тарификация видео с учётом разрешения: для резервирования и fallback-расчёта usage в Omni используется опубликованный Google тариф за токены для запрошенного разрешения; если поставщик возвращает нативный usage, приоритет у него.
- Безопасный доступ к видео по умолчанию: активные токены внешних клиентов по умолчанию получают только асинхронный скоуп
video. Асинхронные скоупы для текста, изображений и аудио по-прежнему включает администратор явно.- Единая тарификация нативного TTS: речевые запросы Gemini
generateContent, включая запросы с несколькими спикерами, теперь используют ту же предварительную проверку баланса по символам и однократное списание за успешный запрос, что и/v1/audio/speech.Что нового в 3.17.0
- Исправлен контракт Gemini TTS:
gemini-3.1-flash-tts-preview— актуальная речевая модель Gemini в обоих TTS-интерфейсах API429. ID моделей Cloud TTS больше не представлены как модели GeminigenerateContent.- Медиа без потерь при обмене: принимаются стандартный и URL-safe base64; шлюз возвращает канонический стандартный base64 с паддингом.
- Контракт ответа для изображений:
response_format:"url"всегда возвращаетurl(с fallback на data URI), фактический MIME ответа сохраняется.- Уточнена тарификация по разрешению: точные цены Gemini Flash и Pro указаны для 1K, 2K и 4K, включая стандартные цены API429 со скидкой.
Что нового в 3.16.0
- Фирменный эндпоинт: API теперь опубликован по адресу
https://gateway.api429.com. Прежний адрес продолжает работать; миграция не требуется.Что нового в 3.16.0
- Клонирование голоса: загрузите запись в
POST /v1/audio/voicesи передайте полученный id какvoiceвPOST /v1/audio/speech. Голос доступен только ключу, который его создал. Тарифицируется посимвольно, как любой другой синтез; регистрация голоса бесплатна.- Каталог голосов:
GET /v1/audio/voicesвозвращает публичные голоса, которые принимает модель, с фильтрацией поlanguageиq. Добавьтеscope=mine, чтобы получить свои клонированные голоса.voiceобязателен дляfish-s2.1-pro: значения по умолчанию нет. Если параметр не передан или вместо 32-символьного id передано имя голоса, возвращается400— неверный голос никогда не подменяется молча.Что нового в 3.15.0
- Дополнительный каталог медиа: отдельный набор моделей для изображений, редактирования и видео, которые включаются для аккаунта по запросу, а не доступны по умолчанию: Midjourney, FLUX.1, Qwen Images, Sora Images, DALL·E 3, замена одежды и видео (Veo, Kling, Pika, замена лица, апскейл). Цены по запросу.
- Пакеты Midjourney: генерация по умолчанию возвращает все 4 изображения задания (оплата взимается за задание, а не за каждое возвращённое изображение); чтобы получить меньше, явно передайте
n. Параметрыsize/aspect_ratioна уровне запроса игнорируются — используйте--arвнутриprompt.- Модификации Midjourney: каждое сгенерированное изображение возвращает
id; передайте его какsource_image_idвместе сmj-upscale,mj-upscale-creative,mj-outpaint-*,mj-variations-subtle,mj-variations-strongилиmj-remix, чтобы обработать это изображение.Что нового в 3.14.0
- Fish Audio TTS: новая
fish-s2.1-proнаPOST /v1/audio/speech— более 80 языков, большая публичная библиотека голосов, $0.015 / 1K символов официально ($0.0045 после стандартной скидки 70%).- Форматы вывода:
fish-s2.1-proучитываетresponse_format—mp3(по умолчанию),wav,pcm,opus. Используйтеwav, если потребителю нужен RIFF/WAVE.- Длинное озвучивание: длинный текст разбивается по границам предложений, синтезируется параллельно и возвращается одним склеенным клипом. Час речи синтезируется примерно за три минуты;
opusсклеить нельзя, поэтому для длинного текста он возвращает400.- Выдача по ссылке: передайте
"delivery": "url"в/v1/audio/speech, чтобы получить JSON-дескриптор со ссылкой на CDN вместо байтов аудио. Если параметр не передан, ответ с сырыми байтами не меняется.Что нового в 3.13.0
- Grok 4.6: добавлен точный канонический ID модели xAI
grok-4.6после того, как проверки в продакшене подтвердили работу текста, vision, reasoning, function calling, структурированного вывода, Chat Completions и Responses API.- Reasoning:
reasoning_effortпринимаетlow,medium,highилиxhigh; если параметр не передан, используется значение xAI по умолчаниюhigh. Отключить reasoning нельзя.- Точный usage и тарификация: кешированный ввод и reasoning-токены сохраняются и оплачиваются один раз. Официальные стандартные тарифы: $2 за ввод / $0.50 за кешированный ввод / $6 за вывод за 1M при вводе меньше 200K токенов и $4 / $1 / $12 начиная с 200K токенов ввода — до скидок API429.
- Инструменты с закрытым по умолчанию доступом: локальные function tools поддерживаются. Отдельно тарифицируемые инструменты xAI для веб-поиска, X и выполнения кода не предоставляются, пока не появится учёт по каждому вызову.
Что нового в 3.12.0
- Gemini 3.7 Flash: добавлена стабильная модель
gemini-3.7-flashс окном ввода 1,048,576 токенов, лимитом вывода 65,536 токенов, мультимодальным вводом и текстовым выводом. О последней опубликованной модели Flash см. примечание об актуальных моделях выше.- Подтверждённая доступность: проверка в продакшене подтвердила канонический ID. API429 публикует только
gemini-3.7-flash; суффиксы уровня усилий, специфичные для поставщика, не входят в публичный API.- Текущие промоцены: $0.75 за ввод, $0.075 за кешированный ввод и $3.75 за вывод за 1M токенов до 2026-12-31. Google объявила цены $1.50 / $0.15 / $7.50 с 2027-01-01.
- Параметры для совместимости: клиенты OpenAI могут передавать
temperature,top_p,top_kиthinking_budget; API429 удаляет эти неподдерживаемые параметры перед отправкой. Используйтеthinking_levelилиreasoning_effortсо значениемlow,mediumилиhigh(по умолчаниюmedium).Что нового в 3.11.0
- Nano Banana Pro в GA: используйте канонический ID
gemini-3-pro-image. Выведенный из эксплуатации IDgemini-3-pro-image-previewи понятные названияnano-banana-pro/nana-bana-proпо-прежнему принимаются как алиасы для совместимости и заменяются перед запросом к Google.- Повторный аудит каталога моделей: каждая таблица
Available Models(текст, GPT, Claude, изображения, видео, TTS) сверена с актуальными ценами; другие ID и цены не изменились.Что нового в 3.10.0
- Единая модель ElevenLabs: семейство ElevenLabs теперь представлено одной канонической моделью
elevenlabs-gen, которая указана вGET /v1/modelsпо цене $0.100 / 1K символов официально ($0.030 после стандартной скидки 70%). Запросы оплачиваются по тарифуelevenlabs-gen.- Старые ID по-прежнему принимаются:
eleven_v3,eleven_multilingual_v2,eleven_flash_v2_5иapi429-ttsпродолжают маршрутизироваться для обратной совместимости, но больше не указываются в каталоге; в новых интеграциях используйтеelevenlabs-gen.Что нового в 3.9.0
- Claude Opus 5 и Claude Fable 5:
claude-opus-5иclaude-fable-5доступны для чат-нагрузок Claude. Обе модели указаны в таблице цен Claude ниже и обслуживаются через стандартную цепочку поставщиков Claude.- Оплата ElevenLabs: запросы оплачиваются по тарифу запрошенной модели.
- Общий алиас ElevenLabs:
api429-ttsзапрашивает синтез речи ElevenLabs без привязки к конкретной модели; он разрешается в текущую модель по умолчанию (eleven_multilingual_v2).- Исправление по Gemini TTS: прежнее развёртывание нескольких моделей заменено. Актуальная модель Gemini TTS на
/v1/audio/speechи в нативном шлюзе Gemini —gemini-3.1-flash-tts-preview.- Фильтр контента: если текст для TTS отклонён фильтром контента речевого поставщика, теперь возвращается
422с указанием числа заблокированных фрагментов вместо общей ошибки.- Варианты Gemini с фиксированным уровнем reasoning:
gemini-3.5-flash-lowиgemini-3.1-pro-lowзадокументированы и тарифицируются по ставке базовой модели.- Очистка каталога:
GET /v1/modelsсодержит поддерживаемые публичные ID. Для новых интеграций используйте документированные канонические ID.Что нового в 3.8.0
- ElevenLabs TTS: добавлены
eleven_v3,eleven_multilingual_v2иeleven_flash_v2_5на OpenAI-совместимом эндпоинтеPOST /v1/audio/speech.- Нативные голоса: передавайте
voice_idElevenLabs через стандартное полеvoice; запрошенная модель ElevenLabs сохраняется на всём пути запроса.- Прозрачные цены: в каталоге указаны официальная цена ElevenLabs за символы и стандартная цена API429 после скидки 70%.
Что нового в 3.7.0
- Видео Gemini Omni Flash: добавлена нативная генерация
gemini-omni-flash-previewчерез асинхронный API/v1/videos/generations. Принимаемый алиас для совместимости —gemini-omni-flash.- Мультимодальные сценарии для видео: поддерживаются text-to-video, image-to-video, reference-to-video, редактирование исходного видео и последовательное редактирование с сохранением состояния через
previous_job_id.- Usage и тарификация: завершённые задания Omni показывают нативный usage по токенам ввода, вывода и thought-токенам, если Google их предоставляет, а итоговое списание пересчитывает первоначальный резерв по возвращённому usage.
- Целостность модели: запросы Omni не перенаправляются молча на Veo или другую видеомодель. Доступность для своего токена проверяйте в
GET /v1/models.Что нового в 3.6.0
- Семейство GPT-5.6: добавлены
gpt-5.6(алиасgpt-5.6-sol),gpt-5.6-solиgpt-5.6-terraдля Chat Completions и Responses API.- Reasoning: GPT-5.6 поддерживает
none,low,medium,high,xhighиmax; по умолчанию —medium.- Usage и тарификация: usage по чтению и записи кеша сохраняется, запросы со стримингом тарифицируются по финальному событию usage, а для запросов более 272K токенов ввода действуют опубликованные тарифы для длинного контекста.
- Доступность:
gpt-5.6-lunaна момент запуска была недоступна; она указана в списке начиная с 3.22.1. Авторитетный каталог для каждого токена —GET /v1/models.Что нового в 3.5.10
- Nano Banana 2 Lite (
gemini-3.1-flash-lite-image/nano-banana-2-lite) теперь доступна наPOST /v1/images/generations.- Цены: генерация изображений Lite тарифицируется по $0.0336 за 1K выходного изображения; пакетные задания с изображениями используют пакетную единицу $0.0168.
- Алиас для совместимости:
nano-banana-2-liteпринимается как алиасgemini-3.1-flash-lite-image.Что нового в 3.5.9
- Claude Sonnet 5 (
claude-sonnet-5/claude-sonnet-5.0) теперь доступна для чат-нагрузок Claude через стандартную цепочку поставщиков Claude.- Цены и контекст: Sonnet 5 указана по цене $2 за ввод / $10 за вывод за 1M токенов в текущий период стартовых цен и поддерживает контекстное окно 1M токенов.
- Примечание о доступности: Sonnet 5 доступна через текущие маршруты Claude в шлюзе; детали маршрутов конкретных поставщиков намеренно не входят в публичный контракт.
Что нового в 3.5.8
- Anthropic-совместимый Messages API: задокументирован
POST /v1/messagesдля клиентов Claude, которые уже используют формат официального Anthropic Messages API. Используйте аутентификациюx-api-keyи тот же клиентский токен API429.- Прозрачный usage Claude: уточнены поля
usage.input_tokens/usage.output_tokensв нативных ответах Messages иprompt_tokens/completion_tokensв OpenAI-совместимых ответах.- Нативный стриминг Claude: задокументирован порядок SSE-событий Anthropic для
stream:trueна/v1/messages.- Примечания о кеше и веб-поиске Claude: задокументирован текущий публичный контракт для полей usage prompt cache и сквозной передачи серверных инструментов Anthropic.
Что нового в 3.5.7
- Модели Grok: добавлены текстовые модели xAI Grok —
x-ai/grok-4,x-ai/grok-4-reasoning,x-ai/grok-3,x-ai/grok-3-reasoning— на стандартном эндпоинтеPOST /v1/chat/completions.- Расширенный текстовый каталог: теперь можно выбрать дополнительные чат-ID с префиксом поставщика —
openai/gpt-5,openai/gpt-5-instant,openai/gpt-5-thinking, а такжеgoogle/gemini-3-pro,google/gemini-2.5-pro,google/gemini-2.5-flash.- Новые модели изображений: в
POST /v1/images/generationsдобавленыnano-banana-2(алиасgemini-3.1-flash-image),api429-image,gpt-image-1иgrok-image(xAI Aurora).- Проверяйте доступность через
GET /v1/modelsс тем же токеном и базовым URL, что и при генерации. Ответ отражает права на модели и доступность обслуживания, а не автоматическое обещание доступа после смены тарифа.Что нового в 3.5.6
- Видео на входе в чате Gemini: текстовые маршруты Gemini с доступом по токену теперь принимают видео на
POST /v1/chat/completionsчерез OpenAI-совместимые части контента сообщения.- Поддерживаемые форматы видео на входе:
input_videoс данными в base64 и прямыеvideo_url, которые шлюз временно размещает у себя перед отправкой в Gemini.- Поддержка стриминга:
stream:trueработает для чат-запросов с видео на входе и возвращает стандартные OpenAI-совместимые SSE-чанки.Что нового в 3.5.5
- Генерация видео Veo 3.1: добавлена документация по асинхронной генерации видео для
veo-3.1-generate-001,veo-3.1-fast-generate-001иveo-3.1-lite-generate-001.- Нативные пути миграции: клиенты могут использовать маршрут в стиле API429/OpenAI
/v1/videos/generationsили Vertex-совместимые маршрутыpredictLongRunning/fetchPredictOperation, изменив только базовый URL и токен.- Тарификация видео: задокументированы посекундные прайс-листовые цены Veo 3.1 и поведение асинхронного опроса.
Что нового в 3.5.4
- Gemini 3.5 Flash (
gemini-3.5-flash) теперь входит в публичный текстовый каталог Gemini. Модель поддерживает чат, стриминг, мультимодальный ввод, функции и инструменты, структурированный вывод, grounding через поиск, выполнение кода и thinking. Вывод — только текст.- Цены:
gemini-3.5-flashтарифицируется по текстовому тарифу Google Standard PayGo Global: $1.50 за ввод / $9.00 за вывод за 1M токенов. Для генерации изображений, TTS и эмбеддингов используются отдельные ID моделей.Что нового в 3.5.3
- Самодостаточная клиентская документация: удалены ссылки на отдельные руководства
.md, которые не публикуются. Примеры для GPT Image 2, Claude, TTS, эмбеддингов и мультимодальности теперь находятся в этом справочнике API.- Очистка публичного контракта Claude: в публичной документации указаны только канонические ID моделей Claude (
claude-*).- Сборник решений для клиентов: добавлены конкретные рекомендации по разбору SSE, редактированию изображений и референсным изображениям, повторам при 429/503, неподдерживаемым полям и несоответствию эндпоинта и модели.
Что нового в 3.5.2
- Аудит публичного каталога моделей: таблицы GPT и Gemini теперь соответствуют текущему каталогу
/v1/models, видимому клиентам. Неподдерживаемые устаревшие ID GPT/Codex и preview пользовательских инструментов Gemini с доступом по allowlist больше не указываются как публичные ID моделей.- Уточнены канонические ID: в новых интеграциях используйте точные ID моделей из этих таблиц. Авторитетным allowlist для каждого токена остаётся
GET /v1/models.Что нового в 3.5.1
- Руководство по GPT Image 2 для клиентов: уточнено, как вызывать
gpt-image-2через эндпоинты Images API429 и как рассчитывается стоимость по текстовому вводу, вводу изображений и выводу изображений.- Обновление цен GPT Image 2: примечания о тарификации API429 обновлены в соответствии с текущими тарифами OpenAI за токены GPT-Image-2 и официальными примерами калькулятора цены за изображение.
Что нового в 3.5.0
- Обновление каталога Claude: все публичные текстовые модели Anthropic/Claude указаны с каноническими ID моделей, принимаемыми алиасами, контекстными окнами и прайс-листовыми ценами API429.
- Очистка руководства по интеграции Claude: публичная документация теперь описывает только клиентский контракт API (
/v1/chat/completions, стриминг и задания).Что нового в 3.4.0
- GPT Image 2:
model:"gpt-image-2"на/v1/images/generationsи/v1/images/editsзадокументирована как отдельный путь GPT Image, а не как алиас модели изображений Gemini.- Редактирование и референсные изображения GPT Image: рекомендации для
/v1/images/editsиimage_generationв Responses теперь охватываютinput_image, маски, поддерживаемые параметры вывода, конкретные цены GPT Image 2, а также видимое клиенту поведение повторов и ошибок.Что нового в 3.3.0
- Обновления стриминга Claude для обычных чат-запросов с
stream:true. Текстовые дельты передаются через OpenAI-совместимый SSE.stream:true + toolsпо-прежнему использует синтетический SSE.Что нового в 3.2.0
- Необязательные заголовки Claude для длинной генерации в пакетных сценариях для сценаристов и многоходовых диалогах:
X-Session-Keyдля непрерывности диалога иX-Async-Jobs-Optin: trueдля надёжных заданий при перегрузке. См. «Необязательные заголовки» в разделе о моделях Claude ниже.Что нового в 3.1.0
- Claude Sonnet 4.5 (
claude-sonnet-4-5/claude-sonnet-4.5) — те же цены, что у 4.6 ($3 / $15 за 1M), контекст 200k, Extended Thinking включён.- GPT-5.5 (
gpt-5.5) — передовая модель OpenAI, $5 / $30 за 1M.- Gemini 3.1 TTS preview (
gemini-3.1-flash-tts-preview) — актуальная речевая модель Gemini в API429.OpenAI-совместимый шлюз для моделей чата, изображений, синтеза речи и эмбеддингов семейств Gemini, GPT и Claude, а также нативно-совместимые точки входа Gemini и Anthropic для клиентов, которые уже используют эти SDK. Поддерживаются оба формата: Chat Completions и Responses API. Работает с любым клиентом OpenAI SDK (Python, JS, Go, Rust, Ruby, Java, cURL).
Цикл вызова функций Argon
Передавайте OpenAI tools с type: "function". tool_choice поддерживает
auto, none, required и стандартный объект с именем объявленной функции.
При finish_reason: "tool_calls" ваше приложение исполняет функции. Добавьте
в историю полное сообщение assistant, сохранив id и
extra_content.google.thought_signature там, где Google её прислал. Затем добавьте для
каждого вызова сообщение role: "tool" с соответствующим tool_call_id
и результатом функции. Отправьте историю с той же моделью и объявлениями
функций, обычно с tool_choice: "auto", чтобы получить итоговый ответ.
Стриминг и несколько вызовов в одном ответе поддерживаются: собирайте вызовы
по index, сохраняя подписи. API429 сам ваши функции не исполняет.
Google может подписать только первый вызов в группе; добавлять подписи самим не нужно.
Для ответа по схеме передавайте, например,
{"type":"json_schema","json_schema":{"name":"answer","strict":true,"schema":{"type":"object","properties":{"answer":{"type":"integer","enum":[42]}},"required":["answer"],"additionalProperties":false}}}
в response_format. API429 проверяет исходную схему, включая обязательные
поля, enum и запрет лишних полей, и убирает целую Markdown-обёртку JSON,
если она присутствует в ответе. Повреждённый JSON не исправляется догадками; повторная
платная генерация для исправления не запускается. В режиме json_object
результат должен быть JSON-объектом.
Studio в браузере и справочник API
Studio — визуальная песочница, а не справочник по эндпоинтам. В ней доступны работа с текстом, генерация одного изображения и TTS с одним спикером с помощью персонального клиентского ключа API429. Список моделей отфильтрован по режимам, которые поддерживает Studio, и по текущему доступу ключа; наличие маршрута в списке не гарантирует его доступность. Генерация видео в интерфейсе Studio пока недоступна. Для произвольных поддерживаемых payload API используйте интерактивный справочник API.
Studio поддерживает elevenlabs-gen с настроенным голосом по умолчанию и выводом в MP3. Выбор голоса Gemini TTS появляется, только если gemini-3.1-flash-tts-preview действительно опубликована и доступна ключу; устаревший пример Gemini этот маршрут не включает.
- Гостевые примеры — это подготовленные демонстрации с явной пометкой; они не вызывают модель и не списывают средства. Голосовое демо объясняет работу плеера, а не воспроизводит выдуманный результат.
- Реальные запуски используют ваш собственный оплаченный баланс. Подключение ключа и получение оценки стоимости бесплатны. Studio не принимает ключ администратора и не предоставляет общий ключ поставщика.
- Перед запуском Studio показывает резерв. Сервер не позволяет превысить показанный максимум, списывает фактическое использование через обычную тарификацию и возвращает неиспользованную сумму. У прямых вызовов API своя тарификация, и лимиты расходов Studio на них не распространяются.
- Лимиты MVP: 2,000 символов в промпте, 1,024 токена вывода для текста, одно изображение 1K, один активный запуск на кошелёк оплаты, 10 допусков в минуту и $5 суммарных резервов в сутки (UTC), не более $1 резерва на запуск. Неудачные допуски не расходуют средства; завершённые неудачные запуски всё равно учитываются в суточной квоте резервов. Ключи проектов делят лимиты кошелька родительского аккаунта. Запросы метаданных дополнительно ограничены для каждого кошелька и процесса.
- Если ответ завершился ошибкой и оплачиваемое использование не зафиксировано, резерв возвращается. При тайм-ауте, обрыве соединения или отсутствии данных учёта запрос откладывается до сверки; это не доказывает, что поставщик прекратил работу. Используйте Проверить запрос и отправьте в поддержку показанный ID запроса. Не запускайте новые генерации и не обновляйте страницу, пока не сохраните этот ID.
- Проверка запроса работает строго в режиме чтения: она не может запустить генерацию, даже если исходный запрос не дошёл до сервера. Неизвестный запрос остаётся неразрешённым, пока вы не проверите его снова или не обратитесь в поддержку. Оценки стоимости используют маршрут цен из каталога для выбранной модели, а интерфейс показывает небольшие списания с точностью до шести знаков после запятой.
- Ваш API-ключ хранится в памяти вкладки и передаётся по HTTPS только в API429 для выполнения запроса; в хранилище браузера он не сохраняется. В Studio нет маркетинговой записи сессий и скриптов аналитики. Тела результатов шифруются на сервере, доступны для повторного просмотра в течение 24 часов, а затем удаляются периодической очисткой. Финансовые записи и ID запросов сохраняются. Обычная обработка на стороне поставщика и журналирование сервиса по-прежнему применяются.
Studio по-русски
Открыть Studio: выберите режим, подключите клиентский ключ из личного кабинета, введите запрос и проверьте резерв перед платным запуском. Технический справочник находится отдельно. Гостевой демопример не обращается к модели. При неопределённом результате используйте «Проверить запрос» и сохраните Trace для поддержки; новый платный запрос автоматически не запускается. Видео пока не включено в интерфейс Studio.
Быстрый старт
Base URL: https://gateway.api429.com/v1
Auth: Authorization: Bearer YOUR_API_KEY
Прежний адрес
https://hostkey24760.api429.comпродолжает работать; в существующих интеграциях ничего менять не нужно. В новых интеграциях используйтеhttps://gateway.api429.com.
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY"
)
response = client.chat.completions.create(
model="gemini-3.1-pro",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
Содержание
- Эндпоинты и матрица аутентификации
- Аутентификация
- Текстовые модели (Chat Completions)
- Responses API
- Модели GPT
- Grok и расширенный каталог
- Модели Claude
- Модели генерации изображений
- Эмбеддинги
- Модели для генерации видео
- Синтез речи (Text-to-Speech)
- Практикум по интеграции
- Files API
- Использование и баланс клиента
- Обработка ошибок
- Ограничения частоты запросов
- Поддерживаемые SDK
Эндпоинты и матрица аутентификации
Один и тот же базовый хост (https://gateway.api429.com) обслуживает четыре семейства API.
Выберите то, которое соответствует вашему SDK.
| Семейство API | Пути | Аутентификация |
|---|---|---|
| OpenAI-совместимое | /v1/*, /hf/v1/*, /openai/v1/* — models, chat/completions, responses, images/generations, embeddings, audio/speech |
Authorization: Bearer <token> |
| Anthropic-совместимое | POST /v1/messages — формат запросов и ответов Claude Messages API, включая SSE-стриминг в стиле Anthropic |
x-api-key: <token> |
| Нативное Gemini | /v1beta/models/{model}:generateContent, :streamGenerateContent, :countTokens, :embedContent, :batchEmbedContents (также под /gemini/v1beta/*) |
x-goog-api-key: <token> или ?key=<token> |
| Vertex Express | /vertex-express/v1beta/models/{model}:generateContent, :streamGenerateContent, GET /vertex-express/v1beta/models |
x-goog-api-key: <token> или ?key=<token> |
| Генерация видео | /v1/videos/generations, /v1/videos/generations/{job_id}, Vertex-совместимые :predictLongRunning / :fetchPredictOperation |
Bearer-токен для /v1/videos/*; x-goog-api-key, ?key= или Bearer-токен для Vertex-совместимых маршрутов |
| Files API | POST /upload/v1beta/files, GET/DELETE /v1beta/files[/…] (а также варианты с /gemini/) |
x-goog-api-key: <token> или ?key=<token> |
| Использование клиента | GET /api/client/balance, GET /api/client/usage/daily, GET /api/client/usage/summary, POST /api/client/usage/daily/telegram |
Authorization: Bearer <token> |
Эндпоинты со стримингом возвращают text/event-stream (SSE). Payload ошибок приводятся
к виду {"error": {"code": ..., "message": ...}}.
Аутентификация
Все OpenAI-совместимые эндпоинты и эндпоинты использования клиента требуют Bearer-токен:
Authorization: Bearer YOUR_API_KEY
Anthropic-совместимый /v1/messages принимает тот же клиентский токен API429 в
стандартном заголовке Anthropic:
x-api-key: YOUR_API_KEY
anthropic-version принимается для совместимости с SDK. Шлюз не требует
от клиентов закреплять конкретную версию.
Эндпоинты Gemini-native, Vertex Express и Files API принимают заголовок или query-параметр в стиле Google:
x-goog-api-key: YOUR_API_KEY
GET /v1beta/models?key=YOUR_API_KEY
Токены выдаются через панель администратора. Для получения доступа обратитесь к администратору.
Аутентификация через Service Account (SA) также поддерживается для клиентов Google Vertex AI SDK. Инструкции по настройке и примеры см. на отдельной вкладке Руководство по Service Account.
Текстовые модели (Chat Completions)
Доступные модели
| Модель | Статус | Ввод, $/1M токенов | Вывод, $/1M токенов | Возможности |
|---|---|---|---|---|
gemini-3.8-flash |
Стабильная | $0.75 | $3.75 | чат, vision/мультимодальный ввод, thinking, JSON/schema, URL context, countTokens |
gemini-3.7-flash |
Стабильная | $0.75 | $3.75 | чат, мультимодальный ввод, thinking, JSON/schema, URL context |
gemini-2.5-flash-lite |
Стабильная | $0.10 | $0.40 | чат |
gemini-2.5-flash |
Стабильная | $0.30 | $2.50 | чат, поиск |
gemini-2.5-pro |
Стабильная | $1.25 | $10.00 | чат, thinking, поиск |
gemini-3.5-flash |
Стабильная | $1.50 | $9.00 | чат, мультимодальный ввод, thinking, поиск, инструменты, JSON/schema |
gemini-3.5-flash-lite |
Стабильная | $0.30 | $2.50 | чат, стриминг, мультимодальный ввод, thinking, инструменты, JSON/schema |
gemini-3-flash-preview |
Preview | $0.50 | $3.00 | чат, thinking, поиск |
gemini-3.1-flash-lite-preview |
Preview | $0.25 | $1.50 | чат |
gemini-3.1-pro-preview |
Preview | $2.00 | $12.00 | чат, thinking, поиск, vision |
Gemini 3.8 Flash вышла в GA. Точный публичный ID —
gemini-3.8-flash. Не добавляйте к нему-non-thinking,-low,-medium,-highили другой суффикс уровня reasoning. Входное окно модели — 1,048,576 токенов, лимит вывода — 65,536 токенов. Уровеньlow,mediumилиhighзадается черезthinking_levelилиreasoning_effort; по умолчанию —medium. В Chat/Responses адаптер API429 не поддерживает инструменты для этой модели. Неподдерживаемые инструменты Responses (включаяweb_search_preview,web_searchиfile_search) возвращают HTTP 400; такие запросы никогда не обрабатываются молча как чисто текстовые. Для поддерживаемых объявлений функций и URL context используйте нативный Gemini.
Период цен Gemini 3.8. В таблице указаны акционные цены, действующие до 2026-12-31. Кешированный ввод стоит $0.075/1M, а ставка вывода $3.75 включает thought-токены. С 2027-01-01 все три ставки удваиваются: $1.50 за ввод, $0.15 за кешированный ввод и $7.50 за вывод; до этой даты цены нужно обновить.
Параметры запроса Gemini 3.8. Пользовательские
temperature,top_p,top_kиn/ нативныйcandidateCountне поддерживаются. Не передавайте их, а не полагайтесь на значение по умолчанию у провайдера.frequency_penaltyиpresence_penaltyпо-прежнему допустимы.
Ходы с инструментами в Gemini 3.8. OpenAI-совместимый маршрут отклоняет для этой модели
tools,tool_choice,tool_callsв сообщениях assistant и сообщенияrole:"tool". Если нужен function calling, используйте нативный маршрут Gemini. Нативные запросы поддерживаютfunctionDeclarations, которые выполняет клиент, иurlContext. Search, Maps, File Search, computer use и выполнение кода не входят в текущий контракт API429 для этой модели.
Проверка ходов в Gemini 3.8. Запросы
generateContentи OpenAI-совместимые запросы к чату должны заканчиваться ходом пользователя с непробельным текстом; prefill от assistant или model отклоняется. Нативные объектыFunctionResponseдолжны содержать и идентификатор вызова (call_idили REST-полеid), иname.countTokensпринимает историю чата отдельно и учитывает переданные системную инструкцию и объявления функций, а также содержимое сообщений.
Gemini 3.7 Flash остается в GA. Модель принимает на вход текст, изображения, видео, аудио и PDF и возвращает текст. API429 предоставляет только канонический ID
gemini-3.7-flash; не добавляйте к нему суффикс уровня reasoning. Более старые записи Gemini 3.0/3.1 в этой таблице по-прежнему являются preview-ID.
Период цен Gemini 3.7. В таблице указаны текущие акционные цены Google для Standard, действующие до 2026-12-31. Кешированный ввод стоит $0.075/1M. Google объявила цены $1.50 за ввод, $0.15 за кешированный ввод и $7.50 за вывод с 2027-01-01.
Параметры запроса Gemini 3.7. Пользовательские
temperature,top_p,top_k,n/ нативныйcandidateCountиthinking_budgetне передаются провайдеру. Уровень reasoning задается черезthinking_levelилиreasoning_effortв стиле OpenAI:low,mediumилиhigh.minimalи отключение thinking не поддерживаются.
Ходы с инструментами в Gemini 3.7. OpenAI-совместимые запросы с
tools/tool_choiceдля этой модели отклоняются: для полного цикла вызова инструмента ей нужны нативные ID вызовов функций и thought signatures. Для function calling используйте нативный маршрут Gemini; обычный чат, структурированный вывод и URL context остаются доступны через OpenAI-совместимый маршрут.
Режим вывода Gemini 3.5 Flash.
gemini-3.5-flashпринимает на текстовом пути чата текст, изображения, аудио, видео и документы/PDF, но возвращает текст. Для вывода изображений используйте модели изображений, для аудио — TTS-модели, для векторов — модели эмбеддингов.
Цены для длинного контекста.
gemini-2.5-proиgemini-3.1-pro-previewпереходят на более высокий тариф, если prompt превышает 200K токенов (примерно 2× базовой ставки и на ввод, и на вывод). Prompt меньше 200K тарифицируется по ставкам из таблицы выше.
Алиасы моделей (краткие имена):
gemini-3.1-pro→gemini-3.1-pro-previewgemini-3-flash→gemini-3-flash-preview
Варианты с фиксированным уровнем reasoning. Эти ID фиксируют бюджет reasoning в момент запроса, а не оставляют выбор модели. Они тарифицируются по ставке базовой модели: суффикс влияет на задержку и глубину, а не на цену.
| Модель | Тарифицируется как | Ввод, $/1M | Вывод, $/1M | Примечания |
|---|---|---|---|---|
gemini-3.5-flash-low |
gemini-3.5-flash |
$1.50 | $9.00 | Алиас для совместимости с 2026-09-04: обслуживается как gemini-3.5-flash; для уменьшенного бюджета передайте thinking_level: "low" с каноническим ID |
gemini-3.1-pro-low |
gemini-3.1-pro-preview |
$2.00 | $12.00 | Качество Pro с уменьшенным бюджетом reasoning |
Варианты с более высоким уровнем (-high, -medium) сейчас недоступны: они
не разрешаются у нашего upstream-провайдера. Для полного reasoning запрашивайте gemini-3.5-flash или
gemini-3.1-pro-preview либо передайте thinking_level с
базовой моделью.
Суффиксы моделей (добавляются к любой совместимой модели):
-search— включает grounded-поиск в интернете (например,gemini-3.1-pro-search)-non-thinking— отключает режим reasoning/thinking (например,gemini-3.1-pro-non-thinking)-image-generation— включает вывод изображений inline в моделях, которые умеют генерировать изображения
gemini-3.8-flash и gemini-3.7-flash доступны в API429 только по каноническим ID и
отклоняют все эти суффиксы. Чтобы выбрать поддерживаемый уровень thinking для любой из них,
используйте thinking_level или reasoning_effort.
Gemini Live API (расширенные возможности)
gemini-3.1-flash-live-preview — двунаправленная аудиомодель со стримингом,
которая работает через Live API Google (bidiGenerateContent). Она недоступна
через /v1/chat/completions: клиентам нужно использовать нативный протокол
Gemini Live. Если вам нужен доступ к Live API, обратитесь к администратору.
Эндпоинт
POST /v1/chat/completions
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
model |
string | Нет | gemini-2.5-flash-lite |
ID модели из таблицы выше |
messages |
array | Да | — | Массив объектов сообщений |
temperature |
float | Нет | 0.7 |
Степень креативности (0.0–2.0); не поддерживается в Gemini 3.8/3.7 |
max_tokens |
integer | Нет | — | Максимум токенов на выходе |
stream |
boolean | Нет | false |
Включает стриминг |
top_p |
float | Нет | 0.9 |
Nucleus sampling; не поддерживается в Gemini 3.8/3.7 |
stop |
string/array | Нет | — | Стоп-последовательности |
tools |
array | Нет | — | Инструменты для function calling, если выбранная модель поддерживает OpenAI-совместимый адаптер инструментов; для Gemini 3.8/3.7 используйте нативный generateContent |
tool_choice |
string | Нет | — | auto, none, required; недоступно для Gemini 3.8/3.7 на OpenAI-совместимом маршруте |
response_format |
object | Нет | — | {"type": "json_object"} или {"type": "json_schema", ...} для режима JSON |
parallel_tool_calls |
boolean | Нет | true |
Разрешает модели возвращать несколько вызовов инструментов за раз |
reasoning_effort |
string | Нет | medium |
Глубина reasoning. GPT-5.6 принимает none, low, medium, high, xhigh или max (см. ниже). |
n |
integer | Нет | 1 |
Количество вариантов ответа; значения, отличные от 1, не поддерживаются в Gemini 3.8/3.7 |
Поддержка возможностей по семействам моделей:
| Возможность | Gemini | Claude | GPT |
|---|---|---|---|
| Function calling (без стриминга и со стримингом) | ✅ кроме Gemini 3.8/3.7 на OpenAI-совместимом маршруте | ✅ | ✅ |
Продолжение через role:"tool" (многоходовый диалог) |
✅ кроме Gemini 3.8/3.7 на OpenAI-совместимом маршруте | ✅ | ✅ |
tool_choice (auto / required / конкретный инструмент) |
✅ кроме Gemini 3.8/3.7 на OpenAI-совместимом маршруте | ✅ | ✅ |
| Параллельные вызовы инструментов | ✅ кроме Gemini 3.8/3.7 на OpenAI-совместимом маршруте | ⚠️ (последовательно) | ✅ |
Режим JSON / JSON schema (response_format) |
✅ | ✅ | ✅ |
| Стоп-последовательности | ✅ | ✅ | ⚠️ (игнорируются в некоторых моделях GPT) |
| Vision (image_url / base64) | ✅ | ✅ | ✅ |
| Видео на входе для анализа текстом | ✅ только чат Gemini с доступом по токену | — | — |
| Расширенный reasoning | ✅ через reasoning_effort или суффикс -non-thinking |
✅ автоматически в моделях с включенным thinking | ✅ через reasoning_effort или суффикс модели -high / -low |
Примечания о reasoning:
Для gemini-3.8-flash и gemini-3.7-flash ходы с инструментами поддерживаются только
через нативный маршрут Gemini generateContent. OpenAI-совместимый маршрут отклоняет tools,
tool_choice и role:"tool", чтобы не терять обязательные для Google
ID вызовов функций и thought signatures.
- Поле
reasoning_effort(low/medium/high) сопоставляется с нативным бюджетом reasoning каждой модели. В моделях Claude с включенным thinkingtemperatureпередавать нельзя — шлюз удаляет этот параметр автоматически. - Совместимые модели Gemini также поддерживают суффикс
-non-thinkingв ID модели, который полностью отключает reasoning. Исключения —gemini-3.8-flashиgemini-3.7-flash: их канонические ID принимают только уровни thinkinglow,mediumилиhigh. - Reasoning-модели GPT принимают суффиксы вроде
-high,-lowв ID модели как краткую записьreasoning_effort.
Объект сообщения:
{
"role": "system" | "user" | "assistant",
"content": "text content"
}
В мультимодальных запросах content может быть массивом частей контента:
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this video in one paragraph."},
{
"type": "input_video",
"input_video": {
"format": "mp4",
"data": "BASE64_VIDEO_BYTES"
}
}
]
}
Видео на входе в чате Gemini
Используйте этот вариант, если нужно, чтобы текстовая модель Gemini проанализировала готовое видео и вернула текст. Это не то же самое, что асинхронный раздел Модели генерации видео: там создаются новые видео.
POST /v1/chat/completions
Поддерживается в текстовых моделях Gemini с ID вида gemini-*, доступных для вашего токена, —
например, gemini-2.5-flash, gemini-2.5-pro, gemini-3.5-flash, а также в preview-версиях
текстовых моделей Gemini, если они отображаются в GET /v1/models для вашего токена.
Поддерживаемые клиентские форматы:
- OpenAI-совместимое расширение чата API429: элемент
content[]сtype: "video_url"иvideo_url.url. - OpenAI-совместимое расширение чата API429: элемент
content[]сtype: "input_video"и base64 вinput_video.data. - Нативный Gemini:
contents[].parts[].fileData.fileUriсmimeType: "video/mp4"или другим поддерживаемым MIME-типом видео.
Клиент использует ту же OpenAI-совместимую структуру запроса, base URL и схему работы с API-ключом.
Видео на входе — расширение внутри этой структуры, которое поддерживает API429:
API проверяет видео. Некорректные части с видео возвращают 400
с конкретным сообщением об ошибке валидации.
Поддерживаемые OpenAI-совместимые части с видео:
| Тип части | Структура | Примечания |
|---|---|---|
input_video |
{"type":"input_video","input_video":{"format":"mp4","data":"<base64>"}} |
Лучший вариант для интеграций через SDK, где байты видео уже есть локально. |
video_url |
{"type":"video_url","video_url":{"url":"https://.../clip.mp4","mime_type":"video/mp4"}} |
URL должен вести напрямую на публичный файл по HTTP(S). Редиректы не выполняются. |
Поддерживаемые форматы: mp4, mov, avi, webm.
Текущие ограничения:
- Максимальный размер исходного видео от клиента — 150 MiB с учетом ограничений конкретного маршрута.
- Максимальное число частей с видео в OpenAI-совместимом запросе: 1.
- Большие видео могут предварительно обрабатываться или сжиматься. Если для обработки нужно несколько частей, запрос отклоняется, а не теряет часть видео молча.
- На совместимом маршруте inline-видео для
gemini-3.8-flashисходные видео размером до 30 MB (30,000,000 байт) передаются напрямую как inline-медиа. Сериализованный запрос к модели, включая текст, инструменты и закодированное видео, должен укладываться в 42 MB (42,000,000 байт); иначе шлюз возвращает413. Это защитные ограничения шлюза, а не лимиты Google. - Для этой модели файлы большего размера отклоняются. У других видеомоделей свои лимиты.
- По умолчанию обработка inline-видео ограничена лимитом одновременных запросов
до завершения ответа или закрытия стрима. Если лимит достигнут, возвращается
429сRetry-After: 5; используйте ограниченное число повторов с backoff. Действующие лимиты аккаунта и частоты запросов сохраняются. - Тесты адаптера подтвердили обработку видео примерно 30 MB / 30 секунд со звуком и видео 5 минут / 15.7 MB со звуком в режиме стриминга. Эти синтетические тесты не гарантируют поддержку произвольной длительности, качество звука или задержку; некоторые тесты прямой передачи длились больше двух минут.
Прочее поведение:
- Поддерживаются и
stream:false, иstream:true. - Ответ возвращается текстом. Для вывода видео используйте
/v1/videos/generations. - Эти изменения касаются OpenAI-совместимых входных данных
input_videoиvideo_url; нативные ссылки GeminifileData, переданные клиентом, не переписываются. - Полные тела видео в base64 удаляются из долговременных логов запросов.
Python (OpenAI SDK, локальное видео)
import base64
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
with open("clip.mp4", "rb") as f:
video_b64 = base64.b64encode(f.read()).decode("ascii")
response = client.chat.completions.create(
model="gemini-2.5-flash",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Describe what happens in this video."},
{
"type": "input_video",
"input_video": {
"format": "mp4",
"data": video_b64,
},
},
],
}],
max_tokens=300,
)
print(response.choices[0].message.content)
cURL (прямой URL видео)
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-flash",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Summarize this video in 5 bullets."},
{
"type": "video_url",
"video_url": {
"url": "https://example.com/videos/clip.mp4",
"mime_type": "video/mp4"
}
}
]
}],
"max_tokens": 500
}'
cURL (стриминг)
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-flash",
"stream": true,
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Describe this video in one sentence."},
{
"type": "input_video",
"input_video": {
"format": "mp4",
"data": "BASE64_VIDEO_BYTES"
}
}
]
}]
}'
Примеры
Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY"
)
response = client.chat.completions.create(
model="gemini-3.1-pro",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum computing in 3 sentences."}
],
temperature=0.7,
max_tokens=200
)
print(response.choices[0].message.content)
Python (стриминг)
stream = client.chat.completions.create(
model="gemini-3.1-pro",
messages=[{"role": "user", "content": "Write a poem about AI"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Python (мультимодальный ввод в Gemini 3.5 Flash)
response = client.chat.completions.create(
model="gemini-3.5-flash",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Summarize the visual details in this image."},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
],
}],
max_tokens=500,
)
print(response.choices[0].message.content)
Python (структурированный вывод в Gemini 3.5 Flash)
response = client.chat.completions.create(
model="gemini-3.5-flash",
messages=[{"role": "user", "content": "Extract title, date and people from this text."}],
response_format={"type": "json_object"},
)
print(response.choices[0].message.content)
Python (function calling)
response = client.chat.completions.create(
model="gemini-3-flash-preview",
messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name"}
},
"required": ["city"]
}
}
}],
tool_choice="auto"
)
Python (поиск в интернете)
# Append -search to enable grounded web search
response = client.chat.completions.create(
model="gemini-3.1-pro-search",
messages=[{"role": "user", "content": "What happened in tech news today?"}]
)
cURL
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-flash-preview",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}'
cURL (стриминг)
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-flash-preview",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'
JavaScript / TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://gateway.api429.com/v1",
apiKey: "YOUR_API_KEY",
});
const response = await client.chat.completions.create({
model: "gemini-3.1-pro",
messages: [{ role: "user", content: "Hello!" }],
max_tokens: 100,
});
console.log(response.choices[0].message.content);
Формат ответа
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1712345678,
"model": "gemini-3.1-pro",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 8,
"total_tokens": 20
}
}
Ответ в режиме стриминга (SSE)
data: {"id":"chatcmpl-abc123","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
Responses API
POST /v1/responses
POST /openai/v1/responses
OpenAI Responses API — более новая альтернатива Chat Completions. Она возвращает
единый объект response, нативно поддерживает инструменты и хранит состояние reasoning.
Работает со всеми поддерживаемыми семействами моделей: Gemini, GPT и Claude.
Как это работает для разных семейств моделей
| Семейство моделей | Поведение |
|---|---|
GPT (gpt-5.6, gpt-5.6-sol, gpt-5.6-terra, gpt-5.5, …) |
Нативный Responses API с поддержкой инструментов, стриминга и reasoning. |
Gemini (gemini-*) |
Запросы и ответы прозрачно преобразуются в формат Chat Completions и обратно. |
Claude (claude-*) |
Запросы и ответы прозрачно преобразуются в формат Chat Completions и обратно. |
Тело запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
model |
string | Да | ID любой поддерживаемой модели |
input |
string или array | Да | Ввод пользователя (строка для простого запроса, массив для многоходового диалога) |
instructions |
string | Нет | Системные инструкции |
stream |
boolean | Нет | Включает стриминг через SSE (по умолчанию false) |
tools |
array | Нет | Описания функций для вызова инструментов |
temperature |
number | Нет | Температура сэмплирования |
max_output_tokens |
integer | Нет | Максимальное число выходных токенов |
top_p |
number | Нет | Nucleus sampling |
Формат ввода
Простая строка:
{"model": "gpt-5.3-codex", "input": "Write hello world in Python"}
Многоходовой диалог:
{
"model": "gpt-5.3-codex",
"input": [
{"type": "message", "role": "user", "content": [{"type": "input_text", "text": "What is 2+2?"}]},
{"type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "4"}]},
{"type": "message", "role": "user", "content": [{"type": "input_text", "text": "Now multiply by 3"}]}
],
"instructions": "You are a math tutor."
}
С вызовами инструментов:
{
"model": "gpt-5.3-codex",
"input": [
{"type": "message", "role": "user", "content": [{"type": "input_text", "text": "Weather in NYC?"}]},
{"type": "function_call", "name": "get_weather", "call_id": "call_1", "arguments": "{\"city\":\"NYC\"}"},
{"type": "function_call_output", "call_id": "call_1", "output": "{\"temp\":72,\"condition\":\"sunny\"}"}
],
"tools": [
{"type": "function", "name": "get_weather", "description": "Get weather", "parameters": {"type": "object", "properties": {"city": {"type": "string"}}}}
]
}
С изображениями:
{
"model": "gemini-3.1-pro",
"input": [
{"type": "message", "role": "user", "content": [
{"type": "input_text", "text": "Describe this image"},
{"type": "input_image", "image_url": "https://example.com/photo.jpg"}
]}
]
}
Примеры
Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
# Simple request
resp = client.responses.create(
model="gpt-5.3-codex",
input="Write a Python function to sort a list",
)
print(resp.output_text)
Python (стриминг)
stream = client.responses.create(
model="gpt-5.3-codex-high",
input="Explain quantum computing in simple terms",
stream=True,
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="")
Python (с инструментами)
resp = client.responses.create(
model="gemini-3.1-pro",
input="What is the weather in London?",
tools=[{
"type": "function",
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
},
}],
)
for item in resp.output:
if item.type == "function_call":
print(f"Call: {item.name}({item.arguments})")
cURL (без стриминга)
curl https://gateway.api429.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.3-codex",
"input": "Hello!",
"stream": false
}'
cURL (стриминг)
curl -N https://gateway.api429.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.3-codex",
"input": "Write a hello world in Rust",
"stream": true
}'
Ответ без стриминга
{
"id": "resp_abc123",
"object": "response",
"created_at": 1712345678,
"status": "completed",
"model": "gpt-5.3-codex",
"output": [
{
"id": "msg_def456",
"type": "message",
"role": "assistant",
"content": [
{"type": "output_text", "text": "Here is the code..."}
]
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 45,
"total_tokens": 57
}
}
События стриминга (SSE)
При stream: true сервер отправляет события SSE:
event: response.created
data: {"type":"response.created","response":{"id":"resp_abc","status":"in_progress"},"sequence_number":1}
event: response.output_item.added
data: {"type":"response.output_item.added","output_index":0,"item":{"id":"msg_1","type":"message","role":"assistant"},"sequence_number":2}
event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"delta":"Hello","sequence_number":3}
event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"delta":" world","sequence_number":4}
event: response.completed
data: {"type":"response.completed","response":{"id":"resp_abc","status":"completed","usage":{...}},"sequence_number":10}
data: [DONE]
Типы событий:
| Событие | Описание |
|---|---|
response.created |
Стрим начался |
response.in_progress |
Идёт обработка |
response.output_item.added |
Новый элемент: message, reasoning или function_call |
response.content_part.added |
Новая текстовая часть контента |
response.output_text.delta |
Фрагмент текста |
response.output_text.done |
Текстовый контент завершён |
response.reasoning_summary_text.delta |
Фрагмент reasoning (размышлений) |
response.function_call_arguments.delta |
Фрагмент аргументов вызова инструмента |
response.function_call_arguments.done |
Вызов инструмента сформирован |
response.output_item.done |
Элемент завершён |
response.completed |
Стрим завершён, в событии есть usage |
Генерация изображений через Responses API
Модели GPT могут генерировать изображения с помощью инструмента image_generation
в Responses API. Шлюз выполняет вызов инструмента через
отдельный маршрут GPT Image и возвращает изображение в base64.
resp = client.responses.create(
model="gpt-5.5",
input="Draw a cute orange cat sitting on a windowsill",
tools=[{"type": "image_generation"}],
)
for item in resp.output:
if item.type == "image_generation_call":
import base64
with open("cat.png", "wb") as f:
f.write(base64.b64decode(item.result))
GPT Image 2
Для задач GPT Image используйте model:"gpt-image-2". Модель обслуживается
отдельным маршрутом GPT Image на обоих эндпоинтах:
POST /v1/images/generationsPOST /v1/images/edits
Если вы используете OpenAI SDK, достаточно направить существующие вызовы Images API
на базовый URL API429 и оставить model:"gpt-image-2".
Генерация по тексту:
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A cinematic product photo of a matte black espresso machine",
"size": "1024x1024",
"quality": "low",
"response_format": "b64_json"
}'
Редактирование изображения или генерация по референсу:
curl https://gateway.api429.com/v1/images/edits \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "model=gpt-image-2" \
-F "prompt=Replace the background with a clean white studio backdrop" \
-F "image=@product.png;type=image/png" \
-F "size=1024x1024" \
-F "quality=low" \
-F "response_format=b64_json"
Для редактирования можно загружать файлы PNG, JPEG и WebP. Запрос может содержать
несколько полей формы image и необязательное изображение mask. Прозрачный
фон сейчас не поддерживается. Используйте opaque или auto.
Если вы запрашиваете поддерживаемую модель изображений не из семейства GPT и передаёте mask, API429 направляет
редактирование в gpt-image-2. В поле model ответа указана фактически использованная
модель, а в api429.requested_model — исходно выбранная. Применяются цены
GPT Image 2. JSON-запросы к /v1/images/generations со встроенным
исходным изображением image (или images / reference_images) в base64/data URI и с mask
идут по тому же маршруту редактирования. Удалённые файлы загружайте через multipart. Маска и
первое исходное изображение должны быть корректными PNG одинакового размера, а у маски
должен быть альфа-канал. Некорректная маска, недоступность генерации изображений и
неподдерживаемая прозрачность приводят к ошибке до списания за успешную генерацию. Запросы
с маской никогда не переключаются на Gemini в качестве fallback.
Оба эндпоинта — генерации и редактирования — передают дальше size, quality, background,
output_format (png, jpeg, webp) и output_compression (0–100).
Запрашиваемая модель инструмента — именно gpt-image-2, а не псевдоним Gemini
или GPT Image 2.5. Значения xhigh/max и непроверенные ID моделей изображений отклоняются,
а не тарифицируются по старому тарифу auto.
Уровень reasoning effort для изображений по умолчанию — medium.
response_format:"url" сейчас возвращает data URI, а не ссылку на скачивание
с внешнего хостинга. MIME-тип определяется по сгенерированным байтам.
Для интеграций через SDK, которым нужен чистый base64, используйте b64_json. Необязательные
метаданные api429.outputs содержат фактические размеры и формат. Все обнаруженные
расхождения с запрошенными параметрами указываются в api429.parameter_mismatches.
Результат может иметь изображение другого размера. API429 не меняет размер изображения незаметно для вас.
У всех попыток и всех n изображений общий дедлайн (сейчас 250 секунд).
При неоднозначном таймауте возвращается 504 без автоматической повторной отправки и без fallback
на Gemini. Если запрос с n>1 уже сгенерировал часть изображений, а следующее завершилось ошибкой,
готовые изображения возвращаются и оплачиваются, а в api429.warning.code устанавливается
partial_image_batch. Прежде чем решать, что повторить, проверьте failed_images.
Поле с файлом может называться image или image[] (это имя используют
официальные OpenAI SDK, когда вы передаёте список файлов). Оба варианта принимают несколько
файлов, и их можно сочетать в одном запросе.
Тариф API429 на GPT Image 2 — это оценка, а не прямая передача измеренного
расхода токенов изображений OpenAI. Действующие цены не меняются: оценка текстового
ввода, фиксированный эквивалент высокой детализации за каждое входное изображение или маску и
приведённая ниже таблица цен на вывод с множителями по размеру. Если качество не указано или равно auto, применяется тариф high.
Эталонные ставки OpenAI за токены, на основе которых рассчитан тариф:
| Компонент | Эталонная ставка за токены |
|---|---|
| Текстовый ввод | $5.00 / 1M токенов |
| Кешированный текстовый ввод | $1.25 / 1M токенов |
| Ввод изображений | $8.00 / 1M токенов |
| Кешированный ввод изображений | $2.00 / 1M токенов |
| Вывод изображений | $30.00 / 1M токенов |
Для удобства: калькулятор изображений OpenAI даёт такие примерные цены на вывод для распространённых размеров GPT Image 2:
| Качество | 1024x1024 | 1024x1536 | 1536x1024 |
|---|---|---|---|
low |
$0.006 | $0.005 | $0.005 |
medium |
$0.053 | $0.041 | $0.041 |
high |
$0.211 | $0.165 | $0.165 |
Основа тарификации указана в ответе как
api429.billing.basis:"api429_estimate". api429.provider_usage отдельно хранит
заявленный расход основной модели Responses и расход инструмента изображений. Отсутствующий
расход равен null, а не нулю. Выходные токены основной модели не являются выходными токенами изображений.
Не используйте эти счётчики как квитанцию о списании с баланса. Цены и скидки за токены
по-прежнему применяет действующая система биллинга. Для smoke-тестов и
черновиков используйте quality:"low" и размер класса 1024.
Вызовы image_generation через /v1/responses оплачиваются один раз
по тому же тарифу GPT Image 2. В прошлых версиях на этом пути раннего возврата
списание за изображение не выполнялось. В этом релизе пробел в учёте закрыт. Старые запросы
задним числом не списываются. Неудачные вызовы не создают списания за успешное изображение,
а заявленный расход основной модели повторно не тарифицируется как расход на вывод изображений.
GPT Image 2.5
gpt-image-2.5-flare и gpt-image-2.5-sunburst генерируют изображения через
POST /v1/images/generations. ID модели задаёт режим рендеринга:
Flare — быстрый режим, Sunburst — режим с размышлением. Отдельного переключателя
quality нет: запрос всегда рендерится в режиме, указанном в ID.
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer $API429_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "A paper boat on a calm lake at sunset",
"size": "1536x1024",
"response_format": "b64_json"
}'
| Параметр | Поведение |
|---|---|
prompt |
Обязательный. |
size / aspect_ratio |
Задают форму: 1024x1024 — квадрат, 1536x1024 — 3:2, 1024x1536 — 2:3, для любого другого WIDTHxHEIGHT выбирается ближайшее поддерживаемое соотношение сторон. Размеры в пикселях выбирает модель (квадратное изображение — 1254×1254), поэтому они не совпадают с size точно. |
n |
1–8. Каждое изображение — отдельная генерация и оплачивается отдельно. |
image / images / reference_images |
Всего до 10 референсных изображений в виде data URI или URL. |
response_format |
b64_json или url, который возвращает data URI, как и для других моделей изображений. |
Эти модели не поддерживают: quality, background, output_format
кроме PNG, output_compression, mask, moderation и стриминг. Сейчас
эти поля игнорируются, а не отклоняются, и результат всегда возвращается в
PNG. /v1/images/edits не принимает эти модели. Чтобы передать референсные
изображения, отправьте их в images на /v1/images/generations.
Каждое изображение оплачивается по фиксированной цене независимо от размера: Flare — по ставке OpenAI для среднего качества 1024×1024 для GPT Image 2.5 ($0.053, $0.0159 по стандартному тарифу API429), Sunburst — по ставке для высокого качества ($0.211, $0.0633). Индивидуальный профиль биллинга клиента может изменить скидку.
Пакетная генерация изображений Gemini
Пакеты изображений Gemini — это асинхронные задания не в реальном времени для больших объёмов генерации. Публичный процесс отправки повторяет OpenAI-совместимую схему Files + Batch:
curl https://gateway.api429.com/v1/files \
-H "Authorization: Bearer YOUR_API_KEY" \
-F purpose="batch" \
-F file="@batchinput.jsonl"
curl https://gateway.api429.com/v1/batches \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file_abc123",
"endpoint": "/v1/responses",
"completion_window": "24h",
"metadata": {"job": "nightly-image-generation"}
}'
Официальные OpenAI-совместимые строки Phase 1 направляются на /v1/responses и запрашивают
инструмент image_generation:
{"custom_id":"row-000001","method":"POST","url":"/v1/responses","body":{"model":"gemini-3.1-flash-image","input":"studio product photo of a red ceramic mug","tools":[{"type":"image_generation"}]}}
Референсные изображения (редактирование и композиция) передаются через части контента
input_image. Встройте изображение как URI data: (base64) или используйте URI gs://.
Внешние URL http(s) отклоняются при отправке, потому что batch-воркеры
не могут скачать их во время выполнения:
{"custom_id":"row-000002","method":"POST","url":"/v1/responses","body":{"model":"gemini-3.1-flash-image","input":[{"role":"user","content":[{"type":"input_text","text":"replace the mug logo with the one from the reference"},{"type":"input_image","image_url":"data:image/png;base64,iVBORw0KGgo..."}]}],"tools":[{"type":"image_generation"}]}}
/v1/images/generations в batch JSONL — только расширение API429, это
не официальный эндпоинт OpenAI Batch. Если вы используете расширение API429 для редактирования изображений,
передавайте входные данные через image_url, удобный для JSONL, а не встроенный base64. Официальный
эндпоинт Phase 1 — по-прежнему /v1/responses.
Ограничения и поведение пакетов:
| Область | Условия |
|---|---|
| Выполнение | Асинхронно, не в реальном времени. OpenAI-совместимый completion_window равен 24h; при нехватке мощностей Google может держать задания в очереди до 72h. |
| Размер результата | Пакетная генерация изображений Google выдаёт только 1K. Не отправляйте неподдерживаемые пакетные запросы 2K/4K. |
| Входной файл | JSONL, загруженный с purpose=batch; ограничение размера по умолчанию — 1GB. |
| Биллинг | При отправке API429 резервирует средства на балансе, списывает только за выполненные строки и освобождает резерв по строкам с ошибкой. Цена пакетного изображения — 50% от настроенной цены за изображение в реальном времени или настроенный для аккаунта тариф пакетных изображений. |
| Хранение | Готовые результаты доступны через ID файлов API429; сгенерированные изображения содержат CDN URL, если они есть. |
| Доступ | Для пакетных изображений нужно отдельное разрешение от генерации изображений в реальном времени. |
Модели GPT
GPT-6 Astra
Указывайте точный ID gpt-6-astra. В продакшене у провайдера проверены текст, ввод изображений, function calling (включая async: true) и строгая JSON-схема. Рекомендуем Responses API. Chat Completions поддерживает диалоги и JSON, но для инструментов нужен Responses.
{"model":"gpt-6-astra","input":"Explain this code briefly.","reasoning":{"effort":"high"}}
Уровни effort: low, medium (по умолчанию), high, xhigh, max. Значения none и minimal не поддерживаются. Не передавайте temperature, top_p и logprobs. Официальные лимиты модели: контекст 1.05M, вход 922K и выход 128K. Действуют также лимиты аккаунта и шлюза. Полное окно под нагрузкой не тестировалось.
Клиентские function/custom tools выполняются в вашем приложении. Сохраняйте элементы вывода и ID вызовов и возвращайте соответствующий результат инструмента. Этот транспорт не поддерживает hosted-поиск по вебу и файлам, генерацию изображений, контейнеры, shell, computer use, MCP, Skills, управление ходом через WebSocket посреди ответа, configuration_update, фоновый режим, явный TTL кэша и тарифы Fast/Flex/priority. Не рассчитывайте, что неподдерживаемая опция работает, только потому, что она описана в документации OpenAI Platform. Astra не поддерживает нативный вывод аудио и видео. Клиенты должны сами обрабатывать события сбоя и безопасности от upstream — автоматического продолжения нет.
Базовая тарификация за 1M токенов (вход / чтение кэша / запись в кэш / выход): $10 / $1 / $12.50 / $50 при входе до 272K; $20 / $2 / $25 / $75 при входе свыше 272K — для всего запроса. Выход включает reasoning. Кэш не учитывается дважды. Действующие скидки API429 применяются. Официальная страница модели, официальные цены.
Все модели семейства GPT (включая подсемейство Codex) доступны через два эндпоинта:
POST /v1/chat/completions— стандартный формат Chat CompletionsPOST /v1/responses— формат OpenAI Responses API (рекомендуется для reasoning-моделей GPT; обязателен для вызова инструментов в Astra)
Шлюз автоматически выбирает нужный путь по ID модели.
Доступные модели
Ниже указаны базовые ставки API429 до скидок. Не все они совпадают с текущими официальными ценами вендора. Новые ставки GPT-6 Sol/Luna соответствуют опубликованным ставкам OpenAI Standard на 2026-09-23. Базовые ставки GPT-5.6 пока не меняются — решение о новых ценах ещё не принято. Фактические стандартные розничные цены смотрите в каталоге в рантайме.
| Модель | Вход $/1M | Кэшированный вход | Запись в кэш | Выход $/1M | Контекст | Для чего подходит |
|---|---|---|---|---|---|---|
gpt-6.1-sol |
$2.00 | $0.10 | $2.50 | $10.00 | 1.05M | Программирование, агенты и профессиональные задачи почти на уровне Astra; инструменты Responses |
gpt-6.1 |
$2.00 | $0.10 | $2.50 | $10.00 | 1.05M | Псевдоним gpt-6.1-sol |
gpt-6-astra |
$10.00 | $1.00 | $12.50 | $50.00 | 1.05M | Reasoning и агенты с выполнением на стороне клиента; инструменты Responses |
gpt-6-sol |
$2.00 | $0.20 | $2.50 | $10.00 | 1.05M | Сложное программирование и агентные сценарии; инструменты Responses |
gpt-6-luna |
$0.10 | $0.01 | $0.125 | $0.50 | 1.05M | Узкие задачи с большим объёмом запросов; инструменты Responses |
| GPT-5.6 | ||||||
gpt-5.6 |
$5.00 | $0.50 | $6.25 | $30.00 | 1.05M | Официальный алиас gpt-5.6-sol |
gpt-5.6-sol |
$5.00 | $0.50 | $6.25 | $30.00 | 1.05M | Самый мощный уровень для сложного reasoning и агентов |
gpt-5.6-terra |
$2.50 | $0.25 | $3.125 | $15.00 | 1.05M | Баланс возможностей, задержки и стоимости |
gpt-5.6-luna |
$1.00 | $0.10 | $1.25 | $6.00 | 1.05M | Лёгкий уровень для быстрых и дешёвых задач |
| Frontier (GPT-5.5) | ||||||
gpt-5.5 |
$5.00 | — | — | $30.00 | — | Агентное программирование, computer use и исследования |
| ID для совместимости (выведены из эксплуатации в upstream 2026-09-08) | ||||||
gpt-5.4 |
$2.50 | $0.25 | $3.125 | $15.00 | 1.05M | Обслуживается gpt-5.6-terra |
gpt-5.4-mini |
$1.00 | $0.10 | $1.25 | $6.00 | 1.05M | Обслуживается gpt-5.6-luna |
gpt-5.3-codex |
$2.50 | $0.25 | $3.125 | $15.00 | 1.05M | Обслуживается gpt-5.6-terra |
gpt-5.2 |
$2.50 | $0.25 | $3.125 | $15.00 | 1.05M | Обслуживается gpt-5.6-terra |
| Модели ChatGPT | ||||||
chatgpt-gpt-6 |
$2.00 | $0.20 | — | $10.00 | 128K | Эквивалент GPT-6 Sol со встроенным поиском |
chatgpt-gpt-6-mini |
$0.10 | $0.01 | — | $0.50 | 128K | Эквивалент GPT-6 Luna; быстро и дёшево |
chatgpt-gpt-6-t-mini |
$1.10 | $0.275 | — | $4.40 | 128K | GPT-6 reasoning mini (эквивалент o4-mini) |
chatgpt-gpt-5-6 |
$4.00 | $0.40 | — | $20.00 | 128K | Эквивалент GPT-5.6 Sol со встроенным поиском |
chatgpt-gpt-5-6-mini |
$0.20 | $0.02 | — | $1.20 | 128K | Эквивалент GPT-5.6 Luna; быстро и дёшево |
chatgpt-gpt-5-6-t-mini |
$1.10 | $0.275 | — | $4.40 | 128K | GPT-5.6 reasoning mini (эквивалент o4-mini) |
chatgpt-gpt-5-3-mini |
$0.75 | $0.075 | — | $4.50 | 128K | Эквивалент GPT-5.4 Mini |
chatgpt-research |
$2.00 | $0.50 | — | $8.00 | — | Deep Research: автономный многошаговый исследовательский агент |
Модели chatgpt-* предоставляют альтернативный маршрут доступа к моделям
OpenAI со встроенным веб-поиском. Добавьте -search к ID модели для
включения веб-поиска (например, chatgpt-gpt-6-mini-search). Поисковые
варианты тарифицируются по той же ставке плюс $10.00 за 1 000 вызовов поиска.
Эти модели поддерживают POST /v1/chat/completions со стримингом. Запись в
кэш на этом маршруте недоступна. Проверьте доступ для вашего токена через
GET /v1/models.
В новых интеграциях используйте точные ID моделей из таблицы. ID для совместимости.
gpt-5.6 указывает на gpt-5.6-sol. OpenAI вывела уровень GPT-5.4 / 5.3 /
5.2 для Codex из эксплуатации 2026-09-08. Поэтому gpt-5.4, gpt-5.3-codex, gpt-5.2
и более старые ID для совместимости gpt-5 и gpt-5.1 по-прежнему принимаются
от существующих клиентов, но указывают на gpt-5.6-terra и тарифицируются по ставке
gpt-5.6-terra. gpt-5.4-mini и gpt-5-mini указывают на
gpt-5.6-luna и тарифицируются по ставке gpt-5.6-luna. Явно перейдите на ID
GPT-5.6 (или gpt-5.5). ID для совместимости не публикуются как
отдельные модели для выбора. Более старые варианты gpt-5*-codex
не являются публичными ID моделей, если их нет в ответе
GET /v1/models для вашего токена.
Пресеты reasoning effort — используйте reasoning_effort или добавьте суффикс к ID модели:
| Суффикс | Эффект | Влияние на задержку | Пример |
|---|---|---|---|
-max |
Максимальная глубина reasoning в GPT-5.6 | Самая высокая | gpt-5.6-sol-max |
-xhigh |
Очень глубокий reasoning | Выше | gpt-5.6-terra-xhigh |
-high |
Более глубокий reasoning | +30-50% | gpt-5.3-codex-high |
-medium или без суффикса |
Средний reasoning | базовая | gpt-5.6 |
-low |
Облегчённый reasoning, быстрее | -10-20% | gpt-5.3-codex-low |
-none |
Без reasoning | -30-50% | gpt-5.3-codex-none |
Все пресеты тарифицируются по той же ставке за токены, что и базовая модель. GPT-6 Sol/Luna и GPT-5.6 принимают все шесть значений. GPT-6.1 Sol и GPT-6 Astra не принимают none. Более старые модели GPT могут поддерживать только часть значений. Для function calling в GPT-6 Sol/Luna используйте /v1/responses. Обе модели поддерживают вызовы функций на стороне клиента.
Запросы GPT-6.1 Sol с входом свыше 272K токенов целиком оплачиваются по $4 / $0.20 / $5 / $15 за 1M (вход / кэш / запись в кэш / выход) (официальная страница GPT-6.1 Sol).
Для запросов GPT-6 Sol/Luna с входом свыше 272K токенов ко всему запросу применяются ставки 2x для входа и кэша и 1.5x для выхода. Ставки за длинный контекст за 1M токенов (вход / кэшированный вход / запись в кэш / выход): $4 / $0.40 / $5 / $15 для Sol и $0.20 / $0.02 / $0.25 / $0.75 для Luna. Это только ставки за токены. Hosted-инструменты и обработка Fast/Flex на этом маршруте шлюза не включены. Официальная страница Sol, официальная страница Luna.
GPT-5.6: тарификация длинного контекста и кэша
Если usage.input_tokens больше 272,000, ставки за длинный контекст применяются ко всему запросу:
| Модель | Вход | Кэшированный вход | Запись в кэш | Выход |
|---|---|---|---|---|
gpt-5.6 / gpt-5.6-sol |
$10.00 | $1.00 | $12.50 | $45.00 |
gpt-5.6-terra |
$5.00 | $0.50 | $6.25 | $22.50 |
Автоматическое кэширование промптов поддерживается. Responses API возвращает использование кэша в
usage.input_tokens_details.cached_tokens и cache_write_tokens. Chat
Completions возвращает те же значения в usage.prompt_tokens_details.
Явные поля управления кэшем на маршруте шлюза GPT сейчас не принимаются.
reasoning.mode: "pro" тоже пока недоступен. Для самого глубокого reasoning используйте
reasoning.effort: "max". Текущий
маршрут шлюза не применяет max_output_tokens. Если вам нужно более строгое ограничение
на выход, останавливайте генерацию на стороне клиента.
В запросах Responses к GPT-5.6 можно использовать встроенный инструмент web_search. Каждый
web_search_call стоит $10.00 за 1,000 вызовов ($0.01 за вызов), а
токены с результатами поиска, переданные модели, тарифицируются по ставке входных токенов
выбранной модели. Массив output в ответе содержит элемент
web_search_call для прозрачного учёта запроса.
Для клиентов Instructor поддерживается Mode.MD_JSON (markdown_json_mode) как
fallback на стороне клиента: Instructor добавляет схему в промпт и сам разбирает
JSON-ответ в markdown-блоке. Не передавайте
markdown_json_mode как поле запроса к API. По возможности используйте строгий
response_format: {"type":"json_schema", ...}.
Responses API (рекомендуется для GPT-5.x)
Модели GPT-5.x нативно поддерживают OpenAI Responses API. Используйте этот эндпоинт, если вам нужны встроенное состояние reasoning и нативные дескрипторы инструментов.
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
# Simple request
resp = client.responses.create(
model="gpt-5.6",
input="Write a Python quicksort implementation",
)
print(resp.output_text)
# With reasoning effort
resp = client.responses.create(
model="gpt-5.6-sol",
input="Find the bug in this code and explain your reasoning",
instructions="You are a senior code reviewer.",
reasoning={"effort": "max"},
)
print(resp.output_text)
# Streaming
stream = client.responses.create(
model="gpt-5.6-terra",
input="Explain async/await in Python",
stream=True,
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="")
Chat Completions (тоже поддерживается)
Примеры
Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY"
)
# GPT-5.6 Sol with high reasoning
response = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[
{"role": "system", "content": "You are a senior developer."},
{"role": "user", "content": "Review this Python function for bugs."}
],
reasoning_effort="high",
)
print(response.choices[0].message.content)
Python (стриминг)
stream = client.chat.completions.create(
model="gpt-5.6-terra",
messages=[{"role": "user", "content": "Write a hello world in Rust"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
cURL
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4-mini",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Grok и расширенный каталог
Модели xAI Grok и расширенный набор чат-моделей с префиксом вендора используют тот же
Bearer-токен и ту же настройку OpenAI SDK, что и Gemini, GPT и Claude. Всегда
передавайте точный ID модели из ответа GET /v1/models для вашего токена.
Grok (xAI)
grok-4.7 — текущий канонический флагман xAI. Модель доступна через
POST /v1/chat/completions и POST /v1/responses, включая стриминг.
Она принимает на вход текст и изображения и возвращает текст, вызовы функций или
структурированный JSON. В Responses API передавайте полный входной контекст:
продолжение через previous_response_id на этом маршруте пока не включено.
| Модель | Вход $/1M | Кэш $/1M | Выход $/1M | Контекст | Для чего подходит |
|---|---|---|---|---|---|
grok-4.7 |
$2.00 | $0.50 | $6.00 | 500K | Текущий флагман xAI: reasoning, vision, function calling, структурированный вывод |
grok-4.6 |
$2.00 | $0.50 | $6.00 | 500K | Предыдущий флагман, остаётся доступным |
Выше указаны официальные ставки xAI Standard до скидок API429 и индивидуальных скидок клиента. Если во входе 200,000 токенов или больше, ко всему запросу применяются ставки за длинный контекст: $4 за вход, $1 за кэшированный вход и $12 за выход за 1M токенов. Токены reasoning тарифицируются как выходные.
Используйте reasoning_effort со значениями low, medium, high или xhigh. Если параметр не указан,
xAI по умолчанию использует high. Grok 4.7 не принимает stop, presence_penalty и frequency_penalty.
Локальные function tools поддерживаются. Hosted-инструменты xAI для веб-поиска,
X-search и выполнения кода API429 пока не предоставляет: у них
отдельная тарификация за вызов.
Проверено 2 октября 2026 года. Доступ зависит от разрешений вашего ключа: проверьте GET /v1/models.
Дополнительные ID Grok в каталоге
Следующие ID для совместимости с префиксом вендора — отдельные записи
каталога. Префикс x-ai/ входит в ID модели.
| Модель | Вход $/1M | Выход $/1M | Для чего подходит |
|---|---|---|---|
x-ai/grok-4 |
$1.25 | $2.50 | Уровень совместимости Grok 4 — общий чат и reasoning |
x-ai/grok-4-reasoning |
$1.25 | $2.50 | Grok 4 с расширенным reasoning / thinking |
x-ai/grok-3 |
$1.25 | $2.50 | Быстрый и экономичный Grok общего назначения |
x-ai/grok-3-reasoning |
$1.25 | $2.50 | Grok 3 с расширенным reasoning |
Расширенные чат-ID с префиксом вендора
Эти ID дают дополнительные уровни GPT и Gemini в дополнение к нативному каталогу выше. Они тарифицируются по таблице ниже и принимают те же параметры чата.
| Модель | Вход $/1M | Выход $/1M | Примечания |
|---|---|---|---|
openai/gpt-5 |
$1.00 | $8.00 | Стандартный GPT-5 |
openai/gpt-5-instant |
$1.25 | $10.00 | Вариант GPT-5 с низкой задержкой |
openai/gpt-5-thinking |
$1.25 | $10.00 | GPT-5 с расширенным reasoning |
google/gemini-3-pro |
$2.00 | $12.00 | Gemini 3 Pro |
google/gemini-2.5-pro |
$1.25 | $10.00 | Gemini 2.5 Pro |
google/gemini-2.5-flash |
$0.30 | $2.50 | Быстрый и недорогой Gemini |
Доступность каждой модели выше зависит от вашего токена. Актуальный список моделей для выбора и текущие цены всегда смотрите в ответе
GET /v1/modelsдля вашего токена.
Пример
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="grok-4.6",
messages=[{"role": "user", "content": "Explain quantum entanglement in two sentences."}],
reasoning_effort="high",
)
print(resp.choices[0].message.content)
Расширенные текстовые модели
Дополнительные чат-модели от Moonshot, Alibaba, Zhipu, DeepSeek, Xiaomi,
MiniMax, Tencent и Cursor, а также новые ID Claude, Gemini и Grok. Они используют
тот же Bearer-токен и ту же настройку OpenAI SDK на
POST /v1/chat/completions (включая стриминг) и принимают только текстовый
ввод. Передавайте точный ID модели из первого столбца.
Цены — официальные ставки вендоров за 1 миллион токенов до вашей клиентской скидки. Кэшированный вход тарифицируется по ставке кэша, если вендор её публикует, иначе — по ставке входа.
| ID модели | Вход $/1M | Кэш $/1M | Выход $/1M | Примечания |
|---|---|---|---|---|
claude-fable-5.1 |
$10.00 | $0.25 | $50.00 | Anthropic Claude Fable 5.1 |
gemini-3.6-flash |
$0.75 | $0.075 | $3.75 | Вводная ставка до 2026-12-31 |
grok-4.5 |
$2.00 | $0.30 | $6.00 | Вход ≥200K: $4 / $0.60 / $12 для всего запроса |
kimi-k3 |
$3.00 | $0.30 | $15.00 | Флагман Moonshot |
kimi-k2.7-code |
$0.95 | $0.19 | $4.00 | Модель Moonshot для программирования |
qwen-3.8-max |
$2.00 | — | $6.00 | Флагман Alibaba Qwen |
qwen-3.8-flash |
$0.15 | — | $0.47 | Быстрый и недорогой Qwen |
glm-5.3 |
$1.40 | $0.26 | $4.40 | Флагман Zhipu GLM |
glm-5.3-flash |
$0.15 | $0.03 | $0.50 | Быстрый и недорогой GLM |
glm-5.2 |
$1.40 | $0.26 | $4.40 | Предыдущий флагман GLM |
glm-5-turbo |
$1.20 | $0.24 | $4.00 | GLM, оптимизированный по скорости |
deepseek-v4-pro |
$1.32 | $0.044 | $3.96 | Флагман DeepSeek |
deepseek-v4.1-flash |
$0.30 | $0.006 | $1.20 | Быстрый и недорогой DeepSeek |
mimo-v2.5-pro |
$0.435 | $0.0036 | $0.87 | Xiaomi MiMo; выводится из эксплуатации 2026-10-21 |
mimo-v2.5 |
$0.14 | $0.0028 | $0.28 | Xiaomi MiMo; выводится из эксплуатации 2026-10-21 |
minimax-m3 |
$0.30 | $0.06 | $1.20 | Вход >512K: $0.60 / $2.40 |
hy4-preview |
$0.834 | $0.042 | $2.501 | Preview-версия Tencent Hunyuan |
composer-2.5-fast |
$3.00 | $0.50 | $15.00 | Модель Cursor для программирования |
Модели Claude
Модели Claude доступны через два публичных API-интерфейса:
| Интерфейс | Эндпоинт | Аутентификация | Когда использовать |
|---|---|---|---|
| Совместимый с OpenAI | POST /v1/chat/completions |
Authorization: Bearer <token> |
Ваш клиент уже работает с OpenAI Chat Completions или инструментами в стиле Responses. |
| Совместимый с Anthropic | POST /v1/messages |
x-api-key: <token> |
Ваш клиент уже работает с Anthropic Messages API или форматом Anthropic SDK, и вы хотите поменять только base URL и токен. |
В публичных интеграциях используйте канонические ID моделей claude-* из списка ниже.
Если не указано иное, все перечисленные модели Claude поддерживают чат, стриминг, вызов инструментов, веб-поиск и vision (ввод изображений). Vision означает ввод текста и изображений с текстовым выводом. Эти модели не генерируют изображения.
Доступные модели
В ID моделей используются дефисы. Алиасы с точками принимаются для совместимости,
но в новых интеграциях передавайте канонический ID модели из первого столбца.
Для контекста 1M используйте канонические ID с -1m из таблицы ниже или алиасы Anthropic
в квадратных скобках, например claude-opus-4.8[1m].
Ниже указаны прейскурантные цены API429 за 1 миллион токенов до вашей
клиентской скидки.
| ID модели | Допустимые алиасы | Вход $/1M | Выход $/1M | Контекст | Для чего подходит |
|---|---|---|---|---|---|
claude-fable-5 |
— | $10.00 | $50.00 | 1M | Самая мощная модель Claude для сложнейшего reasoning и длительных задач |
claude-opus-5 |
— | $5.00 | $25.00 | 1M | Новейший Opus для требовательного reasoning, программирования и анализа |
claude-sonnet-5 |
claude-sonnet-5.0 |
$2.00 | $10.00 | 1M | Новейший Sonnet для программирования, агентов и профессиональных задач |
claude-opus-4-8 |
claude-opus-4.8 |
$5.00 | $25.00 | 1M | Высшее качество reasoning, программирования и анализа |
claude-opus-4-8-1m |
claude-opus-4.8-1m, claude-opus-4.8[1m] |
$5.00 | $25.00 | 1M | Opus с явным ID для контекста 1M |
claude-opus-4-7 |
claude-opus-4.7 |
$5.00 | $25.00 | 1M | Высшее качество reasoning, программирования и анализа |
claude-opus-4-7-1m |
claude-opus-4.7-1m, claude-opus-4.7[1m] |
$5.00 | $25.00 | 1M | Opus с явным ID для контекста 1M |
claude-opus-4-6 |
claude-opus-4.6 |
$5.00 | $25.00 | 1M | Сложный анализ и работа с длинными текстами |
claude-opus-4-6-1m |
claude-opus-4.6-1m, claude-opus-4.6[1m] |
$5.00 | $25.00 | 1M | Opus 4.6 с явным ID для контекста 1M |
claude-sonnet-4-6 |
claude-sonnet-4.6 |
$3.00 | $15.00 | 1M | Баланс интеллекта, скорости и стоимости |
claude-sonnet-4-5 |
claude-sonnet-4.5 |
$3.00 | $15.00 | 200k | Общий чат и написание текстов с Claude |
claude-haiku-4-5-20251001 |
claude-haiku-4-5, claude-haiku-4.5 |
$1.00 | $5.00 | 200k | Самая быстрая и дешёвая модель Claude |
Чтобы узнать, какие именно модели Claude включены для вашего токена, вызовите GET /v1/models
со своим API-ключом.
Messages API, совместимый с Anthropic
Используйте этот эндпоинт, если ваш код уже работает с Anthropic Messages API. Тело запроса и тело ответа соответствуют формату Anthropic Messages.
POST https://gateway.api429.com/v1/messages
Обязательные заголовки:
x-api-key: YOUR_API_KEY
content-type: application/json
anthropic-version: 2023-06-01
anthropic-version принимается для совместимости с SDK, его можно не передавать. Если
заголовок не указан, API429 передаёт в upstream 2023-06-01.
cURL
curl -X POST https://gateway.api429.com/v1/messages -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -H "anthropic-version: 2023-06-01" --data @payload.json
payload.json:
{
"model": "claude-sonnet-5",
"max_tokens": 512,
"system": "You are a concise technical assistant.",
"messages": [
{"role": "user", "content": "Explain Mutex vs RwLock in Rust."}
]
}
Ответ
{
"id": "msg_...",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-5",
"content": [
{"type": "text", "text": "..."}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 23,
"output_tokens": 87
}
}
Нативный стриминг
Передайте "stream": true в /v1/messages, чтобы получать SSE-события в формате Anthropic:
curl -N -X POST https://gateway.api429.com/v1/messages -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -H "anthropic-version: 2023-06-01" --data @payload.json
payload.json:
{
"model": "claude-sonnet-5",
"max_tokens": 512,
"stream": true,
"messages": [
{"role": "user", "content": "Write a haiku about Rust."}
]
}
События приходят в порядке Anthropic:
message_start
content_block_start
content_block_delta
content_block_stop
message_delta
message_stop
Между событиями с контентом Anthropic может отправлять события ping. Данные об использовании
распределены по потоку: message_start содержит использование входа, а message_delta —
итоговое использование выхода.
Нативные поля запроса
| Поле | Тип | Обязательное | Примечания |
|---|---|---|---|
model |
string | Да | ID модели Claude из GET /v1/models. |
messages |
array | Да | Список сообщений Anthropic: role — user или assistant; content — строка или блоки контента. |
max_tokens |
integer | Да | Максимальное число выходных токенов. |
system |
string или array | Нет | Системный промпт, включая блоки контента с cache_control, если upstream это поддерживает. |
stream |
boolean | Нет | При true возвращает SSE-события Anthropic. |
temperature |
number | Нет | Температура сэмплирования. |
tools |
array | Нет | Формат tool use Anthropic, включая серверные инструменты. |
stop_sequences |
array | Нет | Стоп-последовательности Anthropic. |
Нативное использование и тарификация
Нативные ответы возвращают данные об использовании в формате Anthropic:
{
"usage": {
"input_tokens": 123,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0,
"output_tokens": 45
}
}
Эти значения также попадают в аналитику использования и биллинг API429. Для запросов к Claude тарифицируемые входные токены считаются так:
input_tokens + cache_creation_input_tokens + cache_read_input_tokens
Тарифицируемые выходные токены — output_tokens. В интерфейсе, совместимом с OpenAI,
те же значения возвращаются как prompt_tokens, completion_tokens и, если
доступно, prompt_tokens_details.
Если upstream возвращает поля кэша промптов, например cache_creation_input_tokens
или cache_read_input_tokens, API429 передаёт их в нативном usage и
учитывает в аналитике. Если этих полей нет, клиентам следует тарифицировать
и показывать полученные значения input_tokens / output_tokens, а итоговую списанную сумму
брать из клиентских эндпоинтов использования.
Веб-поиск для моделей Claude
Модели Claude на этом шлюзе принимают стабильный серверный инструмент Anthropic
web_search_20250305. В интерфейсе /v1/messages, совместимом с Anthropic,
это нативный контракт tool use Anthropic: модель может вернуть
stop_reason: "tool_use" с блоком content типа tool_use, а
клиент продолжает цикл инструмента в следующем запросе.
Объявите его так:
{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Latest Anthropic news?"}],
"tools": [{"type": "web_search_20250305", "name": "web_search", "max_uses": 3}]
}
Для удобства балансировщик также принимает два неканонических варианта входных данных и автоматически их преобразует:
| Отправляет клиент | Передаётся в Anthropic | Примечания |
|---|---|---|
{"type": "web_search_preview"} (в стиле OpenAI Responses API) |
web_search_20250305 |
Поля, специфичные для OpenAI (search_context_size, user_location, include_domains, exclude_domains, search_content_types), удаляются — на неизвестные ключи Anthropic отвечает ошибкой 400. |
{"type": "web_search_20260209"} (более новый датированный вариант Anthropic) |
web_search_20250305 |
name и max_uses сохраняются. Новый вариант пока доступен не везде, поэтому преобразование позволяет избежать ответа "tools unavailable". |
Шлюз передаёт это объявление серверного инструмента в маршрут Claude. В интерфейсе,
совместимом с OpenAI, итоговый ответ по-прежнему имеет формат Chat Completions,
а структурированные метаданные цитирования не возвращаются. В
интерфейсе Messages, совместимом с Anthropic, проверяйте возвращённые блоки контента tool_use
и продолжайте нативный цикл инструмента, когда модель останавливается с
stop_reason: "tool_use".
Изменение поведения (2026-04-25): до этого релиза запросы с
web_search_previewмолча отбрасывались балансировщиком (модель отвечала «I have no real-time access»). Теперь они запускают настоящий веб- поиск, и текст ответа меняется соответственно. Клиентам, которые передавалиweb_search_preview«на всякий случай», стоит убрать его, если поиск им на самом деле не нужен.
Примеры
Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="claude-sonnet-5",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain the difference between TCP and UDP."},
],
)
print(response.choices[0].message.content)
cURL (vision / ввод изображений)
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-8",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image in one sentence."},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,BASE64_IMAGE"}}
]
}],
"max_tokens": 256
}'
Python (стриминг, frontier-модель)
stream = client.chat.completions.create(
model="claude-opus-4-7",
messages=[{"role": "user", "content": "Write a Python async web scraper"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
cURL (самый быстрый и дешёвый вариант — снапшот Haiku)
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-4-5-20251001",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 256
}'
Необязательные заголовки для пакетных и длительных сценариев с Claude
Два необязательных заголовка полезны для длительных интеграций с Claude. Клиенты, которые их не передают, получают обычное синхронное поведение.
| Заголовок | Эндпоинты | Эффект |
|---|---|---|
X-Session-Key |
POST /v1/chat/completions, POST /v1/balancer/jobs/chat-completions |
Стабильная строка для каждого логического диалога. Помогает API429 повторно использовать серверное состояние диалога и кэша в многоходовых пакетах. На сервере изолируется по тенантам. Формат: 1–256 символов [a-zA-Z0-9._/+-]. Полный контракт — в клиентском руководстве по X-Session-Key. |
X-Async-Jobs-Optin: true |
POST /v1/chat/completions |
Разрешает API429 при перегрузке переместить запрос без стриминга в надёжную очередь задач. При обычном успехе по-прежнему сразу возвращается 200. Если запрос поставлен в очередь, ответ — 202 с Location: /v1/balancer/jobs/{id}/result. Опрашивайте этот URL, чтобы получить итоговый результат. Игнорируется при stream=true, так как задачи работают без стриминга. |
Рекомендуемая комбинация для пакетных клиентов-сценаристов:
curl https://gateway.api429.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Session-Key: scenario/iceberg/run-001/scene-3" \
-H "X-Async-Jobs-Optin: true" \
-d '{
"model": "claude-sonnet-4-5",
"messages": [{"role": "user", "content": "Draft scene 3 of the iceberg scenario."}]
}'
Примечание о стриминге: обычный stream:true для Claude — это SSE с постепенной
выдачей токенов. Ответы Jobs API никогда не стримятся. Для надёжности используйте опрос.
Модели генерации изображений
Запросы Nano Banana 2 в нативном API
Для gemini-3.1-flash-image и алиаса -preview обычные запросы
generateContent с одним сообщением пользователя и IMAGE в
responseModalities возвращают JSON Gemini:
candidates[].content.parts[].inlineData.
Для одной картинки используйте поддерживаемые размеры и inline-референсы
PNG, JPEG или WebP с явным соотношением сторон: до 10 референсов,
не более 5 МиБ каждый. Число токенов может быть оценочным; стоимость
определяется количеством доставленных картинок и запрошенным разрешением.
После неопределённой отправки или принятой задачи API429 не создаёт
автоматически вторую платную картинку. При временной недоступности учитывайте
HTTP-статус и заголовок Retry-After при повторе.
Доступные модели
| Модель | Статус | Цена за изображение | Примечания |
|---|---|---|---|
gpt-image-2 |
Stable | $0.005-$0.211 — оценка за выходное изображение + входные токены | GPT Image; точная цена зависит от текстового и графического ввода, quality и size |
gpt-image-2.5-flare |
Stable | $0.053 | GPT Image 2.5, быстрый режим. Фиксированная цена за изображение; см. раздел «GPT Image 2.5». |
gpt-image-2.5-sunburst |
Stable | $0.211 | GPT Image 2.5, режим thinking. Фиксированная цена за изображение; см. раздел «GPT Image 2.5». |
gemini-2.5-flash-image (Nano Banana) |
Stable | $0.039 | Устаревшая модель изображений Google. |
gemini-3.1-flash-lite-image (Nano Banana 2 Lite) |
Stable | $0.0336 | Быстрая генерация изображений 1K. |
imagen-4 |
Stable | $0.040 | Imagen 4 |
gpt-image-1 (Sora Images) |
Stable | $0.040 | Имя для совместимости: sora-images; до 4 изображений за вызов через n. |
grok-imagine-image |
Stable | $0.020 (1K/2K) | Нативный xAI Images API; text-to-image |
grok-imagine-image-quality |
Stable | $0.050 (1K), $0.070 (2K) | Нативная модель xAI повышенного качества; алиас для совместимости: grok-image. |
gemini-3.1-flash-image (Nano Banana 2) |
Stable | $0.067 | Более высокое разрешение (до 4K), баланс скорости и качества. |
gemini-3-pro-image (Nano Banana Pro) |
Stable | $0.134 | Высокая визуальная точность для редактирования и 4K. |
api429-image |
Stable | $0.040 | api429 image: генерация и редактирование изображений. |
FLUX.2-pro |
Stable | $0.030+ | Azure AI Foundry / Black Forest Labs FLUX.2 pro. Оплата по мегапикселям сгенерированного изображения и референсов (1 MP = 1024×1024). |
dalle-3 |
Stable | $0.040 | DALL·E 3 (варианты: dalle-3-openai, dalle-3-bing). Канал Bing принимает соотношения сторон 4:7 / 7:4. |
midjourney-7.0-fast |
Stable | $0.021 | Midjourney v7, быстрая очередь; пакет из 4 изображений, оплата за задачу. Также: midjourney-7.0-relax ($0.011); midjourney-6.1-*, midjourney-8.1-* |
flux-1 |
Stable | $0.040 | Генерации Flux.1; width/height 600–1600 px, copies 1–2 |
qwen-image |
Stable | $0.040 | Qwen text-to-image; поддерживает width/height, style, n=1..2 |
qwen-image-edit |
Stable | $0.040 | Редактирование Qwen по референсу. Подтипы (та же цена): qwen-image-remove-bg, -remove-watermark, -restore, -colorize-1, -colorize-2, -contour, -depth, -extract-clothing, -make-old, -make-young, -stylize, -3d |
acc-upper / acc-lower / acc-full |
Stable | $0.060 | AI Change Clothes (верх / низ / в полный рост). Нужны фото человека в image и референс одежды в images[0] |
В новых интеграциях используйте технические ID из таблицы. Запросы с nano-banana,
nano-banana-2, nano-banana-2-lite и nano-banana-pro по-прежнему
принимаются для совместимости; это не отдельные модели. Выведенные из оборота ID с -preview
и устаревшие варианты написания тоже принимаются там, где они поддерживаются.
Публичный сайт скрывает дублирующие алиасы, только если опубликована
каноническая модель. Актуальную доступность смотрите в каталоге рантайма. api429-image (api429 image) поддерживает генерацию и редактирование изображений.
Цены Gemini в зависимости от разрешения:
| Каноническая модель | 1K официальная / стандартная API429* | 2K официальная / стандартная API429* | 4K официальная / стандартная API429* |
|---|---|---|---|
gemini-3.1-flash-image (Nano Banana 2) |
$0.067 / $0.0201 | $0.101 / $0.0303 | $0.151 / $0.0453 |
gemini-3-pro-image (Nano Banana Pro) |
$0.134 / $0.0402 | $0.134 / $0.0402 | $0.240 / $0.0720 |
* Стандартные цены API429 учитывают стандартную клиентскую скидку 70%. Индивидуальный профиль тарификации клиента может переопределить эту скидку.
Все модели изображений доступны через один эндпоинт
/v1/images/generations. На стороне клиента дополнительные учётные данные не нужны.
Для
model:"gpt-image-2" запрос идёт по отдельному маршруту GPT Image,
а не через семейство моделей изображений Gemini.
Уровни разрешения. Цены в основной таблице моделей указаны для 1K, если в строке не сказано иное. Gemini Flash стоит $0.067 / $0.101 / $0.151 при 1K / 2K / 4K. Gemini Pro — $0.134 / $0.134 / $0.240. У
imagen-4есть уровни Fast / Standard / Ultra ($0.02 / $0.04 / $0.06).FLUX.2-proтарифицируется по мегапикселям Azure FLUX: первый сгенерированный MP — $0.030, каждый следующий сгенерированный MP — $0.015, каждый MP референса — $0.015. xAIgrok-imagine-imageстоит $0.020 и при 1K, и при 2K;grok-imagine-image-qualityстоит $0.050 при 1K и $0.070 при 2K. Выбирайтеaspect_ratio/sizeс учётом этого.
Лимиты изображений Grok. При HTTP
429учитывайтеRetry-Afterи ограничивайте число повторов с backoff.
Пример:
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer $API429_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-image-quality",
"prompt": "Editorial product photo on a clean studio background",
"resolution": "2K",
"aspect_ratio": "16:9",
"response_format": "url"
}'
API изображений xAI сейчас поддерживает text-to-image в 1K или 2K.
Он явно отклоняет 4K, референсы, маски, negative_prompt, style и
seed, а не отбрасывает их молча. Если важна точность соответствия референсу,
используйте модель, для которой описано редактирование изображений.
Формат вывода: шлюз сохраняет MIME-тип тех байтов, которые
фактически вернул провайдер, и не помечает каждое изображение как .png. При
response_format:"url" у каждого элемента есть url: обычно это URL хостинга или
URL вида data:<actual-mime>;base64,…, если загрузчик недоступен или завершился с ошибкой.
При response_format:"b64_json" у каждого элемента в b64_json лежит обычный стандартный base64.
Возможны PNG, JPEG и WebP, если их поддерживает провайдер.
Эндпоинт
POST /v1/images/generations
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
model |
string | Нет | nano-banana |
ID модели из таблицы выше (используется значение по умолчанию, если поле не указано) |
prompt |
string | Да | — | Текстовое описание изображения |
n |
integer | Нет | 1 |
Количество изображений (1–8). Некоторые модели всегда возвращают 1. |
size |
string | Нет | 1024x1024 |
Размеры изображения, определяют форму: 1536x1024 → 3:2, 1024x1536 → 2:3, 1792x1024 → 16:9, 1024x1792 → 9:16; для любого другого WIDTHxHEIGHT берётся ближайшее поддерживаемое соотношение сторон. aspect_ratio имеет приоритет. |
aspect_ratio |
string | Нет | — | 1:1, 16:9, 9:16, 4:3, 3:4 |
resolution |
string | Нет | 1K |
Уровень вывода: 1K (по умолчанию), 2K, 4K. Алиасы: standard, hd, ultra. Также принимаются image_size / imageSize. См. примечания о 4K ниже. |
quality |
string | Нет | — | Уровень в стиле OpenAI: standard → 1K, hd → 2K, ultra → 4K. |
image_config |
object | Нет | — | Вложенная конфигурация изображений Google. Принимает image_size, aspect_ratio, negative_prompt, output_mime_type и person_generation в snake_case или camelCase. Также принимается imageConfig. Если указаны обе формы, приоритет у полей верхнего уровня; значение, не являющееся объектом, возвращает 422. Если указать outputMimeType или personGeneration, запрос пойдёт только через Vertex. |
response_format |
string | Нет | url |
url или b64_json |
outputMimeType / output_mime_type |
string | Нет | По умолчанию провайдера | Запрашиваемый MIME-тип вывода Google: image/png, image/jpeg или image/webp. В ответе указан фактически возвращённый MIME-тип. |
personGeneration / person_generation |
string | Нет | По умолчанию провайдера | Политика Google по генерации людей: ALLOW_ALL, ALLOW_ADULT, ALLOW_NONE или эквивалентное написание Imagen DONT_ALLOW. Шлюз преобразует запрещающее значение под выбранное семейство моделей Google. |
background |
string | Нет | — | Для gpt-image-2 используйте opaque или auto. Прозрачность требует отдельно подтверждённой поддержки у провайдера. |
output_format |
string | Нет | png |
Для gpt-image-2: png, jpeg или webp, если провайдер это учитывает. |
output_compression |
integer | Нет | — | Для jpeg / webp: 0-100, если провайдер это учитывает. |
moderation |
string | Нет | auto |
Для совместимости с GPT Image: auto или low. |
image |
string | Нет | — | Референсное изображение (base64, URL или data URI) |
reference_images |
array | Нет | — | Несколько референсных изображений — формат см. ниже |
negative_prompt |
string | Нет | — | Чего следует избегать |
Параметры изображений Google.
outputMimeTypeиpersonGenerationможно передать на верхнем уровне или внутриimageConfig. Если запрошенный параметр недоступен, запрос завершается ошибкой HTTP503, а не молча отбрасывает поле. Эти специфичные для Google параметры в запросах к моделям изображений не от Google возвращают HTTP400.
Запрос вывода 2K / 4K
Все три варианта эквивалентны:
{"model": "gemini-3-pro-image", "prompt": "...", "resolution": "4K"}
{"model": "gemini-3-pro-image", "prompt": "...", "image_size": "4K"}
{
"model": "gemini-3-pro-image",
"prompt": "...",
"image_config": {"image_size": "4K", "aspect_ratio": "16:9"}
}
Через OpenAI SDK:
client.images.generate(
model="gemini-3-pro-image",
prompt="...",
extra_body={"image_size": "4K"},
)
Поддержка 2K / 4K по моделям:
| Модель | 1K | 2K | 4K | Источник |
|---|---|---|---|---|
gemini-3-pro-image (Nano Banana Pro) |
✅ | ✅ | ✅ | ai.google.dev |
gemini-3.1-flash-lite-image (Nano Banana 2 Lite) |
✅ | — | — | ai.google.dev |
gemini-3.1-flash-image (Nano Banana 2) |
✅ | ✅ | ✅ | ai.google.dev — gemini-3.1 flash-image |
gemini-2.5-flash-image (Nano Banana) |
✅ | — | — | устаревшая; по данным Google, отключение не раньше 2026-10-02 |
imagen-4 |
✅ | ✅ | — | Imagen 4 / Imagen 4 Ultra ограничены 2048×2048 |
FLUX.2-pro |
да | да | да | Azure FLUX.2 pro; оплата по округлённым вверх MP сгенерированного изображения и референсов |
grok-imagine-image |
да | да | — | Нативный xAI Images API; text-to-image |
grok-imagine-image-quality / grok-image |
да | да | — | Нативная модель xAI повышенного качества; grok-image — алиас для совместимости |
- Балансировщик передаёт запрошенный уровень выбранной модели изображений. Если модель не поддерживает этот уровень, провайдер может вернуть HTTP 400. Мы не понижаем молча уровень среди тех, что модель поддерживает.
- Модели изображений не от Google могут использовать другие нативные параметры размера; см. оговорки ниже.
Оговорки для провайдеров не от Google:
FLUX.2-proпринимает либо явныйsizeв пикселях (например,"1024x1024","2048x2048"), либо уровниresolution/image_size/quality.quality:"standard"соответствует 1K,quality:"hd"— 2K,quality:"ultra"— 4K.aspect_ratioучитывается при вычислении размеров из уровня.- Другие провайдеры изображений не от Google могут использовать другие нативные параметры размера.
Если вашему сценарию обязательно нужен 4K, зафиксируйте в model одну из моделей с поддержкой 4K из списка выше (gemini-3-pro-image, gemini-3.1-flash-image).
Референсы и тарификация Azure FLUX.2-pro
FLUX.2-pro поддерживает до 8 референсных изображений на JSON-эндпоинте генерации изображений. Референсы можно передать через reference_images или через OpenAI-совместимые поля image / images. Референсы сверх первых 8 игнорируются.
Оплата рассчитывается по мегапикселям с округлением вверх:
- сгенерированное изображение: первый MP — $0.030, каждый следующий MP — $0.015;
- каждое референсное изображение: $0.015 за MP с округлением вверх;
- 1 MP считается равным 1024x1024 пикселям.
Пример с двумя референсами:
{
"model": "FLUX.2-pro",
"prompt": "Create a premium studio product image using the references",
"quality": "hd",
"aspect_ratio": "16:9",
"reference_images": [
{"image_url": "https://cdn.example.com/ref-1.png"},
{"image_base64": "data:image/jpeg;base64,..."}
],
"n": 1,
"response_format": "url"
}
Редактирование изображений (референсы + промпт редактирования)
Для редактирования и работы с референсами выбирайте gemini-3-pro-image, если важна визуальная точность
соответствия исходному изображению. Модели Flash подходят для новых генераций и
недорогих черновиков, но для продакшен-редактирования надёжнее Pro.
Чтобы явно использовать Pro со стороны клиента, зафиксируйте
model: "gemini-3-pro-image". Старые имена остаются только входными алиасами.
Формат reference_images
В одном массиве можно передавать как структурированные объекты, так и строки с URL:
{
"reference_images": [
"https://cdn.example.com/ref_1.jpg",
{
"name": "ref_2",
"image_base64": "<base64-without-data-uri-prefix>",
"mime_type": "image/png"
},
{
"image_url": "https://cdn.example.com/ref_3.webp"
}
]
}
- Строка обрабатывается как
{"image_url": "<string>"}: сервер загружает URL и кодирует содержимое в base64 перед передачей провайдеру. - В объекте должно быть хотя бы одно из полей
image_base64/image_url.nameиmime_typeнеобязательны. - Входные данные base64 могут быть в стандартном или URL-safe base64, с дополнением или без. API429 проверяет байты и приводит передаваемый и выходной base64 к стандартному base64 с дополнением (
+,/,=), поэтому ответ шлюза можно без изменений отправить в следующем запросе на редактирование. - Таймаут загрузки
image_urlпо умолчанию — 30s. Если загрузка не удалась, возвращается HTTP 400 с исходным сообщением об ошибке.
Примеры
Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY"
)
response = client.images.generate(
model="gemini-2.5-flash-image",
prompt="A futuristic city at sunset, cyberpunk style",
n=1,
size="1024x1024"
)
print(response.data[0].url)
Python (FLUX)
response = client.images.generate(
model="FLUX.2-pro",
prompt="Product photography of a ceramic teapot, studio light",
n=1,
quality="hd",
extra_body={
"aspect_ratio": "16:9",
"reference_images": [
{"image_url": "https://cdn.example.com/ref-1.png"},
],
},
)
print(response.data[0].url)
Python (ответ в Base64)
response = client.images.generate(
model="gemini-3-pro-image",
prompt="A cute robot reading a book",
n=1,
size="1024x1024",
response_format="b64_json"
)
import base64
image_data = base64.b64decode(response.data[0].b64_json)
with open("robot.png", "wb") as f:
f.write(image_data)
cURL
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-flash-image",
"prompt": "A mountain landscape at sunrise",
"n": 1,
"size": "1024x1024"
}'
Формат ответа
{
"created": 1712345678,
"data": [
{
"url": "https://storage.googleapis.com/generated/...",
"revised_prompt": "A futuristic city at sunset, cyberpunk style"
}
]
}
С response_format: "b64_json":
{
"created": 1712345678,
"data": [
{
"b64_json": "/9j/4AAQSkZJRgABAQ...",
"revised_prompt": "A futuristic city at sunset"
}
]
}
С response_format: "url" в ответе всегда используется поле url. Если
загрузка в объектное хранилище недоступна или не удалась, значением будет корректный data URI
с фактически возвращённым MIME-типом; шлюз не переключает поле
на b64_json молча.
Дополнительные модели медиа
Отдельный каталог, который включается для конкретного аккаунта, а не доступен по умолчанию. Если
вы не видите этих моделей в GET /v1/models, у вашего токена нет к ним
доступа — попросите нас его включить.
Цены: по запросу. Эти модели тарифицируются по фактической стоимости каждой
задачи, а не по фиксированной цене за изображение, поэтому цена зависит от модели,
размера, уровня скорости и — для Midjourney — от числа изображений в задаче. Мы
называем цену для каждого аккаунта отдельно; фактическое списание всегда видно в
/api/client/usage/daily и в журнале запросов.
Модели изображений в Chat Completions
Любую модель изображений Gemini (gemini-2.5-flash-image, gemini-3.1-flash-image,
gemini-3-pro-image, …) можно вызвать через POST /v1/chat/completions.
Текст сообщений становится промптом; части image_url в сообщениях
используются как исходное изображение для редактирования. Для совместимости сгенерированное изображение
возвращается в ответе дважды:
{
"object": "chat.completion",
"model": "gemini-2.5-flash-image",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "",
"images": [{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}]
}
}],
"usage": {
"prompt_tokens": 14,
"completion_tokens": 1290,
"total_tokens": 1304,
"completion_tokens_details": {"reasoning_tokens": 0, "image_tokens": 1290},
"image_count": 1
}
}
- Для программной обработки читайте поле
message.images;contentсодержит Markdown-разметку для клиентов, которые показывают только текст. usageповторяет учёт Google так же, как нативный эндпоинт Gemini: вprompt_tokens— текстовые токены промпта плюс 1290 за каждое референсное изображение, вcompletion_tokens/completion_tokens_details.image_tokens— 1290 за каждое сгенерированное изображение.image_count— число сгенерированных изображений, по которому тарифицируется запрос.- Оплата взимается за каждое сгенерированное изображение по ставке
imageиз каталога модели; значения токенов нужны для сверки и отдельно не оплачиваются. - При
stream: trueответ состоит из одного SSE-события сdelta.contentиdelta.images, завершающего чанка иdata: [DONE]. Передайтеstream_options: {"include_usage": true}, чтобы получить чанк с usage (с пустымchoices) перед[DONE]. - Если модель не вернула изображение, запрос завершается ошибкой
502и не оплачивается.
Генерация изображений
| Модель | Примечания |
|---|---|
midjourney |
Midjourney, текущая версия по умолчанию (8.1, стандартная очередь). Возвращает 4 изображения за задачу |
midjourney-6.1-relax / midjourney-6.1-fast |
Версия 6.1 |
midjourney-7.0-relax / midjourney-7.0-fast |
Версия 7.0 |
midjourney-8.1-relax / midjourney-8.1-fast |
Версия 8.1 |
flux-1 |
FLUX.1; необязательные параметры checkpoint_id, sampler_id, steps и style |
qwen-image |
Qwen Images, text-to-image |
sora-images |
Sora Images |
dalle-3 |
DALL·E 3 |
Флаги Midjourney (--ar, --s, --cref, --sref, --ow, …) указываются
внутри prompt и передаются без изменений, поэтому референсы и смешивание работают так же,
как у провайдера. Поля запроса size / aspect_ratio для этих моделей
игнорируются — используйте --ar в промпте.
Задача генерации всегда создаёт 4 изображения, оплачивается задача
целиком, и по умолчанию возвращаются все четыре. Передавайте n явно, только если
хотите получить меньше, — цену это не снижает.
Параметры FLUX.1
Используйте flux-1 или flux.1 с POST /v1/images/generations. Если
параметры не указаны, по умолчанию действуют checkpoint_id=1, sampler_id=1 и steps=20.
| Поле | Допустимое значение |
|---|---|
checkpoint_id |
Положительное целое число. checkpointId — алиас. |
sampler_id |
Положительное целое число. samplerId — алиас. |
steps |
Целое число от 10 до 30. |
style |
От одного до трёх уникальных индексов от 0 до 49 через запятую. 0 и 1 можно использовать только по отдельности. |
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"flux-1","prompt":"A sunlit botanical illustration of native wildflowers, delicate ink lines and soft watercolor washes","checkpoint_id":5,"sampler_id":6,"steps":25,"style":"3,6,12"}'
Следующие эндпоинты для получения справочных данных требуют аутентификации и не оплачиваются:
GET /v1/yesai/flux/checkpointsGET /v1/yesai/flux/samplersGET /v1/yesai/flux/lora/models
LoRA по-прежнему задаётся синтаксисом промпта: <lora:model_id:weight>. Эти параметры не добавляют
публичных моделей и не меняют маршрутизацию для Qwen, Nano Banana, Veo или Gemini
Omni.
Модификации Midjourney
Каждое сгенерированное изображение возвращается с id. Передайте его как source_image_id
вместе с одной из моделей ниже, чтобы выполнить действие над этим изображением. prompt
нужен только для mj-remix.
| Модель | Результат |
|---|---|
mj-upscale |
Апскейл ×2 с точным сохранением оригинала. Возвращает 1 изображение |
mj-upscale-creative |
Апскейл ×2 с добавлением придуманных деталей. Возвращает 1 изображение |
mj-outpaint-x2 |
Расширение со всех четырёх сторон, площадь ×2 |
mj-outpaint-x1.5 |
Расширение со всех четырёх сторон, площадь ×1.5 |
mj-outpaint-left / mj-outpaint-right / mj-outpaint-up / mj-outpaint-down |
Расширение в одном направлении |
mj-variations-subtle |
Вариации, близкие к оригиналу |
mj-variations-strong |
Вариации, слабо связанные с оригиналом |
mj-remix |
Перерисовка по новому тексту — требуется prompt |
# 1) generate — note the id on each returned image
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "midjourney", "prompt": "a red fox in the snow --ar 16:9"}'
# 2) upscale the one you liked
curl https://gateway.api429.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "mj-upscale", "source_image_id": "103"}'
source_image_id — это числовой id изображения, а не его URL. Для id, над которым нельзя
выполнить действие, возвращается 400, а не молча создаётся что-то другое.
Скорость очереди. По умолчанию генерации и модификации выполняются в очереди relax
(1–12 минут). Добавьте "speed": "fast" в любой запрос Midjourney, чтобы использовать
быструю очередь (1–3 минуты). Это работает и для моделей модификации mj-*,
в названии которых нет указания скорости. speed имеет приоритет над скоростью в
алиасе модели, поэтому midjourney-7.0-relax с "speed": "fast" выполняется быстро.
Редактирование изображений
| Модель | Результат |
|---|---|
qwen-image-edit |
Редактирование по текстовой инструкции |
qwen-image-remove-bg |
Удаление фона |
qwen-image-remove-watermark |
Удаление водяных знаков |
qwen-image-colorize-1 / qwen-image-colorize-2 |
Колоризация |
qwen-image-restore |
Восстановление повреждённых или некачественных фото |
qwen-image-contour |
Выделение контуров / линий |
qwen-image-depth |
Карта глубины |
qwen-image-extract-clothing |
Извлечение одежды |
qwen-image-make-old / qwen-image-make-young |
Состаривание или омоложение человека на фото |
qwen-image-stylize |
Применение стиля |
qwen-image-3d |
Рендер в 3D-стиле |
acc-upper / acc-lower / acc-full |
Замена одежды по фото — верх, низ или весь образ |
Видео
| Модель | Результат |
|---|---|
veo |
Text-to-video |
kling |
Анимация статичного изображения |
pika |
Анимация статичного изображения, движок Pika |
deepface-video |
Замена лица в видео |
video-upscale |
Апскейл готового видео |
Видеозадачи выполняются долго: отправьте задачу, затем опрашивайте результат так же, как в других асинхронных медиаэндпоинтах.
Эмбеддинги
POST /v1/embeddings
POST /openai/v1/embeddings
POST /hf/v1/embeddings
OpenAI-совместимый эндпоинт для моделей эмбеддингов Google Gemini.
| Модель | Статус | Цена | Размерность вывода |
|---|---|---|---|
gemini-embedding-001 |
Stable | Бесплатно | 3072 (по умолчанию), настраивается через dimensions |
gemini-embedding-2-preview |
Preview | Бесплатно | 3072 (по умолчанию) |
Один вход
response = client.embeddings.create(
model="gemini-embedding-001",
input="Hello world"
)
print(response.data[0].embedding[:5])
Пакет (список входов)
input принимает массив строк — все они обрабатываются
за один вызов:
response = client.embeddings.create(
model="gemini-embedding-001",
input=["First document", "Second document", "Third document"]
)
for emb in response.data:
print(emb.index, len(emb.embedding))
Своя размерность вывода
Передайте dimensions, чтобы уменьшить размер вектора. Это полезно для гибридного поиска,
индексов ближайших соседей и приложений с ограниченным хранилищем. Поддерживаемые
значения для gemini-embedding-001: 128, 256, 512, 768, 1536, 3072 (по умолчанию).
response = client.embeddings.create(
model="gemini-embedding-001",
input="Hello world",
dimensions=768
)
assert len(response.data[0].embedding) == 768
cURL
curl https://gateway.api429.com/v1/embeddings \
-H "Authorization: Bearer $YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-embedding-001",
"input": "Hello world",
"dimensions": 768
}'
Структура ответа
{
"object": "list",
"model": "gemini-embedding-001",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [-0.0343, 0.0116, -0.0214, ...]
}
],
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
Примечания
- Эндпоинт оптимизирован для эмбеддингов во время запроса (поисковый ввод, извлечение для RAG). Эмбеддинги документов для индекса работают так же — качество векторов одинаковое.
- Пустой
inputвозвращает HTTP 400. - Без стриминга — ответы с эмбеддингами всегда возвращаются целиком.
Генерация музыки
Музыка генерируется асинхронно. Отправьте задачу, опрашивайте ее статус до
завершения, затем используйте полученный HTTPS URL. У API-токена должен быть
асинхронный scope audio. Новые активные токены внешних клиентов получают
этот scope по умолчанию. Существующие управляемые политики клиентов и токенов
проектов обновляются автоматически, явно заданные политики не меняются. Если
для токена задан ограниченный список разрешенных моделей, в нем также должна
быть lyria-3-pro-preview.
Доступная модель
| Модель | Формат | Максимальная запрашиваемая длительность | Цена |
|---|---|---|---|
lyria-3-pro-preview |
MP3 | 184 секунды | $0.08 за готовую композицию |
duration_seconds задает ориентир для композиции, но не гарантирует точную
длительность. Готовая композиция может оказаться короче или длиннее
запрошенной.
Создание задачи на генерацию музыки
curl https://gateway.api429.com/v1/music/generations \
-H "Authorization: Bearer $API429_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-theme-001" \
-d '{
"model": "lyria-3-pro-preview",
"prompt": "Cinematic synth-pop at 112 BPM, restrained verse, wide uplifting chorus",
"duration_seconds": 120,
"lyrics": "[Verse]\nCity lights begin to glow\n\n[Chorus]\nWe are ready, let it show",
"instrumental": false,
"output_format": "mp3"
}'
| Поле | Тип | Обязательное | Примечания |
|---|---|---|---|
model |
string | Нет | По умолчанию lyria-3-pro-preview. |
prompt |
string | Да | Музыкальное направление, жанр, настроение, инструменты, темп и структура. |
duration_seconds |
integer | Нет | 1..184; используется как приблизительный ориентир. |
lyrics |
string | Нет | Может содержать теги разделов [Verse], [Chorus] и подобные. |
instrumental |
boolean | Нет | Значение true нельзя сочетать с lyrics. |
output_format |
string | Нет | Сейчас поддерживается только mp3. |
google/lyria-3-pro-preview принимается как алиас для совместимости на входе.
В ответах по задаче он заменяется каноническим ID lyria-3-pro-preview.
Заголовок Idempotency-Key обязателен. Если тот же аутентифицированный клиент
повторно отправит тот же ключ, вернется исходная задача: новая генерация не
создается и не оплачивается. Новый ключ запускает новую платную генерацию.
Ответ на отправку задачи приходит с HTTP-кодом 202:
{
"id": "job_...",
"object": "music.generation.job",
"status": "queued",
"model": "lyria-3-pro-preview"
}
Опрос статуса и получение композиции
curl https://gateway.api429.com/v1/music/generations/job_... \
-H "Authorization: Bearer $API429_TOKEN"
Пока задача выполняется, эндпоинт возвращает ее текущий статус. Для завершенной задачи ответ выглядит так:
{
"object": "music.generation",
"model": "lyria-3-pro-preview",
"data": [
{
"url": "https://cdn.example/song.mp3",
"mime_type": "audio/mpeg",
"bytes": 1544920,
"sha256": "..."
}
],
"billing": {
"charged_amount_usd": "0.08",
"unit_price_usd": "0.08",
"currency": "USD",
"pricing_status": "charged"
}
}
Если итоговый результат у провайдера нельзя надежно определить, задача
получает статус ambiguous и не повторяется автоматически. Так в рамках одной
задачи не создается вторая платная композиция. Используйте новый ключ
идемпотентности, только когда проверите итоговый статус.
Модели для генерации видео
Видео генерируется асинхронно. Отправьте задачу, опрашивайте ее статус до завершения, затем используйте полученный HTTPS URL на CDN. Шлюз не отдает клиентам прямые URL хранилища провайдера.
У API-токена должен быть асинхронный scope video. Новые активные токены,
отнесенные к внешним клиентам, по умолчанию получают и video, и audio;
любой из них можно отозвать в админке. Асинхронные текст и изображения
по-прежнему включаются отдельно, а явно заданные политики существующих токенов
никогда не перезаписываются управляемыми настройками клиента по умолчанию.
Доступные модели
| Модель | Режим | Цена за секунду, со звуком | Цена за секунду, без звука | Длительность | Сэмплы | Разрешения |
|---|---|---|---|---|---|---|
gemini-omni-1.1-flash |
Omni 1.1 | расход токенов зависит от разрешения, плюс входные токены и токены thinking | Не поддерживается: звук генерируется всегда | 3-10 с | 1 | 360p, 720p, 1080p, 4k |
veo-3.1-generate-001 |
Standard | $0.40 (720p/1080p), $0.60 (4k) |
$0.20 (720p/1080p), $0.40 (4k) |
4, 6, 8 с | 1-4 | 720p, 1080p, 4k |
veo-3.1-fast-generate-001 |
Fast | $0.10 (720p), $0.12 (1080p), $0.30 (4k) |
$0.08 (720p), $0.10 (1080p), $0.25 (4k) |
4, 6, 8 с | 1-4 | 720p, 1080p, 4k |
veo-3.1-lite-generate-001 |
Lite | $0.05 (720p), $0.08 (1080p) |
$0.03 (720p), $0.05 (1080p) |
4, 6, 8 с | 1-4 | 720p, 1080p |
veo-3-fast |
Fast | н/д | $0.50 базовая (5s) | 5 с | 1 | 9:16, 16:9, auto |
veo-3-quality |
Quality | н/д | $1.50 базовая (5s) | 5 с | 1 | 9:16, 16:9, auto |
pika-2.2 |
Анимация изображения | н/д | $0.50 за видео | до 6s | 1 | на основе изображения |
kling-1.6 / kling-2.0 / kling-2.5 / kling-3.0 |
Изображение + prompt → видео | н/д | $0.375 базовая (5s); для 10s/15s растет линейно | 5, 10, 15 с (15s только в kling-3.0) |
1 | 1:1, 9:16, 16:9 |
deepface-video |
Замена лица в видео | н/д | $0.05 базовая | длина входного видео | 1 | как у входного видео |
upscale-video-hd / -fhd / -4k |
Апскейлер видео | н/д | $0.30 / $0.60 / $2.40 базовая (клип 30s) | длина входного видео | 1 | на выходе: 720p / 1080p / 2160p |
Gemini Omni 1.1 Flash
Используйте стабильный клиентский ID модели gemini-omni-1.1-flash. Устаревшие
варианты написания gemini-omni-flash-preview и короткий gemini-omni-flash
принимаются как алиасы только на входе и приводятся к новому каноническому ID.
API429 не подменяет модель на Veo или другого видеопровайдера незаметно для вас.
В ответе задачи сохраняется клиентский контракт
model:"gemini-omni-1.1-flash". Необязательное поле metadata.actual_model
указывает модель в результате конкретной задачи. В запросах используйте
стабильный клиентский ID.
Поддерживаемые сценарии Omni:
mode / task |
Обязательные входные данные | Примечания |
|---|---|---|
text_to_video |
prompt |
Используется по умолчанию, если медиа не переданы. |
image_to_video / first_last_frame / interpolation |
image |
Анимирует одно изображение. Для интерполяции между первым и последним кадром передайте image и last_frame. Алиасы приводятся к image_to_video. |
reference_to_video |
reference_images |
До 10 референсных изображений. |
edit |
video или previous_job_id |
Редактирует одно исходное видео короче 10 секунд или продолжает предыдущий результат Omni. |
extend / video_extension |
video |
Генерирует продолжение длиной 3-10 секунд в конце одного исходного видео. |
Медиа для Omni можно передать как публичный HTTPS URL, URI gs://, строку
base64/data URI или объект, например
{"url":"https://.../image.png","mime_type":"image/png"}. Перед обращением к
Google API429 приватно размещает внешние входные данные у себя.
Omni принимает duration от 3 до 10 секунд, aspect_ratio 16:9 или
9:16, один результат и resolution 360p, 720p (по умолчанию), 1080p или
4k. Результаты в 1080p и 4k апскейлит Google. Дополнительные параметры:
temperature (0..2), top_p (0..1) и thinking_level (minimal, low,
medium, high). Звук генерируется всегда: не передавайте audio или передайте
audio:true; audio:false отклоняется.
seed есть в общей схеме Interactions, но не описан как параметр модели
Gemini Omni. Поэтому API429 отклоняет его, а не делает вид, что результат
воспроизводим.
Справочные тарифы: $1.50 за 1M входных токенов,
$9.00 за 1M выходных токенов текста и thinking, $17.50 за 1M выходных токенов видео.
Google считает выходное видео как 1,931 токена в секунду для 360p, 5,792 для
720p, 8,688 для 1080p и 17,376 для 4k (примерно $0.0338, $0.1014,
$0.1520 и $0.3041 за секунду сгенерированного видео соответственно). До того как
воркер обратится к Google, API429 резервирует консервативную максимальную сумму
с учетом разрешения. Когда Google вернет фактический расход, разница
возвращается. Если фактический расход недоступен, сохраняется fallback-сумма для
этого разрешения, а задача получает соответствующую пометку. Нулевая стоимость
в этом случае не выставляется.
Модель Omni не поддерживает Chat Completions, системные инструкции, структурированный вывод и JSON, context caching, grounding и поиск, function calling, выполнение кода и аудиореференсы. На неподдерживаемые комбинации возвращается ошибка валидации: запрос не переключается незаметно на другое поведение.
Пример отправки задачи Omni
curl -X POST "https://gateway.api429.com/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: omni-video-001" \
-d '{
"model": "gemini-omni-1.1-flash",
"prompt": "A cinematic five-second product shot of a blue cup",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"thinking_level": "high"
}'
Для генерации видео из изображения меняются только режим и входные данные:
{
"model": "gemini-omni-1.1-flash",
"mode": "image_to_video",
"prompt": "The camera slowly moves around the product",
"image": {
"url": "https://example.com/product.png",
"mime_type": "image/png"
},
"duration": 6,
"aspect_ratio": "9:16"
}
Чтобы продолжить редактирование готового результата Omni, отправьте новый запрос
с тем же API-ключом, указав mode:"edit" и previous_job_id с ID предыдущей
задачи API429. Для продолжения нужна доступная предыдущая задача, принадлежащая тому же API-ключу.
Veo 3.1
Для Veo итоговая оценочная стоимость равна
price_per_second * duration_seconds * sample_count. Шлюз резервирует
оценочную сумму, когда принимает задачу. Если запрос завершается ошибкой до начала
генерации видео у провайдера, резерв снимается. Если операция у провайдера уже
началась, оплата фиксируется, даже если итоговый статус неоднозначен.
Поддерживаются соотношения сторон 16:9 и 9:16. Если передан seed, он должен
быть беззнаковым 32-битным целым. audio / generateAudio передается в Vertex как
generateAudio.
Поддерживаемые значения mode в API429:
mode |
Обязательные входные данные | Примечания |
|---|---|---|
text_to_video |
prompt |
Используется, если медиа не переданы. |
image_to_video |
image |
Использует instances[].image в Vertex. |
first_last_frame |
image, last_frame |
Использует instances[].image и instances[].lastFrame в Vertex. |
frame_interpolation |
image, last_frame |
Алиас для той же структуры Vertex с первым и последним кадром. |
video_extension |
video |
Использует instances[].video в Vertex. |
reference_guided |
reference_images |
Veo 3.1 поддерживает референсы объекта, продукта или человека с referenceType: "asset". Стилевые референсы для Veo 3.1 отклоняются. |
first_last_frame требует image и last_frame для Veo. video_extension требует video. Клиенты не должны передавать
ни duration_seconds, ни duration: продление всегда добавляет семь секунд. Если результат отправки задачи провайдеру неясен, асинхронная
задача может перейти в статус ambiguous. В этом случае опрашивайте исходную задачу и не
создавайте автоматически новый платный запрос взамен.
Если mode не указан или равен auto, API429 определяет режим по переданным
полям медиа: video → video_extension, reference_images → reference_guided,
image + last_frame → first_last_frame, image → image_to_video, без
медиа → text_to_video.
Эндпоинт в стиле API429/OpenAI
POST /v1/videos/generations
GET /v1/videos/generations/{job_id}
Тело запроса
| Поле | Тип | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|
model |
string | Да | - | Один из ID видеомоделей выше |
mode / task |
string | Нет | auto |
Сценарий, который поддерживает выбранная модель. Omni: text_to_video, image_to_video (алиасы first_last_frame / interpolation), reference_to_video, edit, extend (алиасы video_extension / extension). Режимы Veo перечислены выше. |
prompt |
string | Да | - | Текстовый prompt |
duration / duration_seconds |
integer | Нет | 8 |
Omni: 3-10. Veo: 4, 6 или 8; для video_extension не передавайте ни одно из этих полей. |
n / sampleCount / sample_count |
integer | Нет | 1 |
Omni: строго 1. Veo: 1-4. |
aspectRatio / aspect_ratio |
string | Нет | 16:9 |
16:9 или 9:16 |
resolution |
string | Нет | 720p |
Omni: 360p, 720p, 1080p или 4k. Veo: 720p, 1080p или 4k, где поддерживается. |
audio / generateAudio |
boolean | Нет | зависит от модели | Omni всегда генерирует звук. Veo передает этот параметр, где он поддерживается. |
resizeMode / resize_mode |
string | Нет | - | crop или pad для входных изображений |
cameraControl / camera_control |
string | Нет | - | Только для режимов на основе изображения. Передается в Vertex как есть, чтобы превью-версии и расширенные настройки камеры работали там, где поддерживаются |
compressionQuality / compression_quality |
string | Нет | - | Расширенный параметр, передается в Vertex без изменений. На неподдерживаемые комбинации возвращается ошибка Vertex |
negativePrompt / negative_prompt |
string | Нет | - | Чего следует избегать |
personGeneration / person_generation |
string | Нет | - | Политика генерации людей |
seed |
integer | Нет | - | Только Veo: беззнаковый 32-битный seed. Omni его отклоняет. |
temperature |
number | Нет | значение провайдера | Только Omni, 0..2. |
top_p / topP |
number | Нет | значение провайдера | Только Omni, 0..1. |
thinking_level / reasoning_effort |
string | Нет | значение провайдера | Omni: minimal, low, medium или high. |
previous_job_id |
string | Нет | - | Продолжить редактирование предыдущей задачи Omni, созданной с тем же API-ключом. |
image, lastFrame, referenceImages, video, inputs |
string/object/array | Нет | - | Необязательные ссылки на медиа. Для Omni принимаются публичные HTTPS URL, gs://, data/base64 и объекты медиа. |
Пример отправки задачи
curl -X POST "https://gateway.api429.com/v1/videos/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: video-job-001" \
-d '{
"model": "veo-3.1-fast-generate-001",
"mode": "text_to_video",
"prompt": "A calm ocean wave at sunrise, cinematic",
"duration": 4,
"n": 1,
"aspectRatio": "16:9",
"resolution": "720p",
"audio": false
}'
Для генерации видео из изображения используется тот же эндпоинт с mode: "image_to_video":
{
"model": "veo-3.1-generate-001",
"mode": "image_to_video",
"prompt": "A slow cinematic push-in over the product",
"image": {"gcsUri": "gs://client-inputs/product.png", "mimeType": "image/png"},
"cameraControl": "push_in",
"resizeMode": "crop",
"duration_seconds": 8,
"resolution": "1080p",
"audio": false
}
Для генерации по первому и последнему кадру используйте mode: "first_last_frame" с image и
last_frame. Для продления видео используйте mode: "video_extension" с video и
без поля длительности.
Для генерации объекта или продукта по референсам используйте mode: "reference_guided" и
до трех элементов reference_images с referenceType: "asset".
API429 не понижает незаметно запрошенные возможности Veo. Функции, доступные только в превью,
например 4k, расширенные настройки камеры или поведение модели, зависящее от аккаунта
или региона, передаются, если запрос синтаксически корректен. Если Vertex
отклоняет такую комбинацию, асинхронная задача завершается ошибкой валидации провайдера
и очищенной сводкой запрошенных модели, режима, полей медиа и
параметров. Если отказ произошел до начала операции Vertex, резерв
снимается.
При успешной отправке возвращается 202 с объектом задачи:
{
"id": "01HYVIDEOJOB",
"object": "video.generation.job",
"status": "queued",
"endpoint": "videos.generations"
}
Опрашивайте задачу, пока status не станет succeeded:
curl "https://gateway.api429.com/v1/videos/generations/01HYVIDEOJOB" \
-H "Authorization: Bearer YOUR_API_KEY"
Завершенные задачи возвращают значения data[].url со ссылками на файлы video/mp4
на CDN шлюза, доступные для скачивания. Готовый результат Omni также может содержать
фактический расход и итоговую оплату:
{
"object": "video.generation",
"model": "gemini-omni-1.1-flash",
"data": [
{"url": "https://cdn.example.com/video.mp4", "mime_type": "video/mp4"}
],
"usage": {
"input_tokens": 312,
"output_tokens": 28960,
"thought_tokens": 144,
"total_tokens": 29416,
"input_tokens_by_modality": {"text": 24, "image": 288},
"output_tokens_by_modality": {"video": 28960}
},
"billing": {
"charged_amount_usd": "0.508564",
"currency": "USD",
"pricing_status": "usage"
},
"metadata": {
"route_provider": "google",
"actual_model": "gemini-omni-1.1-flash-preview"
}
}
Значения токенов выше только иллюстрируют структуру ответа. Фактический расход и цена зависят от запроса и данных учета, которые вернет Google.
Эндпоинты, совместимые с Vertex (только Veo)
Эти маршруты предназначены для клиентов, которые переходят с SDK или REST-интеграции
в стиле Vertex. Оставьте прежнюю структуру тела запроса и замените базовый URL и токен.
Gemini Omni использует эндпоинт в стиле API429/OpenAI, описанный выше, и не доступна как
модель Vertex predictLongRunning.
POST /v1/projects/{project}/locations/{location}/publishers/google/models/{model}:predictLongRunning
POST /v1/projects/{project}/locations/{location}/publishers/google/models/{model}:fetchPredictOperation
Данные для аутентификации можно передать как x-goog-api-key: YOUR_API_KEY, ?key=YOUR_API_KEY или
Authorization: Bearer YOUR_API_KEY.
Пример отправки задачи
curl -X POST "https://gateway.api429.com/v1/projects/gateway/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001:predictLongRunning" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instances": [{"prompt": "A calm ocean wave at sunrise, cinematic"}],
"parameters": {
"durationSeconds": 4,
"sampleCount": 1,
"aspectRatio": "16:9",
"resolution": "720p"
}
}'
Шлюз возвращает имя операции, которой управляет API429:
{
"name": "api429/jobs/01HYVIDEOJOB",
"done": false,
"metadata": {"api429JobId": "01HYVIDEOJOB", "status": "queued"}
}
Получение состояния операции:
curl -X POST "https://gateway.api429.com/v1/projects/gateway/locations/us-central1/publishers/google/models/veo-3.1-fast-generate-001:fetchPredictOperation" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"operationName":"api429/jobs/01HYVIDEOJOB"}'
Если функция не включена для вашего аккаунта, маршрут возвращает 403, 404
или 503. Если на балансе недостаточно средств для оплаты оценочной стоимости видео, запрос на отправку
возвращает 402.
Распознавание речи (Speech-to-Text)
POST /v1/audio/transcriptions
OpenAI-совместимое распознавание речи моделью gemini-3.5-transcribe.
Тело запроса — multipart/form-data:
| Поле | Обязательно | Примечания |
|---|---|---|
file |
да | Аудиофайл до 25 МБ, например MP3 или WAV. Файлы больше возвращают 413. |
model |
да | gemini-3.5-transcribe |
language |
нет | Ожидаемый язык в формате ISO-639-1 (en, ru, …). Без него язык определяется автоматически. |
response_format |
нет | json (по умолчанию), text, verbose_json, srt, vtt |
timestamp_granularities[] |
нет | segment и/или word, для verbose_json |
prompt |
нет | Принимается для совместимости с SDK, моделью не используется. |
verbose_json возвращает сегменты с start, end, text и меткой спикера
speaker (speaker_0, speaker_1, …), а по запросу — таймкоды слов.
| Модель | Аудио на входе / 1M токенов | Текст на выходе / 1M токенов | Официально ≈ / минута аудио | API429 ≈ / минута аудио* |
|---|---|---|---|---|
gemini-3.5-transcribe |
$2.00 | $12.00 | $0.005 | $0.0015 |
* Со стандартной клиентской скидкой 70%. Аудио тарифицируется по 32 токена на секунду записи, расшифровка — по числу её токенов.
curl https://gateway.api429.com/v1/audio/transcriptions \
-H "Authorization: Bearer YOUR_API_KEY" \
-F model=gemini-3.5-transcribe \
-F response_format=verbose_json \
-F file=@meeting.mp3
{
"task": "transcribe",
"language": "unknown",
"duration": 3.44,
"text": "Hello. Your order has shipped and will arrive on Thursday.",
"segments": [
{"id": 0, "start": 0.2, "end": 3.1, "speaker": "speaker_0",
"text": "Hello. Your order has shipped and will arrive on Thursday."}
]
}
OpenAI SDK работает без изменений:
client.audio.transcriptions.create(model="gemini-3.5-transcribe", file=open("meeting.mp3", "rb")).
Синтез речи (Text-to-Speech)
POST /v1/audio/speech
GET /v1/audio/voices
POST /v1/audio/voices
DELETE /v1/audio/voices/{voice_id}
Единый OpenAI-совместимый эндпоинт для TTS. Здесь поддерживаются Gemini-модели
gemini-3.8-flash-tts, gemini-3.8-flash-lite-tts,
gemini-3.1-flash-tts-preview и gemini-2.5-flash-preview-tts. Набор параметров
намеренно минимален:
обязательные model и input, а также необязательные voice и response_format.
Если не указать model, запрос не пройдёт валидацию и вернёт HTTP 422: шлюз
не подставляет Gemini TTS-модель молча.
Gemini TTS-модели возвращают WAV целиком в теле ответа (audio/wav,
24 kHz mono PCM-16). Модели ElevenLabs возвращают MP3 (audio/mpeg).
response_format принимается для совместимости с SDK, но на
вывод Gemini не влияет.
Поддержка TTS по интерфейсам
| Интерфейс | Маршрут / API | Поддерживаемые параметры | Вывод / ограничения |
|---|---|---|---|
| OpenAI-совместимый шлюз | POST /v1/audio/speech |
model, input, voice, response_format, delivery |
Ответ целиком в теле. Gemini возвращает WAV, ElevenLabs — MP3. Нет temperature, languageCode, полноценной поддержки нескольких дикторов, стриминга и передачи Cloud audioConfig. |
| Голоса | GET / POST / DELETE /v1/audio/voices |
Поиск по каталогу (language, q, limit, offset), клонирование по загруженному образцу, scope=mine |
Только модели Fish. Клонированный голос доступен только ключу, который его создал. |
| Нативный шлюз Gemini | POST /gemini/v1beta/models/{model}:generateContent |
responseModalities: ["AUDIO"], speechConfig.voiceConfig, multiSpeakerVoiceConfig, languageCode, temperature |
Через этот балансировщик — без стриминга. Ответ — JSON Gemini с сырым PCM в base64; упаковывайте его в WAV на стороне клиента. |
| Cloud Text-to-Speech напрямую | Google Cloud text:synthesize / text:streamingSynthesize |
prompt + text, audioEncoding, sampleRateHertz, скорость, усиление громкости, MultiSpeakerMarkup, стриминг, advancedVoiceOptions.safetySettings |
Используйте авторизацию Google Cloud напрямую. Эти параметры не проксируются через /v1/audio/speech. |
Доступные модели
| Модель | Статус | Текст на входе / 1M | Аудио на выходе / 1M токенов | Расчётная базовая цена / 1K символов | API429 / 1K символов* | Вывод |
|---|---|---|---|---|---|---|
gemini-3.8-flash-tts |
Новейшая Gemini TTS, самая естественная подача | $0.50† | $9† | $0.0167 | $0.0050 | audio/wav |
gemini-3.8-flash-lite-tts |
Самая дешёвая Gemini TTS, низкая задержка | $0.50† | $6† | $0.0111 | $0.0033 | audio/wav |
gemini-3.1-flash-tts-preview |
Выразительная, поддерживает аудиотеги | $1.00 | $20 | $0.0370 | $0.0111 | audio/wav |
gemini-2.5-flash-preview-tts |
Предыдущее поколение, Flash | $0.50 | $10 | $0.0185 | $0.0056 | audio/wav |
† Промо-цена Google до 2026-12-31; с 2027-01-01 Google указывает для
gemini-3.8-flash-tts$1.00 / $18, дляgemini-3.8-flash-lite-tts— $1.00 / $12 за 1M токенов.
Важно, какой API Google вы используете.
gemini-2.5-flash-tts— это ID модели в отдельном Cloud Text-to-Speech API от Google. В GeminigenerateContentон недействителен, а API429 сейчас не проксирует Cloud TTStext:synthesizeиtext:streamingSynthesize. Ошибка400 INVALID_ARGUMENTотgenerateContentдля этого ID означает несоответствие эндпоинта и модели, а не отключённый переключатель Cloud API на шлюзе API429.
Модели ElevenLabs
| Модель | Для чего подходит | Официальная цена / 1K символов | API429 / 1K символов* | Вывод |
|---|---|---|---|---|
elevenlabs-gen |
Выразительная речь ElevenLabs и голоса персонажей, 70+ языков | $0.100 | $0.030 | audio/mpeg |
eleven_v4 |
Новейшая модель ElevenLabs: самая выразительная подача, 90+ языков, управление произношением через IPA | $0.100 | $0.030 | audio/mpeg |
eleven_v4_turbo |
Качество Eleven v4 с меньшей задержкой, для живого и диалогового применения | $0.050 | $0.015 | audio/mpeg |
* В колонке API429 учтена стандартная клиентская скидка 70% от базовой ставки $0.0370: $0.0370 × 30% = $0.0111 за 1K символов. Индивидуальный тарифный профиль клиента может переопределять указанную здесь скидку.
elevenlabs-gen — единственная каноническая модель ElevenLabs. Передавайте нативный
ID голоса ElevenLabs в стандартном OpenAI-совместимом поле voice. Если
его не указать или передать неизвестное имя, используется голос по умолчанию.
Оплата выполняется по указанной выше ставке elevenlabs-gen.
Длинный текст возвращается одним склеенным MP3.
Устаревшие ID eleven_v3, eleven_multilingual_v2, eleven_flash_v2_5
и api429-tts по-прежнему принимаются для обратной совместимости, но
больше не выводятся в GET /v1/models. В новых интеграциях используйте
elevenlabs-gen.
Eleven v4 и v4 Turbo
eleven_v4 и eleven_v4_turbo — новейшие речевые модели ElevenLabs (вышли
2026-09-28): более выразительная подача, 90+ языков и управление произношением
через фонетику (IPA). v4 Turbo немного уступает в качестве ради меньшей задержки.
Обе модели выводятся в GET /v1/models; запрашивайте их по точному ID на
POST /v1/audio/speech. Цены — в таблице выше. Голоса работают как у
elevenlabs-gen: передайте нативный ID голоса ElevenLabs в voice или не
указывайте его, чтобы использовать голос по умолчанию. Вывод — MP3 (audio/mpeg).
При недоступности сервиса запрос v4 завершается ошибкой. eleven_v3
по-прежнему доступна; выбирайте модель явно в каждом запросе.
curl https://gateway.api429.com/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "eleven_v4",
"voice": "hpp4J3VqNfWAUOO0d1Us",
"input": "Привет! Это Eleven v4 через API429."
}' \
--output speech.mp3
Если контент-фильтр провайдера синтеза блокирует часть текста,
запрос возвращает 422 с числом отклонённых фрагментов. Переформулируйте
отмеченные места и повторите запрос.
curl https://gateway.api429.com/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "elevenlabs-gen",
"voice": "hpp4J3VqNfWAUOO0d1Us",
"input": "Привет! Это озвучка ElevenLabs через API429."
}' \
--output speech.mp3
Модель Fish Audio
| Модель | Для чего подходит | Официальная цена / 1K символов | API429 / 1K символов* | Вывод |
|---|---|---|---|---|
fish-s2.1-pro |
Длинная озвучка, 80+ языков, большая публичная библиотека голосов | $0.015 | $0.0045 | audio/mpeg |
* В колонке API429 учтена стандартная клиентская скидка 70%. Индивидуальный тарифный профиль клиента может переопределять указанную здесь скидку.
Для этой модели voice обязателен. Передайте 32-символьный hex-ID
голоса из каталога (см. ниже) или ID клонированного вами голоса. Голоса
по умолчанию нет: если не указать voice, передать пустую строку или имя
голоса, например "Sarah", вернётся 400 с описанием формата ID. Так
сделано намеренно. Раньше подставлялся голос по умолчанию: аудио получалось нормальным, но
не тем голосом, а ответ был 200. Из-за этого опечатка выглядела так, будто шлюз
вообще игнорирует voice, — один клиент потратил на это целый день. У голосов
есть собственные языковые теги, и многие из них мультиязычные, поэтому один голос часто подходит
для нескольких рынков.
Если ID имеет правильный формат, но такого голоса нет, сейчас возвращается
502("could not be served by any configured provider"), а не4xx, потому что отказ провайдера передаётся как сбой на стороне upstream. Если вы получили502от/v1/audio/speech, сверьте ID голоса с каталогом, прежде чем сообщать о сбое.
Формат вывода. fish-s2.1-pro учитывает response_format: mp3 (по умолчанию),
wav, pcm и opus. Используйте wav, если потребителю нужен RIFF/WAVE: некоторые
пайплайны постобработки не принимают MP3. WAV примерно в шесть раз больше
того же аудио в MP3, поэтому выбирайте mp3, если RIFF вам не нужен.
Длинный текст обрабатывается автоматически. Текст длиннее нескольких тысяч символов
разбивается по границам предложений, синтезируется параллельно и возвращается
одним склеенным клипом — без архивов и без разрезанных пополам слов. Час
озвучки (~60 000 символов) занимает от начала до конца примерно три минуты. Единственное исключение —
opus: его нельзя надёжно склеить, поэтому для длинного текста в этом формате
возвращается 400. Используйте вместо него mp3, wav или pcm.
Об оплате. Провайдер считает байты UTF-8, а ставка выше указана за символ. Латиница занимает один байт на символ, кириллица — два, CJK — три, поэтому озвучка нелатинского текста на стороне upstream обходится пропорционально дороже, чем следует из цены за символ. Для планирования бюджета всегда используйте итоговый счёт из
/api/client/usage/daily.
curl https://gateway.api429.com/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-s2.1-pro",
"input": "Привет! Это озвучка Fish Audio через API429.",
"voice": "90e65eaaf50e4470b8e6d43ee6afd7d5",
"response_format": "wav"
}' \
--output speech.wav
Каталог голосов
GET /v1/audio/voices
Поскольку voice обязателен, а неверное значение даёт 400, так вы находите
действительный ID. Доступно более тысячи публичных голосов на многих языках.
| Параметр | По умолчанию | Описание |
|---|---|---|
model |
fish-s2.1-pro |
Каталог какой модели вывести. Модели без каталога возвращают 400. |
language |
— | Оставить голоса с этим языковым тегом. Большинство голосов мультиязычные, поэтому голос обычно встречается под несколькими языками. |
q |
— | Поиск подстроки в имени голоса без учёта регистра. |
limit / offset |
100 / 0 |
Окно страницы; максимум limit — 1000. |
scope |
catalogue |
mine выводит вместо каталога ваши клонированные голоса (см. ниже). |
curl "https://gateway.api429.com/v1/audio/voices?language=ru&q=narrator&limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"object": "list",
"model": "fish-s2.1-pro",
"total": 37,
"offset": 0,
"data": [
{
"id": "90e65eaaf50e4470b8e6d43ee6afd7d5",
"name": "Documentary narrator",
"languages": ["ru", "en"],
"tags": ["narration", "calm"],
"description": "Warm, unhurried delivery…",
"author": "…",
"popularity": 48213
}
]
}
Возьмите id из любой записи и передайте его как voice в POST /v1/audio/speech.
Результаты отсортированы по popularity — числу задач, которые обработал голос, — поэтому
первая страница — это осмысленный шорт-лист, а не случайная выборка.
total — число всех записей, подходящих под фильтр, а не только на странице. Выводятся только публичные
готовые голоса.
Клонированные голоса
POST /v1/audio/voices
GET /v1/audio/voices?scope=mine
DELETE /v1/audio/voices/{voice_id}
Загрузите запись голоса один раз и дальше синтезируйте речь этим голосом.
Полученный ID работает так же, как любой голос из каталога (передавайте его в voice), с одним
отличием: он доступен только API-ключу, который его создал.
Отправьте аудио как multipart/form-data:
| Поле | Обязательное | Описание |
|---|---|---|
file |
да | Образец голоса. WAV, MP3, FLAC, OGG/Opus или M4A. Лучший результат дают десять–тридцать секунд чистой речи с минимальным фоновым шумом; более длинная запись не помогает. |
name |
да | Ваше название для голоса. |
transcript |
нет | Точный текст того, что звучит в образце. Клон работает и без него, но с ним точнее повторяет оригинал. |
curl https://gateway.api429.com/v1/audio/voices \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@narrator.mp3" \
-F "name=House narrator" \
-F "transcript=I have been recording audiobooks for eleven years."
{
"id": "voice_b3b86385ec1b489f9d16183f603ee25c",
"object": "audio.voice",
"name": "House narrator",
"created": 1789661983,
"sample_bytes": 197431,
"sample_format": "audio/mpeg",
"has_transcript": true
}
curl https://gateway.api429.com/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-s2.1-pro",
"input": "This text is read in the cloned voice.",
"voice": "voice_b3b86385ec1b489f9d16183f603ee25c"
}' \
--output cloned.mp3
Клонированный голос работает везде, где работает голос из каталога, включая разбиение длинного текста: каждый фрагмент длинной озвучки синтезируется тем же голосом.
Ваши голоса принадлежат только вам. Клонированный голос привязан к API-ключу, который
его создал. Другой ключ с этим ID получит 404 — тот же ответ, что и для ID, которого
никогда не существовало, — и не увидит голос в своём списке scope=mine. DELETE удаляет
голос и сохранённую запись; после этого ID возвращает 404.
Ограничения и ошибки.
| Ситуация | Ответ |
|---|---|
| Файл не распознан как аудио | 400 |
| Образец больше 8 MB | 413 — десяти–тридцати секунд вполне достаточно, а MP3 намного меньше WAV |
| Уже зарегистрировано 25 голосов | 409 — сначала удалите один |
| Клонированный голос используется с моделью без поддержки клонирования | 400 |
| Клонирование не включено для этого развёртывания | 503 |
Синтез клонированным голосом оплачивается так же, как любой другой синтез на этой модели:
за символ input по той же ставке. Регистрация, просмотр списка и удаление
голоса бесплатны.
Ссылка вместо файла
Час озвучки занимает около 10 MB в MP3 и намного больше в WAV — такой объём
неудобно передавать в теле синхронного ответа. Укажите "delivery": "url", и
клип загрузится на наш CDN, а в ответ придёт небольшой JSON с его описанием:
curl https://gateway.api429.com/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-s2.1-pro",
"input": "…длинный текст ролика…",
"delivery": "url"
}'
{
"url": "https://api429.lon1.cdn.digitaloceanspaces.com/api429/tts/…mp3",
"mime": "audio/mpeg",
"bytes": 10452992
}
Если не указывать delivery (или передать "inline"), вы получите сырые байты аудио, как
и раньше, — поведение по умолчанию не изменилось.
У gemini-3.1-flash-tts-preview сейчас задокументированы лимиты 8,192 входных токенов
и 16,384 выходных токенов. Для этой модели поддерживается upstream Batch API,
а кеширование, function calling, Live API, структурированный вывод, выполнение
кода, grounding и URL context не поддерживаются.
* Как мы рассчитываем эффективную ставку. Google тарифицирует TTS по аудиотокенам: 1 секунда вывода = 25 аудиотокенов. Английская речь в среднем — 13.5 символов/с, поэтому 1M аудиотокенов ≈ 40 000 с ≈ 540 000 символов.
$20 / 1M audio tokens × (1M / 540K) = $0.03704 per 1K chars (Gemini 3.1) $0.0370 rounded base rate × 30% after the standard 70% discount = $0.0111 billedРусская речь и речь на CJK-языках медленнее (~10–12 символов/с), поэтому наша посимвольная ставка немного занижает стоимость неанглийского трафика (погрешность <25%). Для планирования бюджета всегда используйте итоговый счёт из
/api/client/usage/daily— он отражает фактическое списание Google, а не эту оценку.Текст на входе ($1.00 / 1M текстовых токенов) добавляет <5 % к итогу типичного TTS-запроса, поэтому клиенты обычно могут ориентироваться только на ставку за аудио на выходе.
Быстрый старт (OpenAI-совместимый API)
from openai import OpenAI
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
response = client.audio.speech.create(
model="gemini-3.1-flash-tts-preview", # current Gemini TTS model
voice="Kore",
input="Hello, welcome to our API."
)
response.stream_to_file("output.wav")
curl https://gateway.api429.com/v1/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-o output.wav \
-d '{
"model": "gemini-3.1-flash-tts-preview",
"voice": "Kore",
"input": "Hello, welcome to our API."
}'
// Node.js / TypeScript via the official OpenAI SDK
import OpenAI from "openai";
import { writeFile } from "node:fs/promises";
const client = new OpenAI({
baseURL: "https://gateway.api429.com/v1",
apiKey: process.env.BALANCER_API_KEY!,
});
const speech = await client.audio.speech.create({
model: "gemini-3.1-flash-tts-preview",
voice: "Kore",
input: "Hello, welcome to our API.",
});
await writeFile("output.wav", Buffer.from(await speech.arrayBuffer()));
// Node.js / browser via plain fetch (no SDK dependency)
const res = await fetch("https://gateway.api429.com/v1/audio/speech", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.BALANCER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gemini-3.1-flash-tts-preview",
voice: "Kore",
input: "Hello, welcome to our API.",
}),
});
if (!res.ok) {
const err = await res.json();
throw new Error(`TTS failed: ${err.error?.message ?? res.status}`);
}
const wav = Buffer.from(await res.arrayBuffer());
require("node:fs").writeFileSync("output.wav", wav);
Пример с OpenAI SDK и выразительными тегами
Gemini 3.1 Flash TTS Preview поддерживает выразительные теги в квадратных скобках для управления подачей. Пишите теги по-английски, даже если сам текст на русском или другом языке.
response = client.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Puck",
input=(
"Прочитай как тревожный рассказчик: "
"Я открыл дверь. [short pause] Там никого не было. [gasp]"
),
)
response.stream_to_file("tagged.wav")
Поле
response_format. Все вызовы Gemini TTS возвращаютaudio/wavнезависимо от переданногоresponse_format. OpenAI SDK предоставляетresponse_formatдля совместимости, но upstream не поддерживаетmp3/opus/aac/flac/pcm— вы всегда получите одно и то же тело WAV 24 kHz mono PCM-16. Если нужен другой контейнер, конвертируйте аудио с помощьюffmpegна стороне клиента.
Библиотека голосов (30 готовых голосов)
В Gemini TTS есть 30 разных голосов. У каждого свой тембр и характер — выберите тот, что подходит под вашу задачу.
Во всех превью звучит одна и та же английская панграмма ("The quick brown fox jumps over the lazy dog."), чтобы вы могли сравнить их на слух. На русском и CJK-языках голоса звучат немного иначе, но сохраняют свой характер.
Женские голоса (14):
| Голос | Характер | Превью |
|---|---|---|
Achernar |
Мягкий | |
Aoede |
Лёгкий | |
Autonoe |
Яркий | |
Callirrhoe |
Непринуждённый | |
Despina |
Плавный | |
Erinome |
Чёткий | |
Gacrux |
Зрелый | |
Kore ⭐ |
Уверенный | |
Laomedeia |
Бодрый | |
Leda |
Юный | |
Pulcherrima |
Напористый | |
Sulafat |
Тёплый | |
Vindemiatrix |
Нежный | |
Zephyr |
Яркий |
Мужские голоса (16):
| Голос | Характер | Превью |
|---|---|---|
Achird |
Дружелюбный | |
Algenib |
Хрипловатый | |
Algieba |
Плавный | |
Alnilam |
Уверенный | |
Charon |
Информативный | |
Enceladus |
С придыханием | |
Fenrir |
Возбуждённый | |
Iapetus |
Чёткий | |
Orus |
Уверенный | |
Puck |
Бодрый | |
Rasalgethi |
Информативный | |
Sadachbia |
Живой | |
Sadaltager |
Знающий | |
Schedar |
Ровный | |
Umbriel |
Непринуждённый | |
Zubenelgenubi |
Повседневный |
⭐ Kore — голос по умолчанию в балансировщике, если voice не указан или неизвестен.
Неизвестные имена голосов молча заменяются на Kore: перед отправкой в upstream
балансировщик сверяет имена с белым списком.
Для читающих офлайн или на GitHub. Превью выше размещены по адресу
https://hostkey24760.api429.com/admin-panel/front-max/voice-samples/<Voice>.mp3— они публичные, авторизация не нужна. Если вы читаете этот текст на GitHub или в офлайн-зеркале, откройте эти URL в браузере, чтобы послушать. Альтернатива — интерактивная AI Studio Voice Library от Google: там каждый голос звучит на нескольких примерах фраз.
Выбор голоса по сценарию
Краткая шпаргалка, чтобы сузить выбор с 30 до 1 в зависимости от задачи. Все рекомендации субъективны — послушайте превью и доверьтесь своему слуху.
| Сценарий | Рекомендуемые голоса | Почему |
|---|---|---|
| Озвучка аудиокниг (спокойно, долго) | Sulafat, Charon, Rasalgethi, Vindemiatrix |
Тёплые, ровные, их легко слушать часами |
| Ведущий подкаста или ток-шоу (энергично) | Puck, Zephyr, Laomedeia, Sadachbia |
Бодрые, вовлекающие, с выразительной интонацией |
| Новости, погода, официальный стиль | Kore, Charon, Algieba, Schedar |
Уверенная, нейтральная подача, как у диктора |
| Голосовой ассистент или чат-бот | Kore, Orus, Aoede, Achird |
Дружелюбные, сбалансированные, не утомляют |
| Детский контент | Leda, Aoede, Achird |
Юные, лёгкие, располагающие |
| Саспенс и драматичная озвучка | Enceladus, Algenib, Gacrux, Fenrir |
С придыханием, хрипловатые, зрелые, возбуждённые — умеют держать напряжение |
| Русский и CJK-языки | Kore, Charon, Sulafat, Puck |
Эти четыре голоса лучше всего сохраняют характер на неанглийских языках |
| Диалог двух дикторов | Один яркий (Puck/Zephyr/Aoede) + один уверенный (Kore/Charon) |
Максимальный тембровый контраст для разборчивости |
Языки
Gemini TTS автоматически определяет язык по входному тексту. 24 языка в GA:
арабский (Египет), бенгальский (Бангладеш), нидерландский, английский (Индия, США), французский, немецкий, хинди, индонезийский, итальянский, японский, корейский, маратхи, польский, португальский (Бразилия), румынский, русский, испанский (Испания), тамильский, телугу, тайский, турецкий, украинский, вьетнамский.
Ещё 50+ в режиме Preview (китайский мандаринский, греческий, иврит, норвежский, шведский, чешский и другие — см. официальный список Google).
# Russian — just write the text, no extra parameter needed
response = client.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Kore",
input="Привет, как твои дела сегодня?",
)
Управление стилем
Манеру подачи можно задать двумя способами:
1. Префикс со стилем на естественном языке
Добавьте инструкцию по стилю в начало текста.
client.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Enceladus",
input="Say in a spooky whisper: Something wicked this way comes.",
)
client.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Puck",
input="Read excitedly, like breaking news: The rocket has landed!",
)
2. Экспрессивные аудиотеги
Теги в квадратных скобках внутри предложения управляют неречевыми звуками и темпом. Google не публикует исчерпывающий список тегов. Считайте перечень ниже официальными и распространёнными примерами из документации Gemini API и Cloud TTS и проверяйте точную формулировку на своём голосе и языке.
client.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Puck",
input="That joke was amazing. [laughs] I cannot stop thinking about it. [short pause] But seriously…",
)
Основные категории:
Неречевые звуки — голосовые вставки:
| Тег | Эффект |
|---|---|
[sigh] / [sighs] |
Выдох |
[laughs] / [laughing] / [giggles] |
Смешок или смех |
[gasp] |
Удивлённый вдох |
[uhm] |
Звук-заполнитель |
[cough] / [coughs] |
Кашель |
[chuckling] |
Тихий смех во время речи |
Модификаторы стиля — меняют характер подачи:
| Тег | Эффект |
|---|---|
[whispers] / [whispering] |
Тише, с придыханием |
[shouting] |
Энергичнее и громче |
[sarcasm] / [sarcastically] |
Сухая, невозмутимая подача |
[robotic] |
Синтетическая, безэмоциональная речь |
[extremely fast] / [very fast] |
Ускоренный темп |
[very slow] |
Замедленная подача |
Эмоциональная разметка — эмоциональная окраска:
| Тег | Эффект |
|---|---|
[amazed] |
Изумлённый тон |
[crying] |
Плачущий тон |
[excited] / [excitedly] |
Выше тон и быстрее темп |
[scared] |
Дрожащий голос, выше тон |
[curious] |
Вопросительная интонация |
[bored] |
Монотонно и протяжно |
[reluctantly] / [mischievously] |
Нерешительный или игривый тон |
[serious] / [tired] / [panicked] / [trembling] |
Модификаторы настроения |
Темп — паузы:
| Тег | Эффект |
|---|---|
[short pause] |
Тишина ~250 ms |
[medium pause] |
Тишина ~500 ms |
[long pause] |
Тишина ~1 s |
Про язык: пишите аудиотеги на английском независимо от языка речи.
[laughs]работает внутри русского предложения, а[смеётся]может быть прочитан вслух буквально.
Temperature (управление креативностью)
Gemini TTS поддерживает параметр temperature в диапазоне (0.0, 2.0].
Чем выше значение, тем выразительнее и разнообразнее озвучка. Низкие значения дают
предсказуемый результат. OpenAI-совместимый эндпоинт пока не поддерживает этот параметр. Если он вам нужен,
используйте нативный эндпоинт Gemini без стриминга:
curl "https://gateway.api429.com/gemini/v1beta/models/gemini-3.1-flash-tts-preview:generateContent" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "Tell me about the stars"}]}],
"generationConfig": {
"responseModalities": ["AUDIO"],
"temperature": 1.5,
"speechConfig": {
"voiceConfig": {"prebuiltVoiceConfig": {"voiceName": "Kore"}}
}
}
}'
Нативный ответ Gemini содержит сырой PCM в base64 в поле
candidates[0].content.parts[0].inlineData.data. Декодируйте его и упакуйте на стороне клиента
в WAV: 24 kHz, моно, PCM-16.
Разумные начальные значения:
- 0.2–0.5 — дикторский текст, стабильное чтение, аудиокниги
- 0.8–1.2 — разговорная речь, звучание по умолчанию
- 1.5–2.0 — театральная, эмоциональная подача, ведущие подкастов
Диалог нескольких спикеров
Gemini TTS может озвучить разговор до 2 спикеров за
один вызов. OpenAI-совместимый эндпоинт балансировщика пока не
поддерживает speaker_voice_configs. Для озвучки нескольких спикеров используйте нативный
эндпоинт Gemini без стриминга:
curl "https://gateway.api429.com/gemini/v1beta/models/gemini-3.1-flash-tts-preview:generateContent" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text":
"TTS the following conversation:\nJoe: How is it going today Jane?\nJane: Not too bad, how about you?"
}]}],
"generationConfig": {
"responseModalities": ["AUDIO"],
"speechConfig": {
"multiSpeakerVoiceConfig": {
"speakerVoiceConfigs": [
{"speaker": "Joe", "voiceConfig": {"prebuiltVoiceConfig": {"voiceName": "Kore"}}},
{"speaker": "Jane", "voiceConfig": {"prebuiltVoiceConfig": {"voiceName": "Puck"}}}
]
}
}
}
}' | jq -r '.candidates[0].content.parts[0].inlineData.data' \
| base64 --decode > dialogue.pcm
# Wrap raw PCM 16-bit 24kHz mono into a WAV:
ffmpeg -f s16le -ar 24000 -ac 1 -i dialogue.pcm dialogue.wav
Диалог в contents.parts[0].text можно оформить двумя способами:
(a) Свободная форма (показана выше) — префиксы строк Speaker: … в обычном тексте.
Такой текст проще всего сгенерировать с помощью LLM.
(b) Структурированная форма — явный список реплик (только Python SDK):
from google import genai
from google.genai import types
client = genai.Client(
vertexai=True,
project="YOUR_GCP_PROJECT",
location="global",
)
turns = [
types.Content(role="user", parts=[
types.Part(text="Joe: How's it going today Jane?"),
]),
types.Content(role="user", parts=[
types.Part(text="Jane: Not too bad, how about you?"),
]),
]
response = client.models.generate_content(
model="gemini-3.1-flash-tts-preview",
contents=turns,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
speaker_voice_configs=[
types.SpeakerVoiceConfig(speaker="Joe",
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore"))),
types.SpeakerVoiceConfig(speaker="Jane",
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Puck"))),
]
)
),
temperature=1.5,
),
)
Совет: если нужна озвучка нескольких спикеров через OpenAI-совместимый
эндпоинт, заранее разметьте текст префиксами Speaker: и озвучьте обе роли
одним голосом. Модель всё равно учитывает контекст спикеров
и слегка меняет интонацию. Если вам нужна полноценная
поддержка speaker_voice_configs в /v1/audio/speech, создайте тикет.
Формат выходного аудио
| Поле | Значение |
|---|---|
| Контейнер | WAV (наш шлюз упаковывает сырой PCM) |
| Кодек | Линейный PCM, 16 бит, little-endian |
| Частота дискретизации | 24 000 Hz |
| Каналы | Моно (1) |
| Сырые данные от провайдера | 16-битный PCM 24 kHz (без заголовка) — мы добавляем 44-байтовый заголовок WAV |
Ограничения на вход и выход
| Параметр | Ограничение |
|---|---|
Рекомендуемый фрагмент для /v1/audio/speech |
3.5–4 KB UTF-8 для стабильной просодии и повторов |
Cloud Text-to-Speech напрямую, prompt + text |
До 8 000 байт суммарно у провайдера; prompt и text ограничены 4 000 байт каждый |
Vertex напрямую, contents |
До 8 000 байт у провайдера |
| Сессия/контекст генерации речи | 32k токенов у провайдера |
| Gemini 3.1 Flash TTS Preview | 8,192 входных токенов, 16,384 выходных токенов |
| Длительность выходного аудио | Около 655 секунд у провайдера; через несколько минут качество может падать |
| Лимит в минуту | При HTTP 429 учитывайте Retry-After и ограничивайте число повторов |
Профиль задержек
Замерено 2026-04-23 на продакшене (медиана по 5 запросам с холодным стартом, 60 символов на входе, голос Kore):
| Модель | p50 | обычно | Примечания |
|---|---|---|---|
gemini-3.1-flash-tts-preview |
2.2 s | 2–5 s | Текущая TTS-модель Gemini в API429 |
Совместимость голосов и моделей
Все пять Gemini TTS-моделей поддерживают 30 голосов, перечисленных выше.
Ответы с ошибками
Все ошибки возвращаются в формате ошибок OpenAI: HTTP-статус и JSON-тело
вида {"error": {"message": "...", "type": "...", "code": "..."}}. В
таблице перечислены ошибки, которые вы реально встретите при работе с /v1/audio/speech
в штатном режиме:
| Статус | Когда возникает | Пример тела | Повторять? |
|---|---|---|---|
| 400 | Синтаксически корректный запрос отклонён выбранным TTS-провайдером, например пустой input или неподдерживаемая модель провайдера, отличного от Gemini | {"error":{"message":"input must not be empty","type":"invalid_request_error","code":"invalid_request"}} |
Нет — исправьте запрос |
| 422 | Отсутствует или пуст обязательный model, отсутствует input, неподдерживаемый ID TTS-модели Gemini, некорректный JSON или неверные типы полей |
Формат ошибки валидации FastAPI | Нет — исправьте запрос |
| 401 | Заголовок Authorization: Bearer … отсутствует или неверен |
{"error":{"message":"Invalid authentication token","type":"invalid_request_error","code":"invalid_token"}} |
Нет — замените ключ |
| 413 | Провайдер отклоняет слишком большой input, например prompt + text в Cloud/Vertex сверх лимитов провайдера в байтах |
413 в формате провайдера — заранее разбейте текст, см. Длинное аудио ниже | Нет — разбейте на стороне клиента |
| 429 | Превышен rate limit на ключ или binding у провайдера. Ответ содержит Retry-After (в секундах) |
{"error":{"message":"Rate limit exceeded","type":"rate_limit_error","code":"rate_limit"}} + Retry-After: 30 |
Да — подождите Retry-After и повторите |
| 500 | Внутренняя ошибка сервиса | {"error":{"message":"Internal server error","type":"internal_error","code":"500"}} |
Да — экспоненциальная задержка, см. Паттерн повторов |
| 502 | Сервис временно недоступен; возвращается 503 с Retry-After: 10 |
(уже преобразовано в 503; см. ниже) | н/д |
| 503 | Сервис временно недоступен | {"error":{"message":"Backend temporarily unavailable, retry in 10 seconds","type":"backend_unavailable","code":503,"retry_after":10}} + Retry-After: 10 |
Да — подождите Retry-After и повторите |
| 504 | Долгое зависание у провайдера — для TTS редкость (одиночный запрос короткий) | 504 в формате OpenAI | Да, с осторожностью — не больше 1 повтора |
Как безопасно обрабатывать ошибки (Python):
from openai import OpenAI, APIError, RateLimitError, APIStatusError
client = OpenAI(base_url="https://gateway.api429.com/v1", api_key="...")
try:
resp = client.audio.speech.create(model="gemini-3.1-flash-tts-preview", voice="Kore", input=text)
except RateLimitError as e: # 429 — respect Retry-After
retry_after = int(e.response.headers.get("retry-after", "30"))
...
except APIStatusError as e:
if e.status_code in (502, 503, 504): # transient — retry
retry_after = int(e.response.headers.get("retry-after", "10"))
...
elif e.status_code in (400, 401, 413): # permanent — surface
raise
else:
raise
Паттерн повторов
Три правила, с которыми повторы остаются безопасными и дешёвыми:
- Соблюдайте
Retry-After, если сервер его передаёт (в 429 / 503 он есть всегда). Это значение отражает текущую загрузку. Если повторить раньше, запрос просто встанет в очередь на сервере и быстрее не выполнится. - Экспоненциальная задержка с jitter для временных 5xx без
Retry-After. Рекомендуемая схема:
2 s → 8 s → 30 s(не больше 3 попыток, jitter ±20 %). - Не повторяйте 400/401/413 — тот же запрос с тем же input вернёт ту же ошибку и потратит бюджет. Передайте ошибку выше.
Эталонная реализация на Python
import asyncio
import random
from openai import AsyncOpenAI, APIStatusError, RateLimitError
client = AsyncOpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
async def synthesize_with_retry(*, model: str, voice: str, input: str,
max_attempts: int = 4) -> bytes:
"""Synthesize speech with bounded retry. Honours Retry-After.
Returns the full WAV bytes. Raises on permanent errors or after
``max_attempts`` transient failures.
"""
backoff_s = [2, 8, 30, 60]
for attempt in range(max_attempts):
try:
resp = await client.audio.speech.create(
model=model, voice=voice, input=input,
)
return await resp.aread()
except RateLimitError as e: # 429
wait = int(e.response.headers.get("retry-after", "30"))
except APIStatusError as e:
if e.status_code in (400, 401, 413): # permanent
raise
if e.status_code in (429, 502, 503, 504, 500) and attempt < max_attempts - 1:
wait = int(e.response.headers.get("retry-after",
str(backoff_s[attempt])))
else:
raise
wait *= (1 + random.uniform(-0.2, 0.2)) # ±20 % jitter
await asyncio.sleep(wait)
raise RuntimeError("synthesize_with_retry: all attempts failed")
Эталонная реализация на TypeScript
import OpenAI, { APIError } from "openai";
const client = new OpenAI({
baseURL: "https://gateway.api429.com/v1",
apiKey: process.env.BALANCER_API_KEY!,
});
const BACKOFF_S = [2, 8, 30, 60];
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
export async function synthesizeWithRetry(args: {
model: string;
voice: string;
input: string;
maxAttempts?: number;
}): Promise<Buffer> {
const max = args.maxAttempts ?? 4;
for (let attempt = 0; attempt < max; attempt++) {
try {
const r = await client.audio.speech.create({
model: args.model,
voice: args.voice,
input: args.input,
});
return Buffer.from(await r.arrayBuffer());
} catch (e) {
if (!(e instanceof APIError)) throw e;
const status = e.status ?? 0;
if ([400, 401, 413].includes(status)) throw e; // permanent
if (![429, 500, 502, 503, 504].includes(status)) throw e;
if (attempt === max - 1) throw e;
const headerRetry = Number(e.headers?.["retry-after"]) || BACKOFF_S[attempt];
const jittered = headerRetry * (1 + (Math.random() - 0.5) * 0.4);
await sleep(jittered * 1000);
}
}
throw new Error("synthesizeWithRetry: exhausted");
}
Технические настройки, доступные только в Cloud
Google Cloud Text-to-Speech предоставляет низкоуровневые настройки, полезные
при прямой интеграции с Cloud. Но в нашем маршруте /v1/audio/speech
таких полей нет.
curl -X POST "https://texttospeech.googleapis.com/v1/text:synthesize" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "x-goog-user-project: $PROJECT_ID" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "Read the following in a curious, restrained tone.",
"text": "OK, so... tell me about this [uhm] AI thing."
},
"voice": {
"languageCode": "en-us",
"name": "Kore",
"model_name": "gemini-2.5-flash-tts"
},
"audioConfig": {
"audioEncoding": "LINEAR16",
"sampleRateHertz": 24000,
"speakingRate": 1.0,
"volumeGainDb": 0.0
},
"advancedVoiceOptions": {
"safetySettings": []
}
}'
advancedVoiceOptions.safetySettings — функция прямого API Cloud Text-to-Speech.
Она намеренно не описана как поле запроса к балансировщику.
Устаревшие параметры relax_safety_filters / safety_settings шлюз
не передаёт.
Чего нет в /v1/audio/speech
Для полноты картины: следующих настроек нет среди полей узкого OpenAI-совместимого эндпоинта для речи. Часть из них доступна через нативный шлюз Gemini, как показано выше. Настройки, доступные только в Cloud, требуют прямой интеграции с Google Cloud:
| Возможность | Поддержка у провайдера | Почему недоступна |
|---|---|---|
temperature |
✅ Нативный Gemini generateContent |
Используйте /gemini/v1beta/models/{model}:generateContent; /v1/audio/speech остаётся OpenAI-совместимым |
languageCode |
✅ Нативный Gemini / Cloud TTS напрямую | На /v1/audio/speech Gemini определяет язык автоматически; явный BCP-47 там не поддерживается |
| Полноценная настройка нескольких спикеров | ✅ Нативный Gemini multiSpeakerVoiceConfig / Cloud MultiSpeakerMarkup |
Для сопоставления спикеров и голосов используйте нативный маршрут Gemini или Cloud напрямую |
| Другие кодировки аудио (MP3, OGG_OPUS, ALAW, MULAW, PCM) | ✅ Унарные вызовы Cloud TTS напрямую | Путь Gemini возвращает контейнер WAV; некоторые альтернативные алиасы могут возвращать MP3 |
Своя частота дискретизации (sampleRateHertz) |
✅ Cloud TTS напрямую | В шлюзе Gemini частота фиксирована: 24 kHz, моно, PCM |
| Стриминг TTS (аудио по частям) | ✅ Cloud TTS StreamingSynthesize; ✅ стриминг в Vertex напрямую |
TTS в Gemini Developer API и наш /v1/audio/speech возвращают полный ответ без стриминга |
| Batch API (асинхронная пакетная озвучка) | ✅ У провайдера для gemini-3.1-flash-tts-preview |
Балансировщик не проксирует |
advancedVoiceOptions.safetySettings |
✅ Cloud TTS напрямую | Не является полем запроса /v1/audio/speech |
| Клонирование голоса | ❌ Google не поддерживает | Только 30 готовых голосов — публичного API для клонирования голоса у Google нет |
Полная документация Google:
- Gemini Developer API: https://ai.google.dev/gemini-api/docs/speech-generation
- Vertex AI Gemini TTS: https://cloud.google.com/text-to-speech/docs/gemini-tts
- Интерактивная библиотека голосов: https://aistudio.google.com/apps/bundled/voice-library
Длинное аудио (10+ минут)
Для аудиокниг, подкастов и любой озвучки длиннее нескольких минут клиент должен разбить сценарий на фрагменты, синтезировать их параллельно и склеить WAV-файлы локально. Балансировщик не разбивает текст, не объединяет запросы в пакеты и не склеивает потоки автоматически.
Безопасный рекомендуемый размер фрагмента — 3.5–4 KB UTF-8. В старой документации
это значение ошибочно называлось локальным лимитом, но такого ограничителя в шлюзе не обнаружено. Реальный
лимит провайдера для prompt + text в Cloud/Vertex напрямую — 8,000 байт, а у длинных
одиночных запросов через несколько минут может падать качество. Максимальная длительность выходного аудио у провайдера —
около 655 секунд, но в продакшене надёжнее
разбивать текст на фрагменты.
Расчёт объёма
| Целевая длительность аудио | Примерно символов (английский, 13.5 симв./с) | Фрагментов по 3 500 байт | Время при 8 параллельных × 4 s/фрагмент |
|---|---|---|---|
| 30 min | ~24 000 | 7 | ~4 s |
| 60 min | ~49 000 | 14 | ~8 s |
| 90 min | ~73 000 | 21 | ~12 s |
| 120 min | ~97 000 | 28 | ~16 s |
Русская речь и речь на CJK-языках медленнее (~10–12 симв./с), поэтому при той же длительности символов нужно примерно на 25 % меньше. Стоимость растёт линейно с числом входных символов по тарифу из раздела Доступные модели выше (например, 90 min Flash ≈ $1.35).
Стратегия разбиения
- Разбивайте по границам предложений, чтобы просодия не обрывалась посреди фразы.
- Упаковывайте фрагменты примерно по 3 500 байт UTF-8 (оставляя запас для префиксов стиля, тегов разметки и повторов).
- Сохраняйте порядок — при склейке результаты параллельного синтеза нужно собирать в порядке входных фрагментов, а не в порядке завершения.
Параллельный синтез
Используйте небольшое ограниченное число одновременных запросов синтеза
с учётом лимитов аккаунта и получаемых ответов. При HTTP 429 учитывайте
Retry-After, увеличивайте задержку и ограничивайте число повторов.
Склейка
Все ответы Gemini TTS — это WAV: 24 kHz, моно, PCM-16 (см. Формат выходного аудио выше). Частота дискретизации и раскладка каналов совпадают, поэтому аудиоданные можно склеивать напрямую, без перекодирования. Два практичных варианта:
- Стандартная библиотека Python
wave— прочитайте все WAV и запишите один общий файл. Внешние зависимости не нужны. - ffmpeg —
ffmpeg -f concat -safe 0 -i list.txt -c copy out.wav, где вlist.txtпо порядку перечислены имена файлов фрагментов.
Полный пример на Python (разбиение → gather → склейка)
import asyncio
import io
import re
import wave
from openai import AsyncOpenAI
client = AsyncOpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY",
)
CHUNK_BUDGET_BYTES = 3500 # leave room for style instructions and transcript tags
PARALLELISM = 8 # example only; adjust to account limits and observed 429s
def split_into_chunks(text: str, budget: int = CHUNK_BUDGET_BYTES) -> list[str]:
"""Split text at sentence boundaries, bin-pack to ≤budget bytes UTF-8."""
sentences = re.split(r"(?<=[.!?])\s+", text.strip())
chunks: list[str] = []
buf = ""
for sent in sentences:
candidate = (buf + " " + sent).strip()
if len(candidate.encode("utf-8")) > budget and buf:
chunks.append(buf)
buf = sent
else:
buf = candidate
if buf:
chunks.append(buf)
return chunks
async def synthesize_one(idx: int, text: str, sem: asyncio.Semaphore) -> tuple[int, bytes]:
async with sem:
resp = await client.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Kore",
input=text,
)
return idx, await resp.aread()
async def synthesize_long(text: str, out_path: str) -> None:
chunks = split_into_chunks(text)
sem = asyncio.Semaphore(PARALLELISM)
results = await asyncio.gather(
*(synthesize_one(i, c, sem) for i, c in enumerate(chunks))
)
# Reassemble in original order (gather preserves input order, but
# we tag explicitly so partial-result paths stay safe).
results.sort(key=lambda x: x[0])
with wave.open(out_path, "wb") as out_wav:
params_set = False
for _, wav_bytes in results:
with wave.open(io.BytesIO(wav_bytes), "rb") as in_wav:
if not params_set:
out_wav.setparams(in_wav.getparams())
params_set = True
out_wav.writeframes(in_wav.readframes(in_wav.getnframes()))
# Usage:
# asyncio.run(synthesize_long(open("script.txt").read(), "narration.wav"))
Советы по обработке сбоев
- Оберните
synthesize_oneв цикл повторовfor attempt in range(3)— отдельные фрагменты могут независимо получить 429 / 5xx от провайдера. Ограничивайте число повторов и учитывайтеRetry-After. - Если фрагмент стабильно падает даже после повторов, можно либо завершить ошибкой
всю задачу, либо заменить его тишиной (
b"\x00" * bytes_per_second * estimated_seconds), чтобы WAV сохранил ожидаемую длину. Выбор зависит от того, допускает ли ваша дальнейшая обработка пропуски. - Отслеживайте расход по каждому фрагменту: каждый вызов тарифицируется отдельно
(
/api/client/usage/dailyсуммирует их).
Когда запрашивать поддержку на стороне сервера
Если вы регулярно генерируете аудио длиннее ~30 минут, а
склейка на клиенте неудобна в эксплуатации (например, в мобильных клиентах или
в браузере, где нет стандартной библиотеки wave), создайте тикет. Мы можем
повысить приоритет серверного эндпоинта /v1/audio/speech/long, который
сам разобьёт текст, распараллелит запросы и вернёт один WAV в одном HTTP-ответе.
Рецепты интеграции
Готовые примеры для типовых продуктов. Каждый пример самодостаточен и
использует только публичный эндпоинт /v1/audio/speech.
1. Telegram-бот — голосовые ответы
# pip install python-telegram-bot openai
import io, os
from openai import OpenAI
from telegram import Update
from telegram.ext import Application, MessageHandler, ContextTypes, filters
tts = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key=os.environ["BALANCER_API_KEY"],
)
async def voice_reply(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
text = update.message.text or "Hello!"
if len(text.encode("utf-8")) > 4000:
await update.message.reply_text("Sorry, message too long for TTS.")
return
speech = tts.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Kore",
input=text,
)
# Telegram accepts WAV directly via send_voice (or send_audio for file).
await update.message.reply_voice(io.BytesIO(speech.read()))
app = Application.builder().token(os.environ["TELEGRAM_BOT_TOKEN"]).build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, voice_reply))
app.run_polling()
2. Аудиокнига из файла .txt
Использует функцию разбиения на фрагменты из раздела Длинное аудио: подключает её
к обычному текстовому файлу и собирает один WAV. Выбран голос Sulafat (тёплый, ровный) —
он хорошо подходит для многочасового чтения.
import asyncio
from pathlib import Path
# ...split_into_chunks, synthesize_one, synthesize_long defined in
# the "Long-form audio" section above...
async def audiobook(in_path: str, out_path: str, voice: str = "Sulafat") -> None:
text = Path(in_path).read_text(encoding="utf-8")
# Override the default voice in synthesize_one by using a partial
# or just pass it through — see Long-form Python example.
await synthesize_long(text, out_path, voice=voice, model="gemini-3.1-flash-tts-preview")
# CLI: python audiobook.py book.txt narration.wav
if __name__ == "__main__":
import sys
asyncio.run(audiobook(sys.argv[1], sys.argv[2]))
3. Озвучка чата — ответ LLM вслух
Пропускает ответ chat completions через TTS. Работают два потока параллельно: текстовый поток читает пользователь, а задача синтеза обрабатывает собранные фрагменты.
import os
from openai import OpenAI
llm = OpenAI(base_url="https://gateway.api429.com/v1",
api_key=os.environ["BALANCER_API_KEY"])
# 1) Get a chat reply
chat = llm.chat.completions.create(
model="claude-sonnet-4-5",
messages=[{"role": "user", "content": "Tell me a 3-sentence bedtime story."}],
max_tokens=200,
)
reply_text = chat.choices[0].message.content
# 2) TTS it (single-shot — short replies fit comfortably)
speech = llm.audio.speech.create(
model="gemini-3.1-flash-tts-preview",
voice="Despina", # smooth, calming for bedtime
input=reply_text,
)
with open("story.wav", "wb") as f:
f.write(speech.read())
4. Кнопка предпрослушивания в веб-приложении
Браузер отправляет запрос с тем же Bearer-токеном. В продакшене храните токен на сервере — этот пример предназначен для админского интерфейса с авторизацией, где токен уже доступен.
<button id="preview" data-text="Hello, this is a preview." data-voice="Puck">▶</button>
<audio id="player" controls></audio>
<script>
document.getElementById("preview").addEventListener("click", async (e) => {
const btn = e.currentTarget;
const res = await fetch("https://gateway.api429.com/v1/audio/speech", {
method: "POST",
headers: {
"Authorization": `Bearer ${window.YOUR_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gemini-3.1-flash-tts-preview",
voice: btn.dataset.voice,
input: btn.dataset.text,
}),
});
if (!res.ok) {
const err = await res.json().catch(() => ({}));
alert("TTS failed: " + (err.error?.message ?? res.status));
return;
}
const blob = await res.blob();
document.getElementById("player").src = URL.createObjectURL(blob);
document.getElementById("player").play();
});
</script>
Практикум по интеграции
Этот раздел пригодится, если вы адаптируете готовый клиент или отлаживаете запрос, который работает с SDK одного вендора, но не проходит через шлюз.
Выбор эндпоинта под задачу
| Задача | Эндпоинт | Примеры моделей | Примечания |
|---|---|---|---|
| Текстовый чат | POST /v1/chat/completions |
gemini-3.1-pro, claude-sonnet-5, gpt-5.4 |
Стандартный формат OpenAI Chat Completions. |
| Reasoning и работа с инструментами в GPT | POST /v1/responses |
gpt-5.5, gpt-5.4, gpt-5.3-codex |
Рекомендуется для reasoning и состояния инструментов в GPT-5.x. |
| Генерация изображений по тексту | POST /v1/images/generations |
gpt-image-2, gemini-3-pro-image, FLUX.2-pro |
Тело запроса в JSON. |
| Редактирование изображений / image-to-image | POST /v1/images/edits |
gpt-image-2, gemini-3-pro-image |
Multipart-запрос с одним или несколькими файлами image. |
| Эмбеддинги | POST /v1/embeddings |
gemini-embedding-001 |
Векторы возвращаются без стриминга. |
| TTS | POST /v1/audio/speech |
gemini-3.1-flash-tts-preview |
В ответе возвращается аудио целиком; Gemini отдаёт WAV. |
| Нативная мультимодальность Gemini | /gemini/v1beta/models/{model}:generateContent |
gemini-* |
Используйте, если ваш клиент уже отправляет Google contents.parts с inline_data или fileData. |
Прежде чем показывать модель в интерфейсе, вызовите GET /v1/models с тем же API-ключом,
который будете использовать в продакшене. Ответ содержит только модели,
разрешённые для этого токена.
Форматы мультимодальных запросов
Vision в OpenAI-совместимом чате:
{
"model": "gemini-3.1-pro",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}]
}
Нативный мультимодальный формат Gemini:
{
"contents": [{
"role": "user",
"parts": [
{"text": "Describe this image"},
{"inline_data": {"mime_type": "image/jpeg", "data": "<BASE64_IMAGE_DATA>"}}
]
}]
}
Используйте нативный маршрут Gemini, только если ваш клиент уже работает с форматом
contents.parts. Клиентам на OpenAI SDK нужен OpenAI-совместимый формат
messages[].content[], показанный выше.
Для медиа в нативном формате Gemini поля inlineData.data / inline_data.data и
thoughtSignature принимают как стандартный base64, так и URL-safe base64,
с паддингом или без. В ответах API429 используется канонический стандартный
base64 с паддингом. Поэтому данные из ответа можно без перекодирования
на клиенте передать в следующий запрос.
Клиенты со стримингом
- Читайте SSE до
data: [DONE]. - Пропускайте SSE-комментарии и пустые строки.
- Для долгих задач не превращайте ситуацию «стрим вернул 0 чанков» в немедленный повторный запрос без стриминга: так можно выполнить работу дважды и заплатить дважды.
- Если HTTP-запрос упал до обработки первых данных SSE, повторите его с экспоненциальной задержкой.
- Если
event: errorпришёл после начала генерации текста, аудио или изображения, считайте попытку неудачной и повторяйте её только в соответствии с политикой идемпотентности вашего продукта.
Повторы и ограничения частоты запросов
- Учитывайте
Retry-After, если он есть. - Повторяйте запросы при 429, 503, 504 и временных сетевых ошибках с задержкой.
- Не повторяйте запросы в плотном цикле. Добавляйте jitter и ограничивайте число повторов.
- Для долгих текстовых задач Claude используйте
stream:trueв интерактивных сценариях илиX-Async-Jobs-Optin: trueдля надёжного выполнения без стриминга.
Типичные исправления запросов
| Симптом | Вероятная причина | Решение |
|---|---|---|
404 по ссылке на .md-файл документации |
Отдельные markdown-руководства не публикуются | Используйте эту страницу /documentation: все публичные примеры собраны здесь. |
model_not_found или model_not_allowed |
Запрошенной модели нет в списке разрешённых для токена | Вызовите GET /v1/models с тем же ключом и используйте один из полученных ID. |
| Редактирование изображения падает с телом в JSON | /v1/images/edits ожидает multipart-форму |
Передайте -F "image=@file.png" и -F "prompt=...". |
| Payload Gemini для image-to-image отклоняется | Клиент отправляет Google inline_data в OpenAI-совместимый эндпоинт |
Для нативных payload Gemini используйте /gemini/v1beta/models/{model}:generateContent или multipart-запрос к /v1/images/edits. |
| Ответ TTS не парсится как JSON | /v1/audio/speech возвращает бинарное аудио |
Читайте ответ как bytes/blob и сохраняйте или воспроизводите его как WAV или MP3. |
| Стриминг Claude выглядит зависшим | Клиент ждёт финального ответа вместо чтения SSE | Используйте stream:true, разбирайте чанки по мере поступления и задайте большой таймаут чтения. |
temperature отклоняется для reasoning-модели |
Некоторые режимы reasoning требуют особых правил сэмплирования у провайдера | Не передавайте temperature без необходимости; глубину reasoning задавайте через reasoning_effort. |
Files API
Нативный Gemini Files API, проксируется 1:1. Подходит для загрузки больших входных данных
(видео, длинных PDF), на которые затем ссылаются вызовы generateContent.
| Метод | Путь | Описание |
|---|---|---|
POST |
/upload/v1beta/files |
Начать возобновляемую загрузку |
GET/POST/PUT |
/upload/{upload_path} |
Продолжить возобновляемую загрузку |
GET |
/v1beta/files |
Список файлов |
GET |
/v1beta/files/{file_id} |
Получить метаданные файла |
DELETE |
/v1beta/files/{file_id} |
Удалить файл |
Те же маршруты доступны по путям /gemini/upload/v1beta/files и
/gemini/v1beta/files[/…]. Аутентификация — x-goog-api-key: <token> или ?key=<token>.
Использование и баланс клиента
Эти эндпоинты показывают состояние Bearer-токена, с которым их вызвали. Права администратора не нужны.
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/client/balance |
Текущий баланс вызывающего токена |
GET |
/api/client/usage/daily |
Последние 24 ч: число вызовов, расход токенов, число изображений, топ моделей |
GET |
/api/client/usage/summary |
Сводка использования и затрат за день, неделю и месяц |
POST |
/api/client/usage/daily/telegram |
Отправить отчёт за последние 24 ч в Telegram (бот на стороне сервера) |
curl https://gateway.api429.com/api/client/balance \
-H "Authorization: Bearer YOUR_API_KEY"
{
"token_id": "tok_…",
"token_last4": "a1b2",
"balance": {
"currency": "USD",
"available": "12.3400",
"spent_today": "0.5120"
}
}
Тело запроса POST /api/client/usage/daily/telegram принимает:
{
"chat_id": "123456789",
"message_thread_id": 42
}
chat_id обязателен при первой отправке; в последующих вызовах его можно не передавать —
будет использовано сохранённое значение.
Клиентский портал (веб)
Панель самообслуживания в браузере доступна по адресу:
https://client.api429.com/
Вход. Вставьте свой bearer-токен (то же значение gb_…, которое вы используете для
вызовов API) в поле Sign in и нажмите кнопку. Токен хранится только
в sessionStorage текущей вкладки браузера и удаляется, как только вы
закроете вкладку. Никаких cookie, паролей и отдельных учётных записей.
Что показывает портал.
- Текущий баланс в USD с предупреждением о низком балансе, когда он приближается к порогу, настроенному для вашего токена.
- Разбивку по дням, неделям и месяцам: общее число вызовов, успешные и неудачные вызовы, входные, выходные токены и токены изображений, официальная цена и ваша цена со скидкой.
- Топ-10 моделей за последние 30 дней: запросы, токены, стоимость.
Обновление и выход. Кнопка Refresh заново загружает баланс и данные об использовании. Sign out удаляет токен из вкладки и возвращает вас на экран входа.
Обработка ошибок
Коды состояния HTTP
| Код | Значение | Что делать |
|---|---|---|
200 |
Успех | — |
400 |
Некорректный запрос | Исправьте тело запроса или название модели |
401 |
Не авторизован | Проверьте API-ключ |
402 |
Недостаточно средств | Пополните баланс клиентского токена |
403 |
Доступ запрещён / нет контекста токена | Проверьте права токена |
429 |
Превышен лимит запросов | Повторите через 30–60 секунд |
500 |
Ошибка сервера | Повторите запрос |
503 |
Нет доступных ключей | Дождитесь окончания паузы ключей (1–10 мин) |
Формат ответа с ошибкой
{
"error": {
"code": "http_error",
"message": "Human-readable error description"
}
}
Блокировка ответа провайдером
Если ответ заблокирован фильтром контента, запрос чата возвращает HTTP 400 с error.code: "content_filter" вместо пустого успешного ответа. Сообщение содержит причину, например PROHIBITED_CONTENT, без заблокированного текста. Списание с клиента не выполняется; автоматических повторов нет. Обычный пустой ответ с STOP остаётся успешным.
В стриминге блокировка до первой отправленной части возвращает ту же HTTP-ошибку. Если поток уже начался, HTTP-статус остаётся 200, а перед [DONE] приходит SSE error с code: "content_filter" и status: 400. Такой ответ нужно считать незавершённым.
Частые ошибки
| Сообщение об ошибке | Причина | Решение |
|---|---|---|
Missing Authorization header |
Нет Bearer-токена | Добавьте заголовок Authorization: Bearer KEY |
Capacity exhausted, please retry shortly |
Все мощности для запрошенной модели временно заняты | Сделайте паузу и повторите запрос (стратегия ниже) |
Model not found |
Неверное название модели | Сверьтесь с таблицами моделей выше |
Content blocked by safety filters |
Промпт заблокирован фильтром | Измените промпт |
Стратегия повторов
import time
from openai import OpenAI, APIError
client = OpenAI(
base_url="https://gateway.api429.com/v1",
api_key="YOUR_API_KEY"
)
for attempt in range(3):
try:
response = client.chat.completions.create(
model="gemini-3-flash-preview",
messages=[{"role": "user", "content": "Hello"}]
)
break
except APIError as e:
if e.status_code in (429, 503):
time.sleep(30)
continue
raise
Ограничения частоты запросов
- Если мощности ненадолго перегружены, вы получите HTTP
429или503. Сделайте паузу с экспоненциальной задержкой и jitter и повторите запрос — на практике обычно хватает одной-двух секунд. - Очень долгие генерации (некоторые аудио- и image-модели) могут
вернуть
504после истечения внутреннего таймаута; повторите запрос с тем же промптом. - Клиентские квоты, если они настроены, применяются через HTTP
403с поясняющим сообщением. Чтобы увеличить лимит, обратитесь к администратору.
Поддерживаемые SDK
Любой OpenAI-совместимый SDK работает без доработок:
| Язык | SDK | Совместимость |
|---|---|---|
| Python | openai |
Полная |
| JavaScript/TS | openai |
Полная |
| Go | go-openai |
Полная |
| Rust | async-openai |
Полная |
| Ruby | ruby-openai |
Полная |
| Java | OpenAI Java SDK | Полная |
| cURL | — | Полная |
Укажите в base_url / baseURL адрес https://gateway.api429.com/v1 и используйте свой
API-ключ. SDK для нативного Gemini или Vertex Express направьте на
https://gateway.api429.com/v1beta или
https://gateway.api429.com/vertex-express/v1beta соответственно и используйте
заголовок x-goog-api-key (или query-параметр ?key=).
Скидка клиента на видео Google
Цена Veo рассчитывается от официального тарифа Google с учётом модели, разрешения, аудио, длительности и числа роликов. Клиентская скидка действует на видео: при скидке 70% вы платите 30% тарифа Google. Например, Veo 3.1 Fast, 720p с аудио — $0,03 за секунду, или $0,24 за один восьмисекундный ролик, при этой скидке. Переключение провайдера не меняет клиентский тариф. Неудачная генерация до оплачиваемого результата возвращает зарезервированную сумму. Успешный результат содержит billing.charged_amount_usd, billing.official_amount_usd и billing.discount_percent. Стандартные ставки Veo доступны через GET /api/public/catalog: метрика video_second, условия разрешения и аудио; условия вашего аккаунта могут отличаться. Тарифы Google.