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
Geração de imagens Qwen Image 3.0
- Modo de processamento assíncrono, retorna um ID de tarefa para consultas posteriores
- Suporta texto-para-imagem e imagem-para-imagem (1-3 imagens de referência para edição)
- Suporta resolução 1K / 2K, até 6 imagens por requisição
- Variantes Standard e Pro (Pro é mais forte para layout denso e texto)
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"
}
}
Modelos suportados
| Modelo | Descrição | Máx. de imagens | Resolução |
|---|---|---|---|
qwen-image-3.0 | Seguimento claro de instruções, renderização de texto estável; melhor custo-benefício para uso geral | 6 | 1K / 2K |
qwen-image-3.0-pro | Conteúdo mais rico; ideal para jornais, storyboards, menus, exames, layout denso | 6 | 1K / 2K |
Prefira
-pro para texto/layout denso. Use qwen-image-3.0 para imagens gerais. Prompt máx. ~4.5k tokens. Os nomes dos modelos não são intercambiáveis com a série 2.0.Autorização
string
obrigatório
Todos os endpoints exigem autenticação por Bearer TokenObtenha sua chave de API na página de gerenciamento de chaves de API:
Authorization: Bearer YOUR_API_KEY
Body
string
obrigatório
Nome do modelo
qwen-image-3.0- Standardqwen-image-3.0-pro- Pro (texto / layout denso)
boolean
padrão:"false"
Define se o conteúdo deve ser moderado antes do envio da tarefa de imagem.
true: verificar prompts e imagens de entrada comomni-moderation-latestfalseou omitido: não enviar solicitação de moderação, sem custo nem latência adicionais de moderação (padrão)
string
obrigatório
Descrição textual para a geração de imagens, máx. ~4.5k tokens
string[]
Array de URLs de imagens de referência (imagem-para-imagem / edição), 1-3 imagens
- URL pública
http(s)://oudata:image/png;base64,...(base64 é reenviado primeiro) - Formatos: JPG / JPEG / PNG / BMP / TIFF / WEBP / GIF
- Por arquivo ≤ 10MB; largura/altura recomendadas 384-2048 px
string
padrão:"1K"
Nível de resolução (afeta o nível de cobrança)
1K(padrão; minúsculas aceitas)2K
size (ex. 1600x900). Com pixels brutos, área > 2,25M pixels é cobrada como 2K.string
padrão:"1:1"
Proporção, ou tamanho em pixels explícitoProporções suportadas:
1:1(padrão)4:3/3:416:9/9:163:2/2:3
16x9, ou pixels como 1024x1024. Para pixels personalizados, cada lado (largura e altura) deve ser 512–2048, proporção 1:8 ~ 8:1.Se nem size nem resolution forem definidos, a saída fica fixa em 1024×1024.integer
padrão:"1"
Número de imagens, 1-6. Valores acima de 6 são limitados a 6.
string
Prompt negativo: conteúdo a evitar
boolean
padrão:"false"
Reescrita inteligente do promptDesativado por padrão para resultados previsíveis. Defina
true para ativar a reescrita inteligente.string
Modo de reescrita (apenas série 3.0; requer
prompt_extend: true)direct- funciona para texto-para-imagem e imagem-para-imagemagent- apenas texto-para-imagem, reescrita mais agressiva
Tabela de referência de tamanhos
Combineresolution (nível) + size (proporção):
| Resolução | 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 |
Casos de uso
Texto-para-imagem (múltiplas)
{
"model": "qwen-image-3.0",
"prompt": "Flat illustration of a city skyline at dusk, warm orange tones",
"size": "16:9",
"resolution": "1K",
"n": 4
}
Layout denso com reescrita
{
"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"
}
Imagem-para-imagem (edição)
{
"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"
}
Prompt negativo
{
"model": "qwen-image-3.0",
"prompt": "Photorealistic mountain cabin in morning mist",
"negative_prompt": "text, watermark, people, low resolution",
"size": "3:2"
}
Limites
| Item | Limite |
|---|---|
| Prompt | ≤ 4.5k tokens |
| Tamanho de saída | Pixels personalizados: cada lado 512–2048; proporção 1:8 ~ 8:1 |
| Contagem de imagens | 1-6 (excesso limitado) |
| Imagens de referência | 1-3 |
| Formatos de referência | JPG / JPEG / PNG / BMP / TIFF / WEBP / GIF |
| Tamanho de referência | ≤ 10MB; largura/altura recomendadas 384-2048 px |
Response
integer
Código de status; 200 em caso de sucesso
array
Diferenças em relação à 2.0
| Série 2.0 | Série 3.0 | |
|---|---|---|
| Comprimento do prompt | Mais curto | ~4.5k tokens |
prompt_extend_mode | Não suportado | direct / agent |
| Resolução | 1K / 2K | 1K / 2K (Pro 2K custa mais) |
| Imagens de referência | Suportado | 1-3 imagens |
Observações
- Assíncrono: o envio retorna um
task_id. Consulte Obter status da tarefa a cada 3~5 segundos; timeout do cliente ~3 minutos (2K + multi-imagem é mais lento). - Armazenamento: as imagens são espelhadas no CDN da plataforma para acesso de longo prazo.
- Cobrança: por imagem entregue × nível de resolução pela área real em pixels (> 2,25M pixels = 2K).
qwen-image-3.0cobra o mesmo para 1K/2K;-pro2K é 2× 1K. Falhas são totalmente reembolsadas; imagens de referência são gratuitas. - Erros: tamanho/proporção inválidos,
agentem imagem-para-imagem, referências inacessíveis/grandes demais → 400; limite de taxa → 429.
Consultar resultadosUse Obter status da tarefa para o progresso e
result.images.