Задачи
POST/v1/tasks
Изображения создаются задачами, других видов задач пока нет. Вы присылаете, что сделать и какой моделью, и получаете один и тот же объект задачи: готовой или ещё идущей. Это не формат OpenAI, поэтому SDK OpenAI и Vercel AI для изображений не подходят, хватает обычного HTTP, как в примерах. Доступные модели и их возможности: GET /v1/tasks/models.
Запрос ждёт результата до wait секунд. Если задача успела, ответ 200 с результатом приходит сразу. Если нет, ответ 202, дальше опрос, см. «Опрос и повтор». Перед запуском резервируем стоимость, списываем по цене модели на момент создания и не больше резерва. Неудавшаяся задача не списывается никогда.
- idstring
- UUID задачи, 36 символов с дефисами, любой, кроме нулевого; вернётся строчными. Свой id известен до ответа, с ним запрос можно безопасно повторить. Каждой новой задаче нужен новый UUID: id, занятый другим запросом, даёт 409. Без id создадим UUIDv4 и вернём
- kindstringобязательно
- Вид задачи в форме группа/действие, от него зависят поля input. Сейчас только
image/generate, другой даёт 400 сparam/kind - modelstringобязательно
- Модель, например
google/gemini-3-pro-image. Модели по умолчанию нет: от неё зависят результат и цена. На неизвестную модель или модель чата ответ 404not_foundсparam/model - inputobjectобязательно
- Поля вида задачи, см. ниже. Неизвестное поле или значение, которого модель не умеет, дают 400 с путём к полю в
param, до резерва и без списания - optionsobject
- Поля отдельных моделей. Сейчас ни одна модель их не объявляет, любое поле внутри даёт 400
- metadataobject
- До 16 пар «строка → строка»: ключ до 40 символов из
a-z0-9_, значение до 500 символов. Возвращается в задаче, по нему можно фильтровать список - waitinteger
- Сколько секунд ждать результата: от 0 до 60, по умолчанию 60. Больше 60 или не целое число: 400 с
param/wait
Поля input у image/generate.
Модель принимает только поля из своегоinput в GET /v1/tasks/models; поле, которого там нет, даёт 400.- promptstringобязательно
- Описание изображения или правки, до
max_lengthсимволов модели - countinteger
- Сколько изображений, от 1 до
maxмодели, по умолчанию 1. Цена умножается на count - aspect_ratioresolutionstring
- Кадр, например
16:9и2K, допустимые сочетания вvariantsмодели. Без обоих полей кадр по умолчанию. Если прислано одно из двух, второе берётся из варианта по умолчанию или из единственного подходящего - sizestring
- Кадр пикселями из
variants, например2048x2048. Вместе с aspect_ratio или resolution нельзя: 400 - formatqualitystring
- Формат файла и качество из
valuesмодели, если она их объявляет - seedinteger
- От 0 до 4294967295, если модель его принимает. Если модерация отклонила готовое изображение, повтор уходит с новым seed. С каким seed сделано изображение, видно в
output[].seed, если модель его сообщает - referencesarray
- Ссылки https или data URL (png, jpeg, webp, base64, до 10 МиБ). Сколько можно, задаёт модель; у некоторых моделей от числа референсов зависит цена. Data URL проверяем до резерва:
reference_too_large,reference_unsupported. Ссылку https скачивает провайдер; если не смог, задачаfailed, без списания
Ответ.
Объект задачи, один для всех видов и состояний. Поля без значения не возвращаются. Решения принимайте только поstatus: HTTP-код (200 или 202) лишь подсказка, а events история.- idkindmodelstring
- Как в запросе
- statusstring
queued,in_progress,completedилиfailed- eventsarray
- История по порядку:
typeиat(время RFC 3339, UTC, до секунды). Первое событиеtask.queued, егоatи есть время создания; последнееtask.completedилиtask.failed. Незнакомыеtypeпропускайте - outputarraycompleted
- Список частей. У image:
type,url,media_type,expires_at,retained_until,width,height,bytes,expired(толькоtrue, см. «Хранение») и, если модель его знает,seed. Частей не большеcount: если провайдер отклонил часть изображений модерацией, придут остальные, и платите вы только за них - errorobjectfailed
- Объект ошибки, см. «Ошибки задач»
- usageobject
- Пока задача идёт,
reserved: столько зарезервировано, больше этого не спишется. У завершённойcost, окончательная цена. Уfailedон равен"0" - deadline_atstringпока задача идёт
- Время, к которому задача гарантированно завершится
- poll_afterintegerпока задача идёт
- Через сколько секунд спросить снова
- metadataobject
- Как в запросе, если присылали
Деньги везде один объект: { "amount": "42.50", "currency": "rub" }. Сумма десятичной строкой, точно как списано, не меньше двух знаков после точки; ноль пишется "0".