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