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
Generación de imágenes Qwen Image 2.0
- Modo de procesamiento asíncrono, devuelve un ID de tarea para consultas posteriores
- Admite text-to-image, image-to-image y otros modos de generación
- Admite niveles de resolución 1K/2K y permite generar hasta 6 imágenes
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 admitidos
| Modelo | Descripción | Máx. imágenes | Precio |
|---|---|---|---|
qwen-image-2.0 | Versión estándar, equilibrio entre calidad y rendimiento | 6 | Precio fijo |
qwen-image-2.0-pro | Versión Pro, renderizado de texto más sólido y texturas realistas más refinadas | 6 | Precio fijo |
Autorización
string
requerido
Todos los endpoints requieren autenticación mediante Bearer TokenObtener la clave de API:Visite Gestión de claves de API para obtener su clave de APIAñádala a la cabecera de la solicitud:
Authorization: Bearer YOUR_API_KEY
Cuerpo de la solicitud
string
requerido
Nombre del modelo
qwen-image-2.0- Versión estándar, equilibrio entre calidad y rendimientoqwen-image-2.0-pro- Versión Pro, renderizado de texto más sólido y texturas realistas más refinadas
boolean
predeterminado:"false"
Indica si se debe moderar el contenido antes de enviar la tarea de imagen.
true: revisar los prompts y las imágenes de entrada conomni-moderation-latestfalseu omitido: no enviar una solicitud de moderación, sin coste ni latencia de moderación adicionales (predeterminado)
string
requerido
Descripción textual para la generación de la imagen, hasta 800 caracteres
string
predeterminado:"1:1"
Proporción de la imagenProporciones admitidas:
1:1- Cuadrado (predeterminado)4:3- Horizontal 4:33:4- Vertical 3:416:9- Panorámico horizontal9:16- Vertical alargado3:2- Horizontal 3:22:3- Vertical 2:3
string
predeterminado:"1K"
Nivel de resolución
1K- Resolución estándar (predeterminada)2K- Resolución de alta definición
integer
predeterminado:"1"
Número de imágenes a generarRango: 1-6
string
Prompt negativo (contenido que no debe aparecer), hasta 500 caracteres
array
Array de URL de imágenes de referencia (modo image-to-image)Limitaciones:
- Deben ser URL de acceso público
- No se admite el formato Base64
Tabla de referencia de resoluciones
El tamaño de salida se controla mediante la combinación desize (proporción) + resolution (nivel de resolución).
| Proporción | Nivel 1K | Nivel 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 |
- Solo
size→ utiliza el nivel 1K por defecto:{"size": "16:9"}→ 1280×720 size+resolution→ nivel especificado:{"size": "16:9", "resolution": "2K"}→ 2048×1152
Ejemplos de uso
Text-to-Image (solicitud 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"]
}
Respuesta
integer
Código de estado de la respuesta
array
Notas
- Procesamiento asíncrono: tras el envío se devuelve un
task_id. Consulte/v1/tasks/{task_id}para obtener los resultados - Almacenamiento de imágenes: las imágenes generadas se replican en la CDN de la plataforma y son válidas a largo plazo
- Reglas de facturación: se factura por cada imagen generada correctamente; no se cobran los fallos
- Requisitos de las URL de imágenes: las imágenes de entrada deben ser URL de acceso público; no se admite base64