Guía rápida de la API Qwen Image 2512: Genera imágenes en minutos (2026)

Guía rápida de la API Qwen Image 2512: Genera imágenes en minutos (2026)

Hola, soy Dora. Solía pasar mucho tiempo creando imágenes para productos: buscando recursos, redimensionándolos, renombrando archivos, organizando carpetas… cada paso repetido sin fin. Nada era difícil, pero era tedioso. Luego, probé la API de Qwen Image 2512 y descubrí que podía automatizar todo esto con solo algunas líneas de código.

Esto no es un anuncio. Solo estoy compartiendo lo que realmente pasó cuando lo probé — qué funcionó sin problemas, dónde tropecé y cómo lo hice útil de manera confiable.

Atajo de WaveSpeed (Si solo quieres resultados)

Si solo quieres generar imágenes rápidamente, sin configurar todo tú mismo:

  • WaveSpeed ya proporciona una API REST de Qwen Image 2512 lista para usar (sin inicios en frío).
  • Usa el punto final de WaveSpeed + clave API → listo.
  • Si quieres entender el flujo oficial de DashScope (y los problemas comunes), sigue leyendo.

¿Qué puede hacer realmente esta API?

Simplemente: escribes una descripción en texto y obtienes una imagen.

Por ejemplo, si escribes:

“Un escritorio ordenado con un cuaderno y una planta bajo luz suave”

unos segundos después, obtienes una imagen que coincide con tu descripción — y puedes guardarla automáticamente en tu computadora.

Lo que es bueno para:

  • Crear paneles de inspiración
  • Generar miniaturas rápidamente
  • Añadir imágenes de marcador de posición a documentos
  • Crear prototipos visuales para productos

Lo que noté:

La primera vez que lo usé, no parecía mucho más rápido que buscar imágenes manualmente. Pero después de dos o tres ejecuciones, me di cuenta de que ya no tenía que preocuparme por “¿qué tamaño debería ser?” o “¿cómo debería nombrar el archivo?”. Lo que me ahorró no fue solo tiempo, sino esfuerzo mental.


Formato de imagen y almacenamiento

  • Formato: PNG, generado automáticamente de forma predeterminada
  • Dónde se almacena la imagen:
    • La API devuelve un enlace (URL) a la imagen
    • El enlace apunta a un servidor de Alibaba Cloud
    • Importante: el enlace solo es válido durante 24 horas; después, caduca
    • Así que necesitas descargarlo en tu computadora rápidamente

Nota: La API no te da el archivo de imagen directamente. Si quieres guardarlo localmente, necesitas añadir un paso de descarga en tu código (explicado después).


Antes de empezar: qué necesitas

Paso 1: Obtén una cuenta y una clave API

  1. Regístrate para obtener una cuenta de Alibaba Cloud
  2. Ve a la Consola de Model Studio
  3. Genera una clave API (como una clave que prueba que eres tú)
  4. Guarda la clave como una variable de entorno llamada DASHSCOPE_API_KEY
    Variable de entorno:
    Piénsalo como un lugar especial en tu computadora donde vive tu clave, así tu código puede encontrarla automáticamente sin copiar y pegar cada vez.

Consejos:

  • Para pruebas, puedes almacenarla en un archivo .env
  • Para uso real, una herramienta segura de gestión de claves es más segura
  • Las regiones de Beijing y Singapur tienen claves diferentes — no las mezcles

Paso 2: Elige una herramienta

Hay tres formas principales, comenzando por la más simple:

  1. cURL (la más simple)

    • Buena para pruebas rápidas para ver si la API funciona
    • No se requiere programación, solo pega el comando
    • Recomendado para el primer intento
  2. Python (la más común)

    • Buena para crear una pequeña herramienta para uso repetido
    • Uso el SDK oficial de DashScope para manejar muchos detalles automáticamente
    • Ayuda tener algunos conocimientos básicos de Python
  3. Node.js (amigable para desarrolladores frontend)

    • Si eres desarrollador frontend, esto también funciona
    • Los principios son los mismos, aunque no lo cubrí aquí

Prueba el Playground primero:
Si solo quieres probar resultados rápidamente, Wavespeed Playground te permite generar imágenes en el navegador. Perfecto para uso ocasional. Para generación por lotes o automatización, sigue leyendo para aprender a usar la API.


Inicio rápido: pruebas con cURL

Abre tu terminal (Mac) o símbolo del sistema (Windows) y pega esto:

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --data '{
    "model": "qwen-image-max",
    "input": {
      "messages": [
        {
          "role": "user",
          "content": [
            {"text": "A tidy desk with a notebook and a plant under soft light"}
          ]
        }
      ]
    },
    "parameters": {
      "size": "1024*1024"
    }
  }'

Presiona Enter, espera unos segundos, y verás una respuesta JSON con un enlace a tu imagen.

Problemas en los que caí

  1. El nombre del modelo debe ser qwen-image-max, no qwen-image-2512 ni nada más.
  2. El formato de tamaño usa un asterisco 1024*1024, no 1024x1024.
  3. Para la región de Singapur, cambia la URL a: https://dashscope-intl.aliyuncs.com/api/v1/...

Si estás construyendo algo tipo producción, el flujo oficial de DashScope es totalmente viable — pero viene con detalles operacionales (regiones, vidas útiles de URL, reintentos). Exactamente por eso me encanta usar WaveSpeed para el trabajo diario: me da Qwen Image 2512 detrás de una API REST lista para usar, así puedo concentrarme en prompts y gestión de salida en lugar de plomería.

Parámetros explicados

Requeridos

  1. model

    • "qwen-image-max" es el nombre oficial para Qwen-Image-2512
    • También existe "qwen-image-plus", similar pero más barato
  2. input.messages

    • Un array con un elemento
    • text es tu descripción
    • Máximo 800 caracteres (aproximadamente 400 caracteres chinos)

Opcionales (se usan valores predeterminados si se omiten)

  1. parameters.size

    • 1664*928 (16:9 paisaje)
    • 1472*1104 (4:3)
    • 1328*1328 (1:1 cuadrado, predeterminado)
    • 1104*1472 (3:4 retrato)
    • 928*1664 (9:16 retrato)
  2. parameters.negative_prompt

    • Cosas que no quieres: p. ej., "baja resolución, borroso, distorsionado, sobresaturado"
    • Hasta 500 caracteres
  3. parameters.prompt_extend

    • El predeterminado es true
    • Enriquece automáticamente tu descripción
    • Desactívalo si quieres control estricto
  4. parameters.watermark

    • El predeterminado es false
    • Añade marca de agua “Qwen-Image” si es true
  5. parameters.seed

    • Rango 0–2147483647
    • La misma seed + la misma descripción = la misma imagen
    • Útil para pruebas y comparación de resultados

Ejemplo de respuesta API

{
  "output": {
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "role": "assistant",
          "content": [
            {
              "image": "https://dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com/xxx.png?Expires=xxxx"
            }
          ]
        }
      }
    ]
  },
  "usage": {
    "width": 1328,
    "image_count": 1,
    "height": 1328
  },
  "request_id": "xxx"
}

Puntos clave

  • URL de imagen: output.choices[0].message.content[0].image
  • Verifica que finish_reason sea "stop" para confirmar el éxito
  • Los enlaces duran 24 horas — descarga rápidamente

Automatización con Python

Si quieres generación por lotes o una pequeña herramienta:

import os
import time
import requests
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath

API_KEY = os.getenv("DASHSCOPE_API_KEY")
ENDPOINT = "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"

HEADERS = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}",
}

def generate_image(prompt: str, size="1328*1328"):
    payload = {
        "model": "qwen-image-max",
        "input": {
            "messages": [{"role": "user", "content": [{"text": prompt}]}]
        },
        "parameters": {"size": size, "prompt_extend": True, "watermark": False}
    }
    r = requests.post(ENDPOINT, headers=HEADERS, json=payload, timeout=120)
    r.raise_for_status()
    data = r.json()
    choices = data.get("output", {}).get("choices", [])
    if not choices:
        raise ValueError(f"No image generated:\n{data}")
    content = choices[0].get("message", {}).get("content", [])
    if not content:
        raise ValueError(f"Empty content:\n{data}")
    image_url = content[0].get("image")
    if not image_url:
        raise ValueError(f"No image URL:\n{data}")

    img_response = requests.get(image_url)
    img_response.raise_for_status()

    file_name = PurePosixPath(unquote(urlparse(image_url).path)).parts[-1]
    ts = int(time.time())
    path = f"qwen_image_{ts}_{file_name}"
    with open(path, "wb") as f:
        f.write(img_response.content)
    return path

if __name__ == "__main__":
    output_path = generate_image("A tidy desk with a notebook and a plant under soft light")
    print("Image saved at:", output_path)

Lo que aprendí durante las pruebas

  • El nombre de modelo incorrecto lo rompe (qwen-image-plusqwen-image-max)
  • Formato de tamaño incorrecto (1328x1328 en lugar de 1328*1328)
  • La estructura de respuesta difiere ligeramente de los documentos; verifica la URL de la imagen
  • Olvidar descargar la imagen hace que el enlace caduque después de 24 horas

Usando el SDK oficial

import os
import json
from dashscope import MultiModalConversation

api_key = os.getenv("DASHSCOPE_API_KEY")
messages = [{"role": "user", "content": [{"text": "A tidy desk with a notebook and a plant under soft light"}]}]

response = MultiModalConversation.call(
    api_key=api_key,
    model="qwen-image-max",
    messages=messages,
    result_format='message',
    stream=False,
    watermark=False,
    prompt_extend=True,
    size='1328*1328'
)

if response.status_code == 200:
    print(json.dumps(response, ensure_ascii=False))
    image_url = response.output.choices[0].message.content[0]['image']
    print(f"Image URL: {image_url}")
else:
    print(f"Error: {response.code} - {response.message}")

Referencia rápida de parámetros

ParámetroValor sugeridoNotas
size1328*1328Cuadrado, equilibrio de velocidad y calidad
prompt_extendTRUEDeja que la IA enriquezca tu descripción
seedNúmero fijoUsar para probar y comparar resultados
negative_promptSegún sea necesariop. ej., “borroso, baja calidad, distorsionado”

Cuándo cambiar la seed

  • Seed fija → comparar variaciones de prompts
  • Diferentes seeds → generar múltiples imágenes distintas

Errores comunes y soluciones

  • 401 Unauthorized → clave API incorrecta, región incorrecta o permiso de imagen faltante
  • 429 Rate limit → demasiadas solicitudes; añade retardo o actualiza cuota
  • Timeout / problemas de red → aumenta el timeout, descarga inmediatamente

Pequeñas mejoras que añadí

  1. Seed fija para probar prompts → más fácil comparar resultados
  2. Nombrado consistente de archivos: {palabra clave}-{tamaño}-{seed}.png
  3. Gestión de archivo de configuración: YAML para evitar codificar parámetros

Para quién funciona esto

Playground

  • Generación de imagen ocasional
  • Prueba rápida de prompts
  • Sin necesidad de automatización

API

  • Generación por lotes
  • Integración de herramienta o producto
  • Uso programado o basado en sistemas

Caminos finales (elige lo que te convenga)

Camino A — Rápido y práctico

Camino B — Control total

  • Usa DashScope directamente si necesitas integración profunda de Alibaba Cloud

Me encantan las herramientas que funcionan silenciosamente en el fondo. Para aprender y entender, el flujo oficial es excelente. Para el trabajo diario y envíos más rápidos, WaveSpeed me ahorra mucha fricción.