Обновлено: 2026-09-18
Асинхронная генерация изображений
Одна генерация изображения обычно занимает 20–120 секунд. Синхронные эндпоинты держат HTTP-соединение открытым всё это время, что упирается в таймауты чтения шлюзов и прокси, а base64-ответы получаются большими. Асинхронный режим разбивает вызов на два шага:- Отправка: запрос возвращает
202и ID задачи менее чем за секунду. - Опрос:
GET /v1/tasks/{id}до завершения; вresultбудет https-URL каждого изображения (постоянно хранится наmedia.crazyrouter.com). Base64 по умолчанию не возвращается.
Имена моделей, тела запросов и тарификация полностью совпадают с синхронными вызовами. Асинхронность меняет только когда вы получаете результат; один и тот же API-ключ может свободно смешивать синхронные и асинхронные запросы. Неудавшиеся задачи не тарифицируются.
Поддерживаемые модели
Способ 1: алиас пути Gemini (рекомендуется для Gemini-клиентов)
Не меняйте ни одного байта тела, заголовков или строки запроса. Замените только суффикс действия:generateContent на :asyncGenerateContent.
cURL
202:
Поле
model в ответе — это разрешённая базовая модель (например gemini-3.1-flash-image-preview), как в журнале расходов; отправлять по-прежнему можно с nano-banana-2. Редактирование по референсу работает как в синхронном вызове: положите части inlineData (base64) или fileData (URL) в contents.:asyncGenerateContent принимает только модели с выводом изображений; текстовая модель вернёт 400 async mode is only available for image models. У потокового действия :streamGenerateContent асинхронной формы нет.
Способ 2: эндпоинты изображений OpenAI с заголовком Prefer
Добавьте HTTP-заголовок Prefer: respond-async к неизменённому запросу /v1/images/generations или /v1/images/edits. Эквивалентно — поле тела "async": true (JSON) или поле формы async=true (multipart).
Preference-Applied: respond-async и то же тело 202 + ID задачи, что и в способе 1.
Опрос задачи
404. Опрашивайте каждые 2–3 секунды; отсутствие завершения в течение 10 минут считайте ошибкой.
Значения статуса
Ответ при завершении (семейство Gemini)
result — это нативный Gemini GenerateContentResponse; единственное отличие: каждая часть inlineData заменена на fileData с URL изображения:
Ответ при завершении (семейство OpenAI)
result имеет ту же форму, что синхронный ответ /v1/images/*; изображения в data[].url:
?inline=true к запросу опроса — сохранённое изображение будет прочитано обратно в inlineData / b64_json (не рекомендуется: медленно для больших картинок).
Ответ при ошибке
retryable: true означает, что можно отправить новую задачу; автоматических повторов нет.
Идемпотентная отправка
Сетевые повторы могут отправить одну задачу дважды. Передайте заголовокIdempotency-Key: <любая строка> при отправке: для одного аккаунта и ключа вернётся тот же ID задачи (второй вызов ответит 200 вместо 202) без повторной генерации и повторного списания.