Pro API: генерация и ретушь изображений
Одно изображение стоит 1 кредит, в любом режиме. Генерация из промпта и ретушь загруженного изображения проходят через один и тот же маршрут.
Отправить изображение
POST /images
{ "prompt": "portrait of a woman in a rainy street at night, neon reflections, cinematic",
"width": 832, "height": 1216 }
| Поле | Тип | По умолчанию | Что делает |
|---|---|---|---|
prompt | string | обязательное | Описание сцены. На английском результаты наиболее точные. |
width, height | int | 1024 x 1024 | Размер в пикселях. Подходящие форматы: 1024 x 1024 (квадрат), 832 x 1216 (портрет), 1216 x 832 (пейзаж). |
mode | string | generation | edit, img2img или inpaint, см. ниже. Если не указано, изображение генерируется из промпта. |
image_b64 | string | Исходное изображение в base64 (PNG или JPEG), обязательно для всех трёх режимов ретуши. Максимум 12 МБ в декодированном виде. | |
mask_b64 | string | Маска в base64: обязательна для inpaint, опциональна для edit. Закрась красным области для ретуши, в размере исходного изображения. | |
lora | string | Обученный персонаж из аккаунта: name, возвращаемый запросом GET /loras. Добавь его trigger в промпт. | |
lora2, lora2_strength | string, number | Второй персонаж и его сила (от 0 до 1, по умолчанию 1) для сцены с двумя персонажами. | |
steps | int | движок | Оставь пустым. Движок сам знает своё значение. |
Ответ:
{ "jobId": "test-79634842-4586-46d4-ad52-d9ea236ae00d", "seed": 178078967, "cost": 1 }
seed выбирается движком и возвращается для сведения. В этой версии фиксировать его на
входе нельзя.
Три режима ретуши
Все три работают на одном движке редактирования на основе инструкций, который сохраняет
стиль исходного изображения. Если ты передаёшь исходное изображение, width и height
считываются из него и отправлять их не нужно.
mode | Входные данные | Что делает движок |
|---|---|---|
edit | image_b64 + prompt (+ опциональный mask_b64) | Применяет инструкцию ко всему изображению ("add sunglasses", "make it snow"). С маской изменение концентрируется внутри красной области. |
inpaint | image_b64 + mask_b64 + prompt | Перегенерирует только красную область маски согласно инструкции. Остальное воссоздаётся попиксельно. |
img2img | image_b64 + prompt | Перерабатывает всё изображение по промпту, сохраняя его композицию и стиль: вариация. |
IMG=$(base64 -w0 photo.png)
curl -s $B/images -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d "{\"mode\":\"edit\",\"prompt\":\"add a red scarf, keep everything else identical\",\"image_b64\":\"$IMG\"}"
Опрос статуса
GET /images/{jobId}
| Ответ | Значение |
|---|---|
{ "status": "pending", "phase": "IN_QUEUE" } | В очереди |
{ "status": "pending", "phase": "IN_PROGRESS" } | Рендерится |
{ "status": "completed", "cost": 1, "file_url": "/pro/v1/images/{jobId}/file", ... } | Готово, файл доступен |
{ "status": "failed", "detail": "..." } | Ошибка, ничего не списывается |
Опрашивай каждые 3 секунды, не чаще: очередь общая.
Скачивание
GET /images/{jobId}/file
Сам PNG-файл в теле ответа (Content-Type: image/png). Доступен сразу после перехода
статуса в completed, и возвращает 404 media_indisponible, когда рендер удалён. Скачивай
сразу, файл не архивируется.
Отмена
POST /images/{jobId}/cancel
Отменяет рендер, стоящий в очереди или выполняющийся. Возвращает { "ok": true }. Ничего
не списывается, и зарезервированная под дневной лимит ключа стоимость возвращается обратно.