Todos los productos
Search
Centro de documentos

Alibaba Cloud Model Studio:Wan2.6 - generación y edición de imágenes

Última actualización: Oct 12, 2026

Wan2.6 admite entrada de múltiples imágenes, edición de imágenes y salida de texto e imagen intercalados.

Resumen de modelos

Modelo

Descripción

Especificaciones de la imagen de salida

wan2.6-image

Edita imágenes y genera salida de texto e imagen intercalada.

Formato de imagen: PNG

La resolución y las dimensiones de la imagen se configuran mediante el parámetro size.

NotaAntes de llamar a la API, verifique la lista de modelos y precios admitidos en cada región.

Requisitos previos

Obtenga una clave API y exporte la clave API como variable de entorno.

ImportanteLas regiones de Singapur, EE. UU. (Virginia) y China (Pekín) tienen claves de API y endpoints de solicitud separados. No se pueden usar indistintamente. Las llamadas entre regiones provocan fallos de autenticación o errores de servicio. Para obtener más información, consulte Seleccionar una región y alcance de implementación del servicio.

HTTP síncrono

Devuelve resultados en una sola solicitud. Recomendado para la mayoría de los escenarios.

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

EE. UU. (Virginia)

POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

China (Beijing)

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

El ámbito de implementación global (región de Frankfurt) solo admite llamadas asíncronas.

Parámetros de solicitud

Edición de imagen

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --data '{
        "model": "wan2.6-image",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "text": "Generate a tomato and egg stir-fry based on the style of image 1 and the background of image 2"
                        },
                        {
                            "image": "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"
                        },
                        {
                            "image": "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "prompt_extend": true,
            "watermark": false,
            "n": 1,
            "enable_interleave": false,
            "size": "1K"
        }
    }'

Salida de texto e imagen intercalados (solo streaming)

Al usar la salida de texto e imagen intercalados (parameters.enable_interleave = true) con la interfaz síncrona, se requiere streaming. Establezca ambas condiciones:

  • Establezca X-DashScope-SSE en enable.
  • Establezca parameters.stream en true.
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --header 'X-DashScope-SSE: enable' \
    --data '{
        "model": "wan2.6-image",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "text": "Give me a three-image tutorial for stir-fried pork with chili peppers"
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "max_images": 3,
            "size": "1280*1280",
            "stream": true,
            "enable_interleave":true
        }
    }'

CLI de dashscope

Llamada a través de la línea de comandos dashscope.

export DASHSCOPE_API_KEY="your-api-key"
# Replace {WorkspaceId} with your workspace ID, ap-southeast-1 with your region (e.g., us-east-1, eu-central-1)
export DASHSCOPE_HTTP_BASE_URL="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
dashscope image-generation create -m wan2.6-t2i -t "a cute cat"

ImportanteEl asistente interactivo SDK Expert puede realizar las mismas tareas de desarrollo y solución de problemas mediante lenguaje natural; consulte

DashScope SDK Expert.

Para la tabla completa de regiones, consulte Resumen de URL base.

Encabezados de solicitud

Content-Type string (Requerido)

El tipo de contenido de la solicitud. Debe ser application/json.

Authorization string (Requerido)

Autentica la solicitud con una clave API de Model Studio. Ejemplo: Bearer sk-xxxx.

X-DashScope-SSEstring (Opcional)

Habilita la salida en streaming.

  • Cuando parameters.enable_interleave=true, establezca en enable.
  • En otros casos, omita este encabezado.
Cuerpo de la solicitud

model string (Obligatorio)

Nombre del modelo. Establezca en wan2.6-image.

input object (Obligatorio)

Configuración de entrada.

Propiedades

messages array (Obligatorio)

Matriz de contenido de la solicitud. Solo se admiten conversaciones de un solo turno: proporcione un par rol-contenido.

Propiedades

rolestring (Obligatorio)

Rol del mensaje. Establecido en user.

contentarray (Obligatorio)

Matriz de contenido del mensaje.

Propiedades

textstring(Obligatorio)

Prompt positivo que describe el contenido, estilo y composición deseados de la imagen.

Admite chino e inglés. Máximo 2,000 caracteres (cada carácter chino, letra, dígito o símbolo cuenta como uno). Se trunca automáticamente si se excede.

Ejemplo: Genere un salteado de tomate y huevo basado en este estilo de imagen.

Nota: La matriz content debe contener exactamente un objeto con un campo text.

imagestring(Opcional)

URL o cadena codificada en Base64 de la imagen de entrada.

Restricciones de imagen:

  • Formatos de imagen: JPEG, JPG, PNG (canal alfa no compatible), BMP, WebP.
  • Resolución de la imagen: El ancho y el alto deben estar cada uno entre 240 y 8,000 píxeles.
  • Tamaño del archivo: No debe exceder 10 MB.

Límites de cantidad de imágenes:

  • La cantidad de imágenes de entrada depende del parámetro parameters.enable_interleave.

    • Cuando enable_interleave=true (salida de texto e imagen intercalados), puede ingresar de 0 a 1 imágenes.
    • Cuando enable_interleave=false (edición de imagen), usted debe ingresar de 1 a 4 imágenes.
  • Cuando ingresa múltiples imágenes, incluya múltiples objetos image en la matriz content, definiendo el orden de las imágenes según la secuencia de la matriz.

Formatos de entrada admitidos:

  1. Utilizar una URL accesible públicamente

    • Admite protocolos HTTP o HTTPS.
    • Ejemplo: http://wanx.alicdn.com/material/xxx.jpeg.
  2. Proporcione una cadena de imagen codificada en Base64

    • Formato: data:{MIME_type};base64,{base64_data}
    • Ejemplo: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ... (solo con fines ilustrativos; proporcione la cadena completa en la práctica)
    • Para las directrices de codificación Base64, consulte Métodos de entrada de imagen.

parameters object (Opcional)

Parámetros de generación.

Propiedades

negative_prompt string (opcional)

Una indicación negativa que describe lo que no want en la imagen.

Admite chino e inglés. La longitud máxima es de 500 caracteres. Los caracteres excedentes se truncan automáticamente.

Ejemplo: Baja resolución, baja calidad, extremidades distorsionadas, dedos malformados, colores sobresaturados, apariencia cerosa, sin detalles faciales, superficies excesivamente lisas, aspecto generado por IA. Composición caótica. Texto borroso o distorsionado.

size string (Opcional)

Resolución de la imagen de salida. Admite dos métodos: hacer referencia a las proporciones de la imagen de entrada o especificar directamente las dimensiones.

Cuando enable_interleave=false (modo de edición de imagen):

  • Método 1: Referenciar proporciones de la imagen de entrada (recomendado)

    Opciones de resolución de salida disponibles: 1K (predeterminado), 2K.

    • 1K: Total de píxeles de salida cercano a 1280*1280, manteniendo la relación de aspecto de la última imagen de entrada.
    • 2K: Total de píxeles de salida cercano a 2048*2048, manteniendo la relación de aspecto de la última imagen de entrada.
  • Método 2: Especificar ancho y alto de la imagen de salida en píxeles

    El total de píxeles debe estar entre [768768, 20482048], con un rango de relación de aspecto de [1:4, 4:1].

    Los valores reales de píxeles de salida son múltiplos de 16 más cercanos al valor especificado.

Cuando enable_interleave=true (modo de salida de texto e imagen intercalada):

  • Método 1: Referenciar proporciones de la imagen de entrada (método predeterminado)

    • Si el total de píxeles de la imagen de entrada es ≤ 1280*1280, la salida coincide con el total de píxeles y la relación de aspecto de la entrada.
    • Si el total de píxeles de la imagen de entrada es > 12801280, el total de píxeles de salida es cercano a 12801280, manteniendo la relación de aspecto de la entrada.
    • Si no se proporciona ninguna imagen de entrada, el tamaño de salida es 1280*1280.
  • Método 2: Especificar ancho y alto de la imagen de salida en píxeles

    El total de píxeles debe estar entre [768768, 12801280], con un rango de relación de aspecto de [1:4, 4:1].

    Los valores reales de píxeles de salida son múltiplos de 16 más cercanos al valor especificado.

Resoluciones recomendadas para relaciones de aspecto comunes

  • 1:1: 1280*1280
  • 2:3: 800*1200
  • 3:2: 1200*800
  • 3:4: 960*1280
  • 4:3: 1280*960
  • 9:16: 720*1280
  • 16:9: 1280*720
  • 21:9: 1344*576

enable_interleave bool (Opcional)

Controla el modo de generación de imágenes:

  • false (predeterminado): Indica el modo de edición de imagen (admite entrada de múltiples imágenes y generación con consistencia de sujeto).

    • Caso de uso: Editar, aplicar transferencia de estilo o generar imágenes con consistencia de sujeto basándose en 1 a 4 imágenes de entrada.
    • Entrada: Debe proporcionar al menos una imagen de referencia.
    • Salida: Puede generar de 1 a 4 imágenes resultantes.
  • true: Habilita el modo de salida de texto e imagen intercalados (admite la entrada de una imagen o ninguna).

    • Caso de uso: Generar contenido que combine texto e imágenes basándose en una descripción textual, o realizar generación pura de texto a imagen.
    • Entrada: Puede no proporcionar ninguna imagen (texto a imagen) o hasta una imagen de referencia.
    • Salida: Genera contenido mixto que contiene tanto texto como imágenes.

n integer (Opcional)

ImportanteEste parámetro afecta el costo (se cobra por imagen generada exitosamente; consulte precios).

Número de imágenes a generar. El comportamiento depende de enable_interleave:

  • Cuando enable_interleave=false (modo de edición de imagen):

    • Controla directamente el número de imágenes generadas.
    • Rango: de 1 a 4. El valor predeterminado es 4.
    • Durante las pruebas, establezca este valor en 1 para una validación de bajo costo.
  • Cuando enable_interleave=true (modo de texto e imagen intercalada):

    • El valor predeterminado es 1 y debe permanecer en 1. Cualquier otro valor provoca un error.
    • Utilice max_images para controlar el recuento de imágenes en este modo.

max_images integer (Opcional)

ImportanteEste parámetro afecta el costo (se cobra por imagen generada exitosamente; consulte precios).

Solo efectivo en modo de texto e imagen intercalada (enable_interleave=true).

  • Número máximo de imágenes que el modelo genera en una sola respuesta.
  • Rango: de 1 a 5. El valor predeterminado es 5.
  • Establece el límite superior. El modelo puede generar menos imágenes de las solicitadas.

prompt_extend bool (Opcional)

Solo efectivo en modo de edición de imagen (enable_interleave = false).

Habilita la reescritura inteligente de prompts. Optimiza solo el prompt positivo; el prompt negativo permanece sin cambios.

  • true (predeterminado)
  • false

stream bool (Opcional)

Habilita la salida en streaming. Obligatorio (establecer en true) cuando enable_interleave=true.

  • false (predeterminado)
  • true

watermark bool (Opcional)

Añade una etiqueta de marca de agua en la esquina inferior derecha de la imagen con el texto fijo "AI Generated".

  • false (predeterminado)
  • true

seed integer (opcional)

Semilla de número aleatorio. Rango válido: [0,2147483647].

Usar la misma seed produce resultados similares. Si se omite, el algoritmo utiliza una semilla aleatoria.

Nota: La generación de imágenes es probabilística. Incluso con la misma seed, los resultados pueden variar.

Parámetros de respuesta

Ejecución de tarea exitosa

Los datos de la tarea (estado de la tarea y URL de imágenes) se conservan solo durante 24 horas y luego se eliminan automáticamente. Guarde las imágenes generadas con prontitud.

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ],
                    "role": "assistant"
                }
            }
        ],
        "finished": true
    },
    "usage": {
        "image_count": 1,
        "input_tokens": 0,
        "output_tokens": 0,
        "size": "1376*768",
        "total_tokens": 0
    },
    "request_id": "a3f4befe-cacd-49c9-8298-xxxxxx"
}

Ejecución exitosa de la tarea (salida en streaming)

Los datos de la tarea (estado de la tarea y URL de imágenes) se conservan solo durante 24 horas y luego se eliminan automáticamente. Guarde las imágenes generadas con prontitud.

{"output":{"choices":[{"message":{"content":[{"type":"text","text":"meat"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":571,"image_count":3,"output_tokens":543,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"fragrant"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":572,"image_count":3,"output_tokens":544,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"intertwine"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":573,"image_count":3,"output_tokens":545,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
......
{"output":{"choices":[{"message":{"content":[{"type":"image","image":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.png?Expires=xxxx"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":557,"image_count":3,"output_tokens":529,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"while"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":558,"image_count":3,"output_tokens":530,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"hot"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":559,"image_count":3,"output_tokens":531,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"pinch"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":560,"image_count":3,"output_tokens":532,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"up"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":561,"image_count":3,"output_tokens":533,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"a piece of"}],"role":"assistant"},"finish_reason":"null"}],"finished":true},"usage":{"total_tokens":562,"image_count":3,"output_tokens":534,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}
{"output":{"choices":[{"message":{"content":[{"type":"text","text":"meat"}],"role":"assistant"},"finish_reason":"stop"}],"finished":true},"usage":{"total_tokens":563,"image_count":3,"output_tokens":535,"size":"1280*1280","input_tokens":28},"request_id":"d2dcb952-bf91-4a6a-aad5-xxxxxx"}

Fallo en la ejecución de la tarea

Si la tarea falla, se devuelve información de error. Utilice los campos code y message para identificar la causa. Consulte Códigos de error para solucionar problemas.

{
    "request_id": "a4d78a5f-655f-9639-8437-xxxxxx",
    "code": "InvalidParameter",
    "message": "num_images_per_prompt must be 1"
}

output object

Salida de la tarea.

Propiedades

choices array of object

Contenido de salida generado por el modelo.

Propiedades

finish_reason string

Motivo de finalización de la tarea.

Escenario de salida sin streaming: Se detiene naturalmente con stop.

Escenario de salida en streaming: Este parámetro indica si el flujo de datos ha terminado de transmitirse.

  • Durante la transmisión: Los paquetes de datos anteriores devuelven continuamente "finish_reason": "null", lo que indica que el contenido aún se está generando. Continúe recibiendo.
  • Al final de la transmisión: Solo la última estructura JSON devuelve "finish_reason":"stop", lo que indica que la solicitud en streaming se ha completado totalmente. Deje de recibir.

message object

Mensaje devuelto por el modelo.

Propiedades

rolestring

Rol del mensaje, fijo como assistant.

contentarray

Propiedades

type string

Tipo de salida. Valores enumerados: text, image.

text string

Texto generado.

imagen string

URL de la imagen generada en formato PNG.

El enlace expira después de 24 horas. Descargue y guarde la imagen a la brevedad.

finished bool

Indicador de finalización de solicitud.

  • true
  • false

usage object

Estadísticas de salida. Solo cuenta resultados exitosos.

Propiedades

image_count integer

Número de imágenes generadas.

size string

Resolución de las imágenes generadas. Ejemplo: 1376*768.

input_tokens integer

Facturado por recuento de imágenes.

  • En modo de edición de imagen, fijo en 0.
  • En el modo de texto e imagen intercalados, este campo cuenta los tokens de texto de entrada (no facturables).

output_tokens integer

Facturado por recuento de imágenes.

  • En modo de edición de imagen, fijo en 0.
  • En el modo de texto e imagen intercalados, este campo cuenta los tokens de texto de salida (no facturables).

total_tokensinteger

Facturado por recuento de imágenes.

  • En modo de edición de imagen, fijo en 0.
  • En el modo de texto e imagen intercalados, este campo cuenta el total de tokens (no facturable).

request_id string

Identificador único de solicitud para rastreo y solución de problemas.

code string

Código de error. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.

message string

Mensaje de error detallado. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.

asíncrono HTTP

Proceso: Crear tarea → Consultar resultados

Paso 1: Crear tarea y obtener ID de tarea

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

EE. UU. (Virginia)

POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation

China (Beijing)

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Germany (Frankfurt)

POST https://<u>{WorkspaceId}.eu-central-1.maas.aliyuncs.com</u>/api/v1/services/aigc/image-generation/generation

Al realizar una llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo.

Nota

  • Después de crear la tarea, utilice el task_id devuelto para consultar el resultado. El task_id es válido durante 24 horas. No cree tareas duplicadas. En su lugar, utilice el sondeo para recuperar el resultado.
  • Para obtener orientación para principiantes, consulte Llamar a APIs con Postman o cURL.

Parámetros de solicitud

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --header 'X-DashScope-Async: enable' \
    --data '{
        "model": "wan2.6-image",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "text": "Generate a tomato and egg stir-fry based on the style of image 1 and the background of image 2"
                        },
                        {
                            "image": "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"
                        },
                        {
                            "image": "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "prompt_extend": true,
            "watermark": false,
            "n": 1,
            "enable_interleave": false,
            "size": "1K"
        }
    }'
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
    --header 'X-DashScope-Async: enable' \
    --data '{
        "model": "wan2.6-image",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "text": "Give me a three-image tutorial for stir-fried pork with chili peppers"
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "max_images": 3,
            "size": "1280*1280",
            "enable_interleave":true
        }
    }'
Encabezados de solicitud

Content-Type string (Requerido)

El tipo de contenido de la solicitud. Debe ser application/json.

Authorization string (Requerido)

Autentica la solicitud con una clave API de Model Studio. Ejemplo: Bearer sk-xxxx.

X-DashScope-Asyncstring(Requerido)

Interruptor de modo asíncrono. Debe establecerse en enable.

ImportanteOmitir este encabezado devuelve el error: “current user api does not support synchronous calls”.

Cuerpo de la solicitud

model string (Obligatorio)

Nombre del modelo.

Ejemplo: wan2.6-image

input object (Obligatorio)

Configuración de entrada.

Propiedades

messages array (Obligatorio)

Matriz de contenido de la solicitud. Solo se admiten conversaciones de un solo turno: proporcione un par rol-contenido. No se admiten conversaciones de múltiples turnos.

Propiedades

rolestring (Obligatorio)

Rol del mensaje. Establecido en user.

contentarray (Obligatorio)

Matriz de contenido del mensaje.

Propiedades

textstring(Obligatorio)

Prompt positivo que describe el contenido, estilo y composición deseados de la imagen.

Admite chino e inglés. Máximo 2,000 caracteres (cada carácter chino, letra, dígito o símbolo cuenta como uno). Se trunca automáticamente si se excede.

Ejemplo: Genere un salteado de tomate y huevo basado en este estilo de imagen.

Nota: La matriz content debe contener exactamente un objeto con un campo text.

imagestring(Opcional)

URL o cadena codificada en Base64 de la imagen de entrada.

Restricciones de imagen:

  • Formatos de imagen: JPEG, JPG, PNG (canal alfa no compatible), BMP, WebP.
  • Resolución de la imagen: El ancho y el alto deben estar cada uno entre 240 y 8,000 píxeles.
  • Tamaño del archivo: No debe exceder 10 MB.

Límites de cantidad de imágenes:

  • La cantidad de imágenes de entrada depende del parámetro parameters.enable_interleave.

    • Cuando enable_interleave=true (salida de texto e imagen intercalados), puede ingresar de 0 a 1 imágenes.
    • Cuando enable_interleave=false (edición de imagen), usted debe ingresar de 1 a 4 imágenes.
  • Cuando ingresa múltiples imágenes, incluya múltiples objetos image en la matriz content, definiendo el orden de las imágenes según la secuencia de la matriz.

Formatos de entrada admitidos:

  1. Utilizar una URL accesible públicamente

    • Admite protocolos HTTP o HTTPS.
    • Ejemplo: http://wanx.alicdn.com/material/xxx.jpeg.
  2. Proporcione una cadena de imagen codificada en Base64

    • Formato: data:{MIME_type};base64,{base64_data}
    • Ejemplo: data:image/jpeg;base64,GDU7MtCZzEbTbmRZ... (solo con fines ilustrativos; proporcione la cadena completa en la práctica)
    • Para las directrices de codificación Base64, consulte Métodos de entrada de imagen.

parameters object (Opcional)

Parámetros de generación.

Propiedades

negative_prompt string (opcional)

Una indicación negativa que describe lo que no want en la imagen.

Admite chino e inglés. La longitud máxima es de 500 caracteres. Los caracteres excedentes se truncan automáticamente.

Ejemplo: Baja resolución, baja calidad, extremidades distorsionadas, dedos malformados, colores sobresaturados, apariencia cerosa, sin detalles faciales, superficies excesivamente lisas, aspecto generado por IA. Composición caótica. Texto borroso o distorsionado.

size string (Opcional)

Resolución de la imagen de salida. Admite dos métodos: hacer referencia a las proporciones de la imagen de entrada o especificar directamente las dimensiones.

Cuando enable_interleave=false (modo de edición de imagen):

  • Método 1: Referenciar proporciones de la imagen de entrada (recomendado)

    Opciones de resolución de salida disponibles: 1K (predeterminado), 2K.

    • 1K: Total de píxeles de salida cercano a 1280*1280, manteniendo la relación de aspecto de la última imagen de entrada.
    • 2K: Total de píxeles de salida cercano a 2048*2048, manteniendo la relación de aspecto de la última imagen de entrada.
  • Método 2: Especificar ancho y alto de la imagen de salida en píxeles

    El total de píxeles debe estar entre [768768, 20482048], con un rango de relación de aspecto de [1:4, 4:1].

    Los valores reales de píxeles de salida son múltiplos de 16 más cercanos al valor especificado.

Cuando enable_interleave=true (modo de salida de texto e imagen intercalada):

  • Método 1: Referenciar proporciones de la imagen de entrada (método predeterminado)

    • Si el total de píxeles de la imagen de entrada es ≤ 1280*1280, la salida coincide con el total de píxeles y la relación de aspecto de la entrada.
    • Si el total de píxeles de la imagen de entrada es > 12801280, el total de píxeles de salida es cercano a 12801280, manteniendo la relación de aspecto de la entrada.
    • Si no se proporciona ninguna imagen de entrada, el tamaño de salida es 1280*1280.
  • Método 2: Especificar ancho y alto de la imagen de salida en píxeles

    El total de píxeles debe estar entre [768768, 12801280], con un rango de relación de aspecto de [1:4, 4:1].

    Los valores reales de píxeles de salida son múltiplos de 16 más cercanos al valor especificado.

Resoluciones recomendadas para relaciones de aspecto comunes

  • 1:1: 1280*1280
  • 2:3: 800*1200
  • 3:2: 1200*800
  • 3:4: 960*1280
  • 4:3: 1280*960
  • 9:16: 720*1280
  • 16:9: 1280*720
  • 21:9: 1344*576

enable_interleave bool (Opcional)

Controla el modo de generación de imágenes:

  • false (predeterminado): Indica el modo de edición de imagen (admite entrada de múltiples imágenes y generación con consistencia de sujeto).

    • Caso de uso: Editar, aplicar transferencia de estilo o generar imágenes con consistencia de sujeto basándose en 1 a 4 imágenes de entrada.
    • Entrada: Debe proporcionar al menos una imagen de referencia.
    • Salida: Puede generar de 1 a 4 imágenes resultantes.
  • true: Habilita el modo de salida de texto e imagen intercalados (admite la entrada de una imagen o ninguna).

    • Caso de uso: Generar contenido que combine texto e imágenes basándose en una descripción textual, o realizar generación pura de texto a imagen.
    • Entrada: Puede no proporcionar ninguna imagen (texto a imagen) o hasta una imagen de referencia.
    • Salida: Genera contenido mixto que contiene tanto texto como imágenes.

n integer (Opcional)

ImportanteEste parámetro afecta el costo (se cobra por imagen generada exitosamente; consulte precios).

Número de imágenes a generar. El comportamiento depende de enable_interleave:

  • Cuando enable_interleave=false (modo de edición de imagen):

    • Controla directamente el número de imágenes generadas.
    • Rango: de 1 a 4. El valor predeterminado es 4.
    • Durante las pruebas, establezca este valor en 1 para una validación de bajo costo.
  • Cuando enable_interleave=true (modo de texto e imagen intercalada):

    • El valor predeterminado es 1 y debe permanecer en 1. Cualquier otro valor provoca un error.
    • Utilice max_images para controlar el recuento de imágenes en este modo.

max_images integer (Opcional)

ImportanteEste parámetro afecta el costo (se cobra por imagen generada exitosamente; consulte precios).

Solo efectivo en modo de texto e imagen intercalada (enable_interleave=true).

  • Número máximo de imágenes que el modelo genera en una sola respuesta.
  • Rango: de 1 a 5. El valor predeterminado es 5.
  • Establece el límite superior. El modelo puede generar menos imágenes de las solicitadas.

prompt_extend bool (Opcional)

Solo efectivo en modo de edición de imagen (enable_interleave = false).

Habilita la reescritura inteligente de prompts. Optimiza solo el prompt positivo; el prompt negativo permanece sin cambios.

  • true (predeterminado)
  • false

watermark bool (Opcional)

Añade una etiqueta de marca de agua en la esquina inferior derecha de la imagen con el texto fijo "AI Generated".

  • false (predeterminado)
  • true

seed integer (opcional)

Semilla de número aleatorio. Rango válido: [0,2147483647].

Usar la misma seed produce resultados similares. Si se omite, el algoritmo utiliza una semilla aleatoria.

Nota: La generación de imágenes es probabilística. Incluso con la misma seed, los resultados pueden variar.

Parámetros de respuesta

Respuesta exitosa

Guarde el task_id para consultar el estado y el resultado de la tarea.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Respuesta de error

Error en la creación de la tarea. Consulte Códigos de error.

{
    "code": "InvalidApiKey",
    "message": "Invalid API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

output object

Salida de la tarea.

Propiedades

task_id string

El ID de la tarea. Válido para consultas durante 24 horas.

task_status string

El estado de la tarea.

Valores de enumeración

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: La tarea no existe o se desconoce su estado.

request_id string

Identificador único de solicitud para rastreo y solución de problemas.

code string

Código de error. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.

message string

Mensaje de error detallado. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.

Paso 2: Consultar resultados mediante ID de tarea

Singapore

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

EE. UU. (Virginia)

GET https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

China (Beijing)

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Germany (Frankfurt)

GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

Al realizar una llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Nota

  • Recomendación de sondeo: La generación de imágenes requiere mucho tiempo. Utilice un mecanismo de sondeo con un intervalo razonable, como 10 segundos.
  • Transición de estado de la tarea: PENDING → RUNNING → SUCCEEDED o FAILED.
  • Enlace de resultado: Una vez que una tarea se completa correctamente, se devuelve una URL de imagen válida durante 24 horas. Descargue y guarde la imagen en un almacenamiento permanente, como OSS.

Parámetros de solicitud

Consultar resultados de la tarea

Reemplace {task_id} con el valor task_id devuelto por la llamada a la API anterior. El task_id es válido para consultas durante 24 horas. Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Encabezados de solicitud

Authorization string (Requerido)

Autentica la solicitud con una clave API de Model Studio. Ejemplo: Bearer sk-xxxx.

Parámetros de ruta de URL

task_id string (Obligatorio)

El ID de la tarea.

Parámetros de respuesta

Ejecución de tarea exitosa

Los datos de la tarea (estado de la tarea y URL de imágenes) se conservan solo durante 24 horas y luego se eliminan automáticamente. Guarde las imágenes generadas con prontitud.

{
    "request_id": "43d9e959-25bc-4dc7-9888-xxxxxx",
    "output": {
        "task_id": "858cad55-4bdc-4ba3-ae6c-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-12-16 04:21:02.275",
        "scheduled_time": "2025-12-16 04:21:02.304",
        "end_time": "2025-12-16 04:24:46.658",
        "finished": true,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/1xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            },
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/1xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "size": "1376*768",
        "total_tokens": 0,
        "image_count": 2,
        "output_tokens": 0,
        "input_tokens": 0
    }
}

Fallo en la ejecución de la tarea

Si la tarea falla, se devuelve información de error. Utilice los campos code y message para identificar la causa. Consulte Códigos de error para solucionar problemas.

{
    "request_id": "a4d78a5f-655f-9639-8437-xxxxxx",
    "code": "InvalidParameter",
    "message": "num_images_per_prompt must be 1"
}

output object

Información de salida de la tarea.

Propiedades

task_id string

El ID de la tarea. Válido para consultas durante 24 horas.

task_status string

El estado de la tarea.

Valores de enumeración

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: La tarea no existe o se desconoce su estado.
Transiciones de estado durante el sondeo:
  • PENDING → RUNNING → SUCCEEDED o FAILED.
  • El estado inicial de la consulta suele ser PENDING o RUNNING.
  • Cuando el estado cambia a SUCCEEDED, la respuesta contiene la URL de la imagen generada.
  • Si el estado es FAILED, revise el mensaje de error y reintente la tarea.

submit_time string

La hora en que se envió la tarea. La hora está en UTC+8 y el formato es YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

La hora en que se ejecutó la tarea. La hora está en UTC+8 y el formato es YYYY-MM-DD HH:mm:ss.SSS.

end_time string

La hora en que se completó la tarea. La hora está en UTC+8 y el formato es YYYY-MM-DD HH:mm:ss.SSS.

finished bool

Indicador de finalización de solicitud.

  • true
  • false

choices array of object

Contenido de salida generado por el modelo.

Propiedades

finish_reason string

Motivo de finalización de la tarea. Se detiene naturalmente con stop.

message object

Mensaje devuelto por el modelo.

Propiedades

rolestring

Rol del mensaje, fijo como assistant.

contentarray

Propiedades

type string

Tipo de salida. Valores enumerados: text, image.

text string

Texto generado.

imagen string

URL de la imagen generada en formato PNG.

El enlace expira después de 24 horas. Descargue y guarde la imagen a la brevedad.

usage object

Estadísticas de salida. Cuenta solo los resultados exitosos.

Propiedades

image_count integer

Número de imágenes generadas.

size string

Resolución de las imágenes generadas. Ejemplo: 1376*768.

input_tokens integer

Recuento de tokens de entrada. Facturado por recuento de imágenes. Actualmente fijo en 0.

output_tokens integer

Recuento de tokens de salida. Facturado por recuento de imágenes. Actualmente fijo en 0.

total_tokensinteger

Recuento total de tokens. Facturado por recuento de imágenes. Actualmente fijo en 0.

request_id string

Identificador único de solicitud para rastreo y solución de problemas.

code string

Código de error. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.

message string

Mensaje de error detallado. Se devuelve solo para solicitudes fallidas. Consulte Códigos de error.

DashScope Python SDK

Los parámetros del SDK se alinean con la interfaz HTTP, adaptados según las convenciones de cada lenguaje.

El SDK gestiona las llamadas asíncronas internamente y admite tanto la invocación síncrona como la asíncrona.

La duración real varía según la longitud de la cola y la carga del servicio.

ImportanteRequiere DashScope Python SDK versión 1.25.8 o posterior. Instalar SDK.

base_url y la clave API son específicos de la región. Ejemplo de llamada desde la región Singapore:

Singapore

https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

EE. UU. (Virginia)

https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Germany (Frankfurt)

https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1

Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

El ámbito de implementación global (región de Frankfurt) solo admite llamadas asíncronas.

Edición de imágenes

Síncrono

Ejemplo de solicitud
import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message

# Singapore region base_url. Base URLs differ by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If environment variable is not configured, replace the next line with: api_key="sk-xxx"
# API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

message = Message(
    role="user",
    # Supports local files, e.g., "image": "file://umbrella1.png"
    content=[
        {
            "text": "Generate a tomato and egg stir-fry based on the style of image 1 and the background of image 2"
        },
        {
            "image": "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"
        },
        {
            "image": "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp"
        }
    ]
)
print("----sync call, wait a moment----")
rsp = ImageGeneration.call(
        model='wan2.6-image',
        api_key=api_key,
        messages=[message],
        negative_prompt="",
        prompt_extend=True,
        watermark=False,
        n=1,
        enable_interleave=False,
        size="1K"
    )

print(rsp)
Ejemplo de respuesta

La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{
    "status_code": 200,
    "request_id": "b6a4c68d-3a91-4018-ae96-3cf373xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "audio": null,
        "finished": true
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "characters": 0,
        "image_count": 1,
        "size": "1376*768",
        "total_tokens": 0
    }
}

Las estadísticas de salida se devuelven en el campo de nivel superior usage, al mismo nivel que output. Léase como response.usage["image_count"]. El objeto output no contiene estadísticas: response.output.usage se devuelve como {} y no contiene image_count.

Asíncrono

Ejemplo de solicitud
import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message
from http import HTTPStatus

# Singapore region base_url. Base URLs differ by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If environment variable is not configured, replace the next line with: api_key="sk-xxx"
# API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# Create asynchronous task
def create_async_task():
    print("Creating async task...")
    message = Message(
        role="user",
        content=[
            {'text': 'Generate a tomato and egg stir-fry based on the style of image 1 and the background of image 2'},
            {'image': 'https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png'},
            {'image': 'https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp'}
        ]
    )
    response = ImageGeneration.async_call(
        model="wan2.6-image",
        api_key=api_key,
        messages=[message],
        negative_prompt="",
        prompt_extend=True,
        watermark=False,
        n=1,
        enable_interleave=False,
        size="1K"
    )

    if response.status_code == 200:
        print("Task created successfully:", response)
        return response  # Return task ID
    else:
        raise Exception(f"Failed to create task: {response.code} - {response.message}")

# Wait for task completion
def wait_for_completion(task_response):
    print("Waiting for task completion...")
    status = ImageGeneration.wait(task=task_response, api_key=api_key)

    if status.output.task_status == "SUCCEEDED":
        print("Task succeeded!")
        print("Response:", status)
    else:
        raise Exception(f"Task failed with status: {status.output.task_status}")

# Fetch asynchronous task info
def fetch_task_status(task):
    print("Fetching task status...")
    status = ImageGeneration.fetch(task=task, api_key=api_key)

    if status.status_code == HTTPStatus.OK:
        print("Task status:", status.output.task_status)
        print("Response details:", status)
    else:
        print(f"Failed to fetch status: {status.code} - {status.message}")

# Cancel asynchronous task
def cancel_task(task):
    print("Canceling task...")
    response = ImageGeneration.cancel(task=task, api_key=api_key)

    if response.status_code == HTTPStatus.OK:
        print("Task canceled successfully:", response.output.task_status)
    else:
        print(f"Failed to cancel task: {response.code} - {response.message}")

# Main execution flow
if __name__ == "__main__":
    task = create_async_task()
    wait_for_completion(task)
Ejemplo de respuesta
  1. Ejemplo de respuesta de creación de tarea
{
    "status_code": 200,
    "request_id": "4fb3050f-de57-4a24-84ff-e37ee5xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": null,
        "audio": null,
        "task_id": "127ec645-118f-4884-955d-0eba8dxxxxxx",
        "task_status": "PENDING"
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "characters": 0
    }
}
  1. Ejemplo de respuesta de consulta de resultado de tarea

    La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{
    "status_code": 200,
    "request_id": "b2a7fab4-5e00-4b0a-86fe-8b9964xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxxx.png?Expires=xxxxxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "audio": null,
        "task_id": "127ec645-118f-4884-955d-0eba8xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-01-09 17:52:04.136",
        "scheduled_time": "2026-01-09 17:52:04.164",
        "end_time": "2026-01-09 17:52:25.408",
        "finished": true
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "characters": 0,
        "size": "1376*768",
        "total_tokens": 0,
        "image_count": 1
    }
}

Las estadísticas de salida se devuelven en el campo de nivel superior usage, al mismo nivel que output. Léase como response.usage["image_count"]. El objeto output del resultado de una tarea asíncrona no contiene estadísticas: response.output.usage se devuelve como {} y no contiene image_count.

Salida de texto e imagen intercalados

Síncrono (solo streaming)

Ejemplo de solicitud
import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message

# Singapore region URL. Base URLs differ by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If environment variable is not configured, replace the next line with: api_key="sk-xxx"
# API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

def sync_call_with_stream():
    print("\n========== Synchronous call - Streaming text-image output ==========")

    image_message = Message(
        role="user",
        content=[
            {
                "text": "Give me a three-image tutorial for stir-fried pork with chili peppers"
            }
        ]
    )

    image_stream_res = ImageGeneration.call(
        model="wan2.6-image",
        api_key=api_key,
        messages=[image_message],
        stream=True,  # Streaming only
        negative_prompt="",
        enable_interleave=True,
        max_images=3,
        size="1280*1280"
    )

    print("Streaming output results:")
    for stream_res in image_stream_res:
        print(stream_res)

if __name__ == "__main__":
    sync_call_with_stream()
Ejemplo de respuesta

La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{"status_code": 200, "request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "code": "", "message": "", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "Chili"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 0, "characters": 0, "total_tokens": 28, "image_count": 0, "size": "0*0"}}
{"status_code": 200, "request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "code": "", "message": "", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "Stir-fry"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 1, "characters": 0, "total_tokens": 29, "image_count": 0, "size": "0*0"}}
{"status_code": 200, "request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "code": "", "message": "", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "Pork"}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 2, "characters": 0, "total_tokens": 30, "image_count": 0, "size": "0*0"}}

......

{"status_code": 200, "request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "code": "", "message": "", "output": {"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": [{"type": "text", "text": "."}]}}], "audio": null, "finished": false}, "usage": {"input_tokens": 28, "output_tokens": 398, "characters": 0, "total_tokens": 426, "image_count": 2, "size": "1280*1280"}}
{"status_code": 200, "request_id": "5b98e8f3-aeff-4c20-a26c-499a7525axxx", "code": "", "message": "", "output": {"text": null, "finish_reason": "stop", "choices": [{"finish_reason": "stop", "message": {"role": "assistant", "content": [{"type": "image", "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}], "audio": null, "finished": true}, "usage": {"input_tokens": 28, "output_tokens": 523, "characters": 0, "total_tokens": 551, "image_count": 3, "size": "1280*1280"}}

Asíncrono

Ejemplo de solicitud

Nota: Las llamadas asíncronas no requieren el parámetro stream

import os
import dashscope
from dashscope.aigc.image_generation import ImageGeneration
from dashscope.api_entities.dashscope_response import Message
from http import HTTPStatus

# Singapore region URL. Base URLs differ by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If environment variable is not configured, replace the next line with: api_key="sk-xxx"
# API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

def main():
    """Asynchronous call - Text-image output"""
    print("========== wan2.6-image Asynchronous call - Text-image output ==========")

    image_message = Message(
        role="user",
        content=[
            {
                "text": "Give me a three-image tutorial for stir-fried pork with chili peppers"
            }
        ]
    )

    # Create asynchronous task
    print("---async call, creating task----")
    response = ImageGeneration.async_call(
        model="wan2.6-image",
        api_key=api_key,
        messages=[image_message],
        # Asynchronous calls do not require stream parameter
        negative_prompt="",
        enable_interleave=True,
        max_images=3,
        size="1280*1280"
    )

    if response.status_code == HTTPStatus.OK:
        print(f"Task created successfully:")
        print(response)

        # Wait for task completion
        print("\n---waiting for task completion----")
        status = ImageGeneration.wait(task=response, api_key=api_key)

        if status.output.task_status == "SUCCEEDED":
            print("Task completed!")
            print(f"Results:")
            print(status)
        else:
            print(f"Task failed, status: {status.output.task_status}")
    else:
        print(f"Task creation failed: {response.code} - {response.message}")

if __name__ == "__main__":
    try:
        main()
    except Exception as e:
        print(f"Execution error: {str(e)}")
        import traceback
        traceback.print_exc()
Ejemplo de respuesta
  1. Ejemplo de respuesta de creación de tarea
{
    "status_code": 200,
    "request_id": "4fb3050f-de57-4a24-84ff-e37ee5xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": null,
        "audio": null,
        "task_id": "5c67585e-a3be-4943-b04d-c3fbb2xxxxxx",
        "task_status": "PENDING"
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "characters": 0
    }
}
  1. Ejemplo de respuesta de consulta de resultado de tarea

    La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{
    "status_code": 200,
    "request_id": "997a759b-fbb9-4b35-9a4d-6dab1xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "text": null,
        "finish_reason": null,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "text": "Stir-fried pork with chili peppers is a classic Hunan dish and a beloved home-cooked favorite for many. Known for its fresh spiciness and tender meat, it's simple to prepare yet delivers an exceptional flavor experience. Today, we'll learn how to make this dish.\n\nFirst, preparing all ingredients is the key to success. Fresh pork, red and green chili peppers, garlic cloves, and ginger slices are essential. Slice the pork thinly, cut the chilies into segments, and mince the garlic and ginger.",
                            "type": "text"
                        },
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        },
                        {
                            "text": "Next comes the crucial stir-frying step. Heat oil in a wok over high heat. Add minced garlic and ginger to release their aroma, then add the sliced pork. Quickly stir-fry until the pork changes color. Once fragrant, add the chili segments and continue stir-frying to fully release the chili aroma, perfectly blending with the pork's tenderness.",
                            "type": "text"
                        },
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        },
                        {
                            "text": "Finally, season with light soy sauce, dark soy sauce, oyster sauce, and a pinch of sugar. Stir-fry quickly until evenly coated. Cook until the sauce thickens slightly, then turn off the heat and serve. Your delicious, aromatic stir-fried pork with chili peppers is ready!",
                            "type": "text"
                        },
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "audio": null,
        "task_id": "5c67585e-a3be-4943-b04d-c3fbb2xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-01-16 17:47:39.469",
        "scheduled_time": "2026-01-16 17:47:39.804",
        "end_time": "2026-01-16 17:49:46.736",
        "finished": true
    },
    "usage": {
        "input_tokens": 29,
        "output_tokens": 477,
        "characters": 0,
        "size": "1280*1280",
        "total_tokens": 506,
        "image_count": 3
    }
}

Las estadísticas de salida se devuelven en el campo de nivel superior usage, al mismo nivel que output. Léase como response.usage["image_count"], donde image_count es el número total de imágenes generadas por la tarea. El objeto output no contiene estadísticas: response.output.usage se devuelve como {} y no contiene image_count.

DashScope Java SDK

Los parámetros del SDK se alinean con la interfaz HTTP, encapsulados según las convenciones de cada lenguaje.

El SDK gestiona las llamadas asíncronas internamente y admite tanto la invocación síncrona como la asíncrona.

La duración real depende de la longitud de la cola y la carga del servicio.

ImportanteRequiere DashScope Java SDK versión 2.22.6 o posterior.

base_url y la clave API no son intercambiables entre regiones. Ejemplos para la región Singapore:

Singapore

https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

EE. UU. (Virginia)

https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1

China (Beijing)

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1

Al realizar la llamada, reemplace {WorkspaceId} con su ID de espacio de trabajo real.

Germany (Frankfurt)

https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1

Reemplace {WorkspaceId} con su ID de espacio de trabajo real.

El ámbito de implementación global (región de Frankfurt) solo admite llamadas asíncronas.

Edición de imágenes

Síncrono

Ejemplo de solicitud
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.Arrays;
import java.util.Collections;

/**
 * wan2.6-image Image editing - Synchronous call example
 */
public class Main {

    static {
        // Singapore region URL. Base URLs differ by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If environment variable is not configured, replace the next line with: apiKey="sk-xxx"
    // API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void basicCall() throws ApiException, NoApiKeyException, UploadFileException {
        // Build multi-image input message
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Arrays.asList(
                        // Supports multi-image input; provide multiple reference images
                        Collections.singletonMap("text", "Generate a tomato and egg stir-fry based on the style of image 1 and the background of image 2"),
                        Collections.singletonMap("image", "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"),
                        Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp")
                )).build();

        // Image editing uses standard synchronous call; no need to set stream or enable_interleave
        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.6-image")
                .messages(Collections.singletonList(message))
                .n(1)
                .size("1K")
                .negativePrompt("")
                .promptExtend(true)
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult result = null;
        try {
            System.out.println("---sync call for image editing, wait a moment----");
            result = imageGeneration.call(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            basicCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
    }
}
Ejemplo de respuesta

La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{
    "requestId": "b148327e-830f-414c-a8df-724dec28exxx",
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "total_tokens": 0,
        "image_count": 1,
        "size": "1376*768"
    },
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "finished": true
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Asíncrono

Ejemplo de solicitud
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.Arrays;
import java.util.Collections;

/**
 * wan2.6-image Image editing - Asynchronous call example
 */
public class Main {

    static {
        // Singapore region URL. Base URLs differ by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If environment variable is not configured, replace the next line with: apiKey="sk-xxx"
    // API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void asyncCall() throws ApiException, NoApiKeyException, UploadFileException {
        // Build multi-image input message
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Arrays.asList(
                        // Supports multi-image input; provide multiple reference images
                        Collections.singletonMap("text", "Generate a tomato and egg stir-fry based on the style of image 1 and the background of image 2"),
                        Collections.singletonMap("image", "https://cdn.wanx.aliyuncs.com/tmp/pressure/umbrella1.png"),
                        Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i3/O1CN01SfG4J41UYn9WNt4X1_!!6000000002530-49-tps-1696-960.webp")
                )).build();

        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.6-image")
                .n(1)
                .size("1K")
                .negativePrompt("")
                .promptExtend(true)
                .messages(Arrays.asList(message))
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult result = null;
        try {
            System.out.println("---async call for image editing, creating task----");
            result = imageGeneration.asyncCall(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        System.out.println("Task creation result:");
        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();
        // Wait for task completion
        waitTask(taskId);
    }

    public static void waitTask(String taskId) throws ApiException, NoApiKeyException {
        ImageGeneration imageGeneration = new ImageGeneration();
        System.out.println("\n---waiting for task completion----");
        ImageGenerationResult result = imageGeneration.wait(taskId, apiKey);
        System.out.println("Task completion result:");
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            asyncCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
    }
}
Ejemplo de respuesta
  1. Ejemplo de respuesta de creación de tarea
{
    "status_code": 200,
    "request_id": "9cd85950-2e26-4b2c-b562-1694cf928xxx",
    "code": "",
    "message": "",
    "output": {
        "task_id": "4c861fbe-af89-4a2f-8fc5-4bb15c313xxx",
        "task_status": "PENDING"
    },
    "usage": null
}
  1. Ejemplo de respuesta de consulta de resultado de tarea

    La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{
    "status_code": 200,
    "request_id": "cbdf1424-306e-4a52-82f3-8bf5d8a99xxx",
    "code": "",
    "message": "",
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "task_id": "4c861fbe-af89-4a2f-8fc5-4bb15c3139ba",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-01-16 16:36:06.556",
        "scheduled_time": "2026-01-16 16:36:06.591",
        "end_time": "2026-01-16 16:36:25.190",
        "finished": true
    },
    "usage": {
        "input_tokens": 0,
        "output_tokens": 0,
        "size": "1376*768",
        "total_tokens": 0,
        "image_count": 1
    }
}

Salida de texto e imagen intercalados

Llamada síncrona (solo streaming)

Ejemplo de solicitud
import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import io.reactivex.Flowable;

import java.util.Collections;

/**
 * wan2.6-image Text-image output - Streaming call example
 */
public class Main {

    static {
        // Singapore region URL. Base URLs differ by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If environment variable is not configured, replace the next line with: apiKey="sk-xxx"
    // API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Collections.singletonList(
                        Collections.singletonMap("text", "Give me a three-image tutorial for stir-fried pork with chili peppers")
                )).build();

        // Text-image output requires streaming call
        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.6-image")
                .messages(Collections.singletonList(message))
                .stream(true) // Must enable streaming output
                .enableInterleave(true)
                .size("1280*1280")
                .negativePrompt("")
                .maxImages(3)
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        try {
            System.out.println("---stream call for image interleave----");
            Flowable<ImageGenerationResult> resultFlowable = imageGeneration.streamCall(param);
            resultFlowable.blockingForEach(result -> {
                System.out.println(JsonUtils.toJson(result));
            });
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
    }

    public static void main(String[] args) {
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Ejemplo de respuesta

La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":0,"total_tokens":28,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"Chili"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":1,"total_tokens":29,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"stir-fry"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":2,"total_tokens":30,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"pork"}]}}],"finished":false},"status_code":200,"code":"","message":""}

......

{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":73,"total_tokens":101,"image_count":0,"size":"0*0"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"."}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":198,"total_tokens":226,"image_count":1,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"image","image":"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":199,"total_tokens":227,"image_count":1,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"Next"}]}}],"finished":false},"status_code":200,"code":"","message":""}

......

{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":245,"total_tokens":273,"image_count":1,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"."}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":368,"total_tokens":396,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"image","image":"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":369,"total_tokens":397,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"Finally"}]}}],"finished":false},"status_code":200,"code":"","message":""}

......

{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":416,"total_tokens":444,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"pot"}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":417,"total_tokens":445,"image_count":2,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"null","message":{"role":"assistant","content":[{"type":"text","text":"."}]}}],"finished":false},"status_code":200,"code":"","message":""}
{"requestId":"12c7432c-8028-4289-a97c-4e22df98bxxx","usage":{"input_tokens":28,"output_tokens":541,"total_tokens":569,"image_count":3,"size":"1280*1280"},"output":{"choices":[{"finish_reason":"stop","message":{"role":"assistant","content":[{"type":"image","image":"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx"}]}}],"finished":true},"status_code":200,"code":"","message":""}

Llamada asíncrona

Ejemplo de solicitud

Nota: Las llamadas asíncronas no requieren el parámetro stream

import com.alibaba.dashscope.aigc.imagegeneration.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.Collections;

/**
 * wan2.6-image Text-image output - Asynchronous call example
 */
public class Main {

    static {
        // Singapore region URL. Base URLs differ by region.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If environment variable is not configured, replace the next line with: apiKey="sk-xxx"
    // API keys differ by region. Get API key: https://www.alibabacloud.com/help/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    public static void asyncCall() throws ApiException, NoApiKeyException, UploadFileException {
        ImageGenerationMessage message = ImageGenerationMessage.builder()
                .role("user")
                .content(Collections.singletonList(
                        Collections.singletonMap("text", "Give me a three-image tutorial for stir-fried pork with chili peppers")
                )).build();

        ImageGenerationParam param = ImageGenerationParam.builder()
                .apiKey(apiKey)
                .model("wan2.6-image")
                .size("1280*1280")
                .enableInterleave(true)
                .maxImages(3)
                .negativePrompt("")
                .messages(Collections.singletonList(message))
                .build();

        ImageGeneration imageGeneration = new ImageGeneration();
        ImageGenerationResult result = null;
        try {
            System.out.println("---async call for image interleave, creating task----");
            result = imageGeneration.asyncCall(param);
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            throw new RuntimeException(e.getMessage());
        }
        System.out.println("Task creation result:");
        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();
        // Wait for task completion
        waitTask(taskId);
    }

    public static void waitTask(String taskId) throws ApiException, NoApiKeyException {
        ImageGeneration imageGeneration = new ImageGeneration();
        System.out.println("\n---waiting for task completion----");
        ImageGenerationResult result = imageGeneration.wait(taskId, apiKey);
        System.out.println("Task completion result:");
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        try {
            asyncCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
    }
}
Ejemplo de respuesta
  1. Ejemplo de respuesta de creación de tarea
{
    "requestId": "7d6c5760-334b-48c4-9b1e-08ee9c7fexxx",
    "output": {
        "task_id": "1bb9d9fa-bf1a-43dc-b5fe-366c1dc70xxx",
        "task_status": "PENDING"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}
  1. Ejemplo de respuesta de consulta de resultado de tarea

    La URL caduca después de 24 horas. Descargue las imágenes oportunamente.

{
    "requestId": "6ed62b00-2225-4fc3-8ee3-2aed0b484xxx",
    "usage": {
        "input_tokens": 29,
        "output_tokens": 471,
        "total_tokens": 500,
        "image_count": 3,
        "size": "1280*1280"
    },
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "text": "Stir-fried pork with chili peppers is a classic Hunan dish and a beloved home-cooked favorite for many. Known for its fresh spiciness and tender meat, it's simple to prepare yet delivers an exceptional flavor experience. Today, we'll learn how to make this dish.\n\nFirst, preparing all ingredients is the key to success. Fresh pork, red and green chili peppers, garlic cloves, and ginger slices are essential. Slice the pork thinly, cut the chilies into segments, and mince the garlic and ginger.",
                            "type": "text"
                        },
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        },
                        {
                            "text": "Next, marinate the pork. Place the sliced pork in a bowl, add a little light soy sauce, cooking wine, starch, and cooking oil. Mix well by hand and marinate for 10 to 15 minutes. This treatment makes the pork slices more tender and flavorful.",
                            "type": "text"
                        },
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        },
                        {
                            "text": "Finally, heat oil in a wok over high heat. Add the marinated pork slices and quickly stir-fry until they change color, then remove and set aside. Leave some oil in the wok, add minced garlic and ginger to release their aroma, then add chili segments and stir-fry until fragrant. Add the pork back in, season with light soy sauce, dark soy sauce, a pinch of sugar, and oyster sauce. Stir-fry quickly until evenly coated, sprinkle with chopped scallions, and serve.",
                            "type": "text"
                        },
                        {
                            "image": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expires=xxx",
                            "type": "image"
                        }
                    ]
                }
            }
        ],
        "task_id": "1bb9d9fa-bf1a-43dc-b5fe-366c1dc70836",
        "task_status": "SUCCEEDED",
        "finished": true,
        "submit_time": "2026-01-16 18:26:32.082",
        "scheduled_time": "2026-01-16 18:26:32.133",
        "end_time": "2026-01-16 18:28:41.748"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Limitaciones

  • Validez de datos: La tarea task_id y la imagen url se conservan solo durante 24 horas. Después de este período, no se pueden consultar ni descargar.
  • Moderación de contenido: Tanto el prompt de entrada como la imagen de salida pasan por moderación de contenido. El contenido no conforme devuelve un error IPInfringementSuspect o DataInspectionFailed. Consulte Códigos de error.

Facturación y limitación de tasa

  • Cuotas gratuitas y precios: Precios de modelos.
  • Para los límites de tasa del modelo, consulte Wanxiang.
  • Se le cobra por cada imagen generada exitosamente. Las llamadas fallidas no generan cargos ni consumen cuota gratuita.

Códigos de error

Si la llamada al modelo falla y devuelve un mensaje de error, consulte Códigos de error para su resolución.

FAQ

P: ¿Cómo puedo ver los costos de inferencia y el volumen de llamadas de un modelo?

R: Consulte Consulta de facturas y gestión de costos.

P: ¿Por qué no puedo ejecutar los ejemplos de código?

R: Actualice su SDK a la versión más reciente. Instalar SDK.