Документация

Генерация изображений

Endpoint для генерации изображения по текстовому промпту. Возвращает результат в OpenAI-compatible формате — массив объектов с полем b64_json

POST
https://ai.wormsoft.ru/api/v1/images/generations
* Используются те же API-ключи, что и для GPT-эндпоинтов.
Авторизация:
Bearer API_KEY
Или заголовок:
x-api-key: YOUR_API_KEY.
Поддерживаемые модели
Qwen Image (qwen_image_2512)
Qwen Image 2.1 (qwen_image_2_1)
GPT Image 2.5 (gpt_image_2_5)
GPT Image (gpt_image)

Структура запроса

  • Тело запроса — JSON (application/json).
  • prompt — обязательный, текст для генерации.
  • model — обязательный, идентификатор модели (enum).
  • size — необязательный, пресет размера: 1:1 (по умолчанию), 16:9, 9:16, 4:3, 3:4, 3:2, 2:3.
  • seed — необязательный, целое число для воспроизводимости результата (только qwen-модели).

Минимальный пример запроса

curl --request POST \
  --url https://ai.wormsoft.ru/api/v1/images/generations \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "qwen_image_2512",
    "prompt": "A futuristic city at sunset, cinematic, ultra detailed"
  }'

Пример ответа

200 OK с JSON-телом. Изображения возвращаются в base64 (без префикса data:image/png;base64,).

{
  "data": [
    { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." }
  ]
}

Декодирование результата

Чтобы получить файл из b64_json, декодируйте base64 в бинарные данные и сохраните как PNG.

import base64
data = base64.b64decode(response["data"][0]["b64_json"])
with open("image.png", "wb") as f:
    f.write(data)

Тарифы

  • За каждую успешную генерацию списываются кредиты: базовая цена модели × коэффициент размера (площадь относительно 1328×1328). Базовые цены (1:1, быстрый режим): qwen_image_2512 — 10 000, qwen_image_2_1 — 20 000, gpt_image_2_5 — 500 000, gpt_image — 100 000. Списание происходит только после успешной генерации. Проваленные задачи не тарифицируются.

Ошибки и лимиты

400
Неверный запрос пользователя
401
Неверный или отсутствует API ключ
402
Недостаточно кредитов на балансе
429
Превышен лимит запросов (rate limit)
500+
Ошибка на стороне нашего сервиса
Генерация обычно занимает 1–3 минуты; максимальное ожидание ответа — до 10 минут.

Потоковая передача прогресса

В личном кабинете прогресс генерации доступен в реальном времени через SSE: POST /api/lk/images/generate/stream — события progress и done. В публичном API (/v1) стриминга нет — ждите финальный ответ синхронно.