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
Geração de Imagens Qwen Image 2.0
- Modo de processamento assíncrono, retorna um ID de tarefa para consultas posteriores
- Suporta text-to-image, image-to-image e outros modos de geração
- Suporta os níveis de resolução 1K/2K, gera até 6 imagens
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"
}
}
Modelos suportados
| Modelo | Descrição | Máx. de imagens | Preço |
|---|---|---|---|
qwen-image-2.0 | Versão padrão, qualidade e desempenho equilibrados | 6 | Preço fixo |
qwen-image-2.0-pro | Versão Pro, renderização de texto mais forte, texturas realistas mais refinadas | 6 | Preço fixo |
Autorização
string
obrigatório
Todos os endpoints exigem autenticação por Bearer TokenObtenha sua chave de API:Acesse o gerenciamento de chaves de API para obter sua chave de APIAdicione-a ao cabeçalho da requisição:
Authorization: Bearer YOUR_API_KEY
Corpo da requisição
string
obrigatório
Nome do modelo
qwen-image-2.0- Versão padrão, qualidade e desempenho equilibradosqwen-image-2.0-pro- Versão Pro, renderização de texto mais forte, texturas realistas mais refinadas
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 da imagem, até 800 caracteres
string
padrão:"1:1"
Proporção da imagemProporções suportadas:
1:1- Quadrado (padrão)4:3- Paisagem 4:33:4- Retrato 3:416:9- Paisagem widescreen9:16- Retrato vertical3:2- Paisagem 3:22:3- Retrato 2:3
string
padrão:"1K"
Nível de resolução
1K- Resolução padrão (padrão)2K- Resolução de alta definição
integer
padrão:"1"
Número de imagens a serem geradasIntervalo: 1–6
string
Prompt negativo (conteúdo que você não quer que apareça), até 500 caracteres
array
Array de URLs de imagens de referência (modo image-to-image)Limitações:
- Devem ser URLs publicamente acessíveis
- O formato Base64 não é suportado
Tabela de referência de resoluções
O tamanho da saída é controlado pela combinaçãosize (proporção) + resolution (nível de resolução).
| Proporção | Nível 1K | Nível 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 |
- Apenas
size→ padrão para o nível 1K:{"size": "16:9"}→ 1280×720 size+resolution→ nível especificado:{"size": "16:9", "resolution": "2K"}→ 2048×1152
Exemplos de uso
Text-to-Image (requisição mínima){
"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"]
}
Resposta
integer
Código de status da resposta
array
Observações
- Processamento assíncrono: após o envio, um
task_idé retornado. Consulte/v1/tasks/{task_id}para obter os resultados - Armazenamento de imagens: as imagens geradas são espelhadas no CDN da plataforma e ficam válidas por longo prazo
- Regras de cobrança: cobrado por imagem gerada com sucesso, sem cobrança em caso de falha
- Requisitos para URLs de imagens: as imagens de entrada devem ser URLs publicamente acessíveis; base64 não é suportado