curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "qwen-image-3.0",
prompt: "A cafe poster with the title Autumn Limited, warm tones, refined layout",
size: "16:9",
resolution: "1K",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JGXYZ1234567890ABCDEF"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
Qwen Image 3.0
Генерация изображений Qwen Image 3.0
- Асинхронный режим обработки, возвращает ID задачи для последующих запросов
- Поддержка text-to-image и image-to-image (1-3 опорных изображения для редактирования)
- Поддержка разрешения 1K / 2K, до 6 изображений за запрос
- Варианты Standard и Pro (Pro сильнее для плотной вёрстки и текста)
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "qwen-image-3.0",
prompt: "A cafe poster with the title Autumn Limited, warm tones, refined layout",
size: "16:9",
resolution: "1K",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JGXYZ1234567890ABCDEF"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "qwen-image-3.0",
prompt: "A cafe poster with the title Autumn Limited, warm tones, refined layout",
size: "16:9",
resolution: "1K",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JGXYZ1234567890ABCDEF"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
Поддерживаемые модели
| Модель | Описание | Макс. изображений | Разрешение |
|---|---|---|---|
qwen-image-3.0 | Чёткое следование инструкциям, стабильный рендеринг текста; выгоднее для обычных задач | 6 | 1K / 2K |
qwen-image-3.0-pro | Более насыщенный контент; лучше для газет, раскадровок, меню, экзаменов, плотной вёрстки | 6 | 1K / 2K |
Для плотного текста/вёрстки предпочтителен
-pro. Для обычных изображений используйте qwen-image-3.0. Максимум промпта ~4.5k токенов. Имена моделей несовместимы с серией 2.0.Authorizations
string
обязательно
Все конечные точки требуют аутентификации Bearer TokenПолучите API Key на странице управления API Key:
Authorization: Bearer YOUR_API_KEY
Body
string
обязательно
Имя модели
qwen-image-3.0- Standardqwen-image-3.0-pro- Pro (плотный текст / вёрстка)
boolean
по умолчанию:"false"
Выполнять ли проверку содержимого перед отправкой задачи генерации изображения.
true: проверить промпты и входные изображения с помощьюomni-moderation-latestfalseили параметр не указан: не отправлять запрос на проверку, без дополнительных затрат и задержки (по умолчанию)
string
обязательно
Текстовое описание для генерации изображения, максимум ~4.5k токенов
string[]
Массив URL опорных изображений (image-to-image / редактирование), 1-3 изображения
- Публичный
http(s)://URL илиdata:image/png;base64,...(base64 сначала перезаливается) - Форматы: JPG / JPEG / PNG / BMP / TIFF / WEBP / GIF
- На файл ≤ 10MB; ширина/высота рекомендуется 384-2048 px
string
по умолчанию:"1K"
Уровень разрешения (влияет на тарификацию)
1K(по умолчанию; допускается нижний регистр)2K
size (например, 1600x900). При сырых пикселях площадь > 2.25M пикселей тарифицируется как 2K.string
по умолчанию:"1:1"
Соотношение сторон или явный размер в пикселяхПоддерживаемые соотношения:
1:1(по умолчанию)4:3/3:416:9/9:163:2/2:3
16x9 или пиксели вида 1024x1024. Для произвольных пикселей каждая сторона (ширина и высота) должна быть 512–2048, соотношение 1:8 ~ 8:1.Если не заданы ни size, ни resolution, вывод фиксируется на 1024×1024.integer
по умолчанию:"1"
Число изображений, 1-6. Значения выше 6 ограничиваются до 6.
string
Негативный промпт: содержимое, которого следует избегать
boolean
по умолчанию:"false"
Интеллектуальная перезапись промптаПо умолчанию выключено для предсказуемых результатов. Установите
true, чтобы включить умную перезапись.string
Режим перезаписи (только серия 3.0; требуется
prompt_extend: true)direct- работает для text-to-image и image-to-imageagent- только text-to-image, более агрессивная перезапись
Таблица размеров
Комбинацияresolution (уровень) + size (соотношение):
| Разрешение | 1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 3:2 | 2:3 |
|---|---|---|---|---|---|---|---|
| 1K | 1024×1024 | 1152×864 | 864×1152 | 1280×720 | 720×1280 | 1248×832 | 832×1248 |
| 2K | 2048×2048 | 2048×1536 | 1536×2048 | 2048×1152 | 1152×2048 | 2048×1360 | 1360×2048 |
Примеры использования
Text-to-image (несколько)
{
"model": "qwen-image-3.0",
"prompt": "Flat illustration of a city skyline at dusk, warm orange tones",
"size": "16:9",
"resolution": "1K",
"n": 4
}
Плотная вёрстка с перезаписью
{
"model": "qwen-image-3.0-pro",
"prompt": "A Western restaurant menu with appetizers, mains, and desserts columns, five dishes each with prices, serif font, cream background",
"size": "3:4",
"resolution": "2K",
"prompt_extend": true,
"prompt_extend_mode": "agent"
}
Image-to-image (редактирование)
{
"model": "qwen-image-3.0-pro",
"prompt": "Change the sign text to Open, keep everything else the same",
"image_urls": ["https://example.com/shop.jpg"],
"size": "1:1"
}
Негативный промпт
{
"model": "qwen-image-3.0",
"prompt": "Photorealistic mountain cabin in morning mist",
"negative_prompt": "text, watermark, people, low resolution",
"size": "3:2"
}
Ограничения
| Параметр | Ограничение |
|---|---|
| Промпт | ≤ 4.5k токенов |
| Размер вывода | Произвольные пиксели: каждая сторона 512–2048; соотношение 1:8 ~ 8:1 |
| Число изображений | 1-6 (избыток ограничивается) |
| Опорные изображения | 1-3 |
| Форматы опорных | JPG / JPEG / PNG / BMP / TIFF / WEBP / GIF |
| Размер опорных | ≤ 10MB; ширина/высота рекомендуется 384-2048 px |
Response
integer
Код статуса; 200 при успехе
array
Отличия от 2.0
| Серия 2.0 | Серия 3.0 | |
|---|---|---|
| Длина промпта | Короче | ~4.5k токенов |
prompt_extend_mode | Не поддерживается | direct / agent |
| Разрешение | 1K / 2K | 1K / 2K (Pro 2K дороже) |
| Опорные изображения | Поддерживаются | 1-3 изображения |
Примечания
- Асинхронность: после отправки возвращается
task_id. Опрашивайте Получить статус задачи каждые 3~5 секунд; таймаут клиента ~3 минуты (2K + несколько изображений медленнее). - Хранение: изображения зеркалируются на CDN платформы для долгосрочного доступа.
- Биллинг: за каждое доставленное изображение × уровень разрешения по фактической площади пикселей (> 2.25M пикселей = 2K).
qwen-image-3.0— одинаковая цена 1K/2K;-pro2K = 2× 1K. При сбоях — полный возврат; опорные изображения бесплатны. - Ошибки: недопустимый size/соотношение,
agentпри image-to-image, недоступные/слишком большие опорные → 400; лимит частоты → 429.
Запрос результатовИспользуйте Получить статус задачи для прогресса и
result.images.