curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}
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-2.0",
prompt: "A cute orange cat napping in the sunshine",
};
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 balance, please top up",
"type": "payment_required"
}
}
Qwen Image 2.0
Генерация изображений Qwen Image 2.0
- Асинхронный режим обработки, возвращает идентификатор задачи для последующих запросов
- Поддерживает text-to-image, image-to-image и другие режимы генерации
- Поддерживает уровни разрешения 1K/2K, генерирует до 6 изображений
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-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}
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-2.0",
prompt: "A cute orange cat napping in the sunshine",
};
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 balance, please top up",
"type": "payment_required"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}
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-2.0",
prompt: "A cute orange cat napping in the sunshine",
};
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 balance, please top up",
"type": "payment_required"
}
}
Поддерживаемые модели
| Модель | Описание | Максимум изображений | Цена |
|---|---|---|---|
qwen-image-2.0 | Стандартная версия, сбалансированное качество и производительность | 6 | Фиксированная цена |
qwen-image-2.0-pro | Pro-версия, более сильный рендеринг текста, более тонкие реалистичные текстуры | 6 | Фиксированная цена |
Авторизация
string
обязательно
Все конечные точки требуют аутентификации Bearer TokenПолучите API Key:Перейдите на страницу управления API ключами, чтобы получить свой API KeyДобавьте в заголовок запроса:
Authorization: Bearer YOUR_API_KEY
Тело запроса
string
обязательно
Название модели
qwen-image-2.0— стандартная версия, сбалансированное качество и производительностьqwen-image-2.0-pro— Pro-версия, более сильный рендеринг текста, более тонкие реалистичные текстуры
boolean
по умолчанию:"false"
Выполнять ли проверку содержимого перед отправкой задачи генерации изображения.
true: проверить промпты и входные изображения с помощьюomni-moderation-latestfalseили параметр не указан: не отправлять запрос на проверку, без дополнительных затрат и задержки (по умолчанию)
string
обязательно
Текстовое описание для генерации изображения, до 800 символов
string
по умолчанию:"1:1"
Соотношение сторон изображенияПоддерживаемые соотношения сторон:
1:1— квадрат (по умолчанию)4:3— горизонтальный 4:33:4— вертикальный 3:416:9— горизонтальный широкоформатный9:16— вертикальный3:2— горизонтальный 3:22:3— вертикальный 2:3
string
по умолчанию:"1K"
Уровень разрешения
1K— стандартное разрешение (по умолчанию)2K— высокое разрешение
integer
по умолчанию:"1"
Количество генерируемых изображенийДиапазон: 1–6
string
Негативный промпт (содержимое, которое вы не хотите видеть), до 500 символов
array
Массив URL референсных изображений (режим image-to-image)Ограничения:
- Должны быть публично доступные URL
- Формат Base64 не поддерживается
Справочная таблица разрешений
Размер вывода определяется комбинациейsize (соотношение) + resolution (уровень разрешения).
| Соотношение | Уровень 1K | Уровень 2K |
|---|---|---|
1:1 | 1024×1024 | 2048×2048 |
4:3 | 1152×864 | 2048×1536 |
3:4 | 864×1152 | 1536×2048 |
16:9 | 1280×720 | 2048×1152 |
9:16 | 720×1280 | 1152×2048 |
3:2 | 1248×832 | 2048×1360 |
2:3 | 832×1248 | 1360×2048 |
- Только
size→ по умолчанию уровень 1K:{"size": "16:9"}→ 1280×720 size+resolution→ указанный уровень:{"size": "16:9", "resolution": "2K"}→ 2048×1152
Примеры использования
Text-to-image (минимальный запрос){
"model": "qwen-image-2.0",
"prompt": "A cute orange cat napping in the sunshine"
}
{
"model": "qwen-image-2.0-pro",
"prompt": "Cyberpunk-style futuristic city nightscape with flickering neon lights",
"size": "16:9",
"n": 4
}
{
"model": "qwen-image-2.0-pro",
"prompt": "Exquisite food photography, sushi platter",
"size": "4:3",
"resolution": "2K",
"n": 2
}
{
"model": "qwen-image-2.0",
"prompt": "Change the background to a seaside sunset",
"image_urls": ["https://example.com/my-photo.jpg"]
}
Ответ
integer
Код состояния ответа
array
Примечания
- Асинхронная обработка: после отправки возвращается
task_id. Опрашивайте/v1/tasks/{task_id}для получения результатов - Хранение изображений: сгенерированные изображения зеркалируются на CDN платформы и действительны длительное время
- Правила тарификации: тарификация за каждое успешно сгенерированное изображение, неудачные не оплачиваются
- Требования к URL изображений: входные изображения должны быть публично доступными URL, base64 не поддерживается