Открыть в интерактивной справке · markdown для агентов: https://neuraldeep.ru/docs/images.md

Картинки · Image API

Генерация и обработка картинок тем же ключом, ручки под /v1/images/*. Генерирует и правит модель Qwen-Image на наших GPU в РФ, она понимает русский промпт без перевода. Апскейл, удаление фона, улучшение и аватар идут отдельными операциями.

Своя квота у каждой группы: генерация и правка считаются отдельно от обработки готовых картинок. Остаток видно в GET /v1/images/quota. Квота списывается, только когда картинка готова. Задача, которая упала, квоту возвращает.

Как устроено. Всё асинхронно, формат свой, не OpenAI. POST создаёт задачу и сразу отвечает {"task_uid": "...", "queue_position": N, "eta_sec": N}. Дальше опрашиваете GET /v1/images/tasks/{uid}, пока status не станет finished (другие значения: queued, processing, failed). Картинку забираете файлом через GET /v1/images/tasks/{uid}/result, пока она не готова, эта ручка отвечает 202 с пустым телом. Ссылок на хранилище наружу не отдаём.

ручка вход квота
POST /v1/images/generate JSON {prompt, options} генерация
POST /v1/images/edit multipart images[], prompt генерация
POST /v1/images/upscale multipart image обработка
POST /v1/images/background/remove multipart image обработка
POST /v1/images/enhance multipart image обработка
POST /v1/images/avatar multipart photo, gender, style обработка
GET /v1/images/queue очередь сейчас

Параметры генерации, поле options: width и height (оба вместе), либо aspect_ratio (1:1, 4:3, 3:4, 16:9, 9:16, square), negative_prompt, steps, true_cfg_scale, seed, num_images, transparent (прозрачный фон). Без размера рисуется квадрат 1312×1312. У правки те же поля, кроме размера: пропорции берутся с первой картинки.

Ограничения на вход.

uid=$(curl -s https://api.neuraldeep.ru/v1/images/generate \
  -H "Authorization: Bearer $YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"prompt":"кот-космонавт, неон","options":{"width":1024,"height":1024}}' | jq -r .task_uid)

curl https://api.neuraldeep.ru/v1/images/tasks/$uid \
  -H "Authorization: Bearer $YOUR_KEY"

curl https://api.neuraldeep.ru/v1/images/tasks/$uid/result \
  -H "Authorization: Bearer $YOUR_KEY" -o out.png
# правка словами, до 10 исходных картинок
curl https://api.neuraldeep.ru/v1/images/edit \
  -H "Authorization: Bearer $YOUR_KEY" \
  -F "images[]=@photo.jpg" -F "prompt=замени фон на морской берег"

# апскейл готовой картинки
curl https://api.neuraldeep.ru/v1/images/upscale \
  -H "Authorization: Bearer $YOUR_KEY" -F "image=@photo.jpg"
import time, httpx

H = {"Authorization": "Bearer $YOUR_KEY"}
job = httpx.post(
    "https://api.neuraldeep.ru/v1/images/generate",
    headers=H, json={"prompt": "космический кот в неоне", "options": {"aspect_ratio": "1:1"}},
).json()
uid = job["task_uid"]

# в очереди бывает несколько задач, держите таймаут на поллинге
for _ in range(300):
    st = httpx.get(f"https://api.neuraldeep.ru/v1/images/tasks/{uid}", headers=H).json()
    if st["status"] in ("finished", "failed"):
        break
    time.sleep(2)

img = httpx.get(f"https://api.neuraldeep.ru/v1/images/tasks/{uid}/result", headers=H).content
open("out.png", "wb").write(img)

Ошибки.

Разделы справки (markdown для агентов)