APIMart
APIMart

Qwen Image 3.0 API: цены и интеграция

Узнайте о ценах, аутентификации, параметрах генерации и редактирования, асинхронном опросе, повторах и интеграции API Qwen Image 3.0 в продакшене.

Туториал

Qwen Image 3.0 объединяет генерацию изображений по тексту и редактирование по референсам в одном асинхронном API. Через APIMart вы отправляете задачу, опрашиваете её состояние и получаете одно или несколько изображений после завершения.

В этом руководстве разобрано всё необходимое перед интеграцией: актуальные цены Standard и Pro, аутентификация, параметры запросов, обработка ответов, опрос, повторы и хранение результатов. Возможности и бенчмарки описаны в обзоре релиза Qwen Image 3.0.

Цены и доступ к Qwen Image 3.0

APIMart предлагает два идентификатора модели:

  • qwen-image-3.0 для Standard
  • qwen-image-3.0-pro для Pro

Оплата рассчитывается за созданное изображение, а не за входные Token. В таблице указаны значения со страницы цен APIMart на 27 августа 2026 года; в дальнейшем они могут измениться.

Сравнение цен Standard и Pro

МодельРазрешениеПримерная цена за изображениеПримерная цена за 1 000 изображений
Qwen Image 3.0 Standard1K$0.0205712$20.57
Qwen Image 3.0 Standard2K$0.0205712$20.57
Qwen Image 3.0 Pro1K$0.0285712$28.57
Qwen Image 3.0 Pro2K$0.0571432$57.14

Для Standard сейчас указана одинаковая цена в 1K и 2K. Pro 2K стоит вдвое дороже Pro 1K. Согласно документации Qwen Image 3.0, плата за неудачную генерацию возвращается, а референсы не создают отдельной платы за генерацию.

Оценка реальной нагрузки

Базовая формула:

месячная стоимость = число завершённых изображений × цена одного изображения

Параметр n задаёт количество результатов, поэтому запрос с n: 4 может тарифицироваться как четыре изображения. Учитывайте в бюджете эксперименты с промптами, варианты и повторные генерации.

Standard подходит для большинства черновиков и обычных материалов. Выбирайте Pro, когда улучшение текста, композиции или деталей оправдывает доплату. При работе с Pro используйте 1K для итераций, а 2K — для утверждённых финальных изображений высокого разрешения.

Доступ и аутентификация

Создайте аккаунт APIMart, пополните баланс и выпустите API-ключ в консоли. Храните ключ в серверном Secret или переменной окружения; никогда не передавайте его в браузерный код и переменные NEXT_PUBLIC_*.

Base URL и Bearer Token

Во всех примерах используется эта Base URL:

https://api.apimart.ai/v1

Передавайте ключ как Bearer Token:

Authorization: Bearer <your_api_key>
Content-Type: application/json

Отсутствующий или неверный ключ обычно вызывает 401, недостаточный баланс — 402, а ограничение частоты — 429. Записывайте ответ и контекст запроса на сервере, но скрывайте API-ключ перед сохранением логов.

Генерация, редактирование и асинхронный процесс

Генерация и редактирование используют POST /v1/images/generations. API сначала возвращает ID задачи, не ожидая готовности изображения.

Основные параметры

ПолеОбязательноОписание
modelДаqwen-image-3.0 или qwen-image-3.0-pro
promptДаИнструкция для генерации или редактирования, до примерно 4 500 Token
image_urlsДля редактированияОт одного до трёх HTTPS-адресов или поддерживаемых Base64 Data URL
resolutionНет1K или 2K
sizeНетПоддерживаемое соотношение сторон или собственные размеры
nНетЧисло результатов, от 1 до 6
prompt_extendНетСледует ли APIMart расширить промпт

Для собственных размеров каждая сторона должна находиться в диапазоне 512–2 048 пикселей, а соотношение сторон — от 1:8 до 8:1. Референсы поддерживают JPEG, PNG, BMP, TIFF, WebP и GIF; документированный лимит составляет 10 МБ на файл. Перед релизом проверьте актуальную справку по генерации, поскольку ограничения могут меняться.

В официальном анонсе Qwen Image 3.0 заявлена нативная отрисовка текста на 12 языках. Заключайте точный текст в кавычки и проверяйте орфографию, шрифт и компоновку в целевом разрешении.

Пример генерации по тексту

{
  "model": "qwen-image-3.0",
  "prompt": "Чистый баннер товара с точным текстом \"Летняя распродажа\", жирный геометрический шрифт, тёплый оранжевый фон",
  "resolution": "1K",
  "size": "16:9",
  "n": 1,
  "prompt_extend": true
}

Пример редактирования по референсу

Добавьте image_urls, чтобы изменить существующее изображение:

{
  "model": "qwen-image-3.0-pro",
  "prompt": "Не менять форму товара и заменить фон на студию с мягким освещением",
  "image_urls": [
    "https://example.com/reference-product.png"
  ],
  "resolution": "2K",
  "n": 1
}

Адрес референса должен быть доступен API. Для закрытых файлов используйте подписанный URL с достаточным сроком действия либо поддерживаемый Data URL, когда это уместно.

Асинхронный процесс

Процесс состоит из трёх шагов:

  1. Отправить задачу через POST /v1/images/generations.
  2. Прочитать data[0].task_id из ответа.
  3. Опросить GET /v1/tasks/{task_id} до завершения или ошибки.

Ответ на отправку

Успешный ответ имеет следующую форму:

{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_example"
    }
  ]
}

Не ищите task_id на верхнем уровне: он находится в первом элементе data.

Опрос и готовый результат

Опрашивайте состояние каждые три–пять секунд, а не непрерывно. Готовые файлы находятся в data.result.images:

{
  "code": 200,
  "data": {
    "status": "completed",
    "result": {
      "images": [
        {
          "url": [
            "https://example-cdn.com/generated-image.png"
          ]
        }
      ]
    }
  }
}

В текущей документации APIMart сказано, что готовые изображения зеркалируются в CDN платформы и доступны длительное время. Тем не менее копируйте утверждённые материалы в собственное хранилище, если вам нужно управлять сроком хранения, удалением, доступом или скоростью доставки.

Примеры интеграции

Интеграция на Python

Этот серверный пример отправляет задачу, опрашивает её каждые три секунды и прекращает ожидание через три минуты:

import os
import time
import requests

API_KEY = os.environ["QWEN_API_KEY"]
BASE_URL = "https://api.apimart.ai/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

def generate_image(prompt: str) -> str:
    response = requests.post(
        f"{BASE_URL}/images/generations",
        headers=HEADERS,
        json={"model": "qwen-image-3.0", "prompt": prompt, "resolution": "1K", "n": 1, "prompt_extend": True},
        timeout=30,
    )
    response.raise_for_status()
    task_id = response.json()["data"][0]["task_id"]
    deadline = time.monotonic() + 180

    while time.monotonic() < deadline:
        poll = requests.get(f"{BASE_URL}/tasks/{task_id}", headers=HEADERS, timeout=30)
        poll.raise_for_status()
        task = poll.json()["data"]
        if task["status"] == "completed":
            return task["result"]["images"][0]["url"][0]
        if task["status"] == "failed":
            raise RuntimeError(task.get("fail_reason", "Generation failed"))
        time.sleep(3)

    raise TimeoutError(f"Task {task_id} did not finish within 180 seconds")

В реальном приложении сохраняйте ID задачи до начала опроса. После перезапуска Worker другой Worker сможет продолжить сохранённую задачу без повторной отправки и оплаты дубликата.

Интеграция на JavaScript

Выполняйте этот код только в доверенной серверной среде:

const apiKey = process.env.QWEN_API_KEY;
const baseUrl = "https://api.apimart.ai/v1";
const headers = { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" };

async function requestJson(url, options = {}) {
  const response = await fetch(url, { ...options, headers });
  const payload = await response.json();
  if (!response.ok) throw new Error(`APIMart ${response.status}: ${JSON.stringify(payload)}`);
  return payload;
}

async function generateImage(prompt) {
  const submission = await requestJson(`${baseUrl}/images/generations`, {
    method: "POST",
    body: JSON.stringify({
      model: "qwen-image-3.0", prompt, resolution: "1K", n: 1, prompt_extend: true,
    }),
  });
  const taskId = submission.data[0].task_id;
  const deadline = Date.now() + 180_000;

  while (Date.now() < deadline) {
    await new Promise((resolve) => setTimeout(resolve, 3000));
    const { data: task } = await requestJson(`${baseUrl}/tasks/${taskId}`);
    if (task.status === "completed") return task.result.images[0].url[0];
    if (task.status === "failed") throw new Error(task.fail_reason ?? "Generation failed");
  }
  throw new Error(`Task ${taskId} did not finish within 180 seconds`);
}

Тот же процесс можно проверить с помощью cURL:

curl -X POST https://api.apimart.ai/v1/images/generations \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen-image-3.0","prompt":"Минималистичная фотография товара","resolution":"1K","n":1}'

curl https://api.apimart.ai/v1/tasks/<task_id> \
  -H "Authorization: Bearer <your_api_key>"

Чек-лист для продакшена

Один успешный вызов — только начало. Надёжному конвейеру нужны ограниченные повторы, постоянное состояние задач, наблюдаемость и управляемое хранилище.

Ошибки и стратегия повторов

ОтветЗначениеРекомендуемое действие
400Неверные параметрыИсправить запрос; не повторять без изменений
401Ключ отсутствует или неверенИсправить серверные учётные данные
402Недостаточный балансПополнить баланс перед повтором
429Достигнут лимит частотыЭкспоненциальная задержка с jitter
5xxВременная ошибка сервисаОграниченное число повторов с задержкой

Не отправляйте генерацию повторно сразу после неоднозначного сетевого таймаута. Если сервер принял первый запрос, второй создаст дублирующую задачу и дополнительную плату. Сохраняйте каждый ID и разделяйте повторы отправки и опроса.

Перед запуском

  • Храните API-ключ только в серверном Secret.
  • Проверяйте prompt, resolution, size, n и референсы перед отправкой.
  • Сохраняйте ID и состояние задачи.
  • Опрашивайте раз в три–пять секунд с таймаутом приложения.
  • Применяйте экспоненциальную задержку с jitter для 429 и повторяемых 5xx.
  • Ограничивайте параллельность по реальным лимитам и задержкам.
  • Раздельно учитывайте завершённые, неудачные, просроченные и дублирующие задачи.
  • Копируйте утверждённые результаты в своё хранилище, если нужно управлять сроком хранения.
  • Перед продакшеном ещё раз проверьте страницу модели Qwen Image 3.0, цены и документацию.

Создавайте изображения с Qwen Image 3.0

Протестируйте Standard и Pro через единый API APIMart, сравните результаты 1K и 2K и перенесите процесс генерации от прототипа к продакшену.

Попробовать Qwen Image 3.0

Часто задаваемые вопросы

Как долго опрашивать задачу до таймаута?

APIMart рекомендует интервал три–пять секунд и примерно три минуты клиентского таймаута. Используйте это как отправную точку, измерьте реальную задержку и сохраняйте ID, чтобы позже сверять просроченные задачи.

Истекают ли URL результата через 24 часа?

Текущая документация сообщает, что результаты зеркалируются в CDN платформы и доступны длительное время. Поэтому прежнее утверждение о 24 часах к этой интеграции не относится. Храните критичные материалы в своей инфраструктуре, не полагаясь исключительно на внешнее хранение без гарантированного срока.

Можно ли отправить референс в Base64?

Да. Текущая документация разрешает передать в image_urls от одного до трёх публичных HTTP/HTTPS-адресов или поддерживаемых Base64 Data URL. Каждый файл должен соответствовать форматам и лимиту 10 МБ.

Когда выбирать 1K или 2K?

Используйте 1K для быстрых итераций и материалов без максимальной детализации. Выбирайте 2K для финальных изображений с большим объёмом текста, тонкими краями или крупным отображением. Для Standard обе версии сейчас стоят одинаково, а Pro 2K дороже Pro 1K, поэтому оценивайте задержку, качество и цену вместе.

Готовы попробовать?

Выберите нужную модель в маркетплейсе моделей

Попробуйте чат, изображения и видео в маркетплейсе APIMart и быстро оцените возможности моделей через единый API.

Чат-моделиМодели изображенийВидео-модели
Открыть маркетплейс моделей