> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comfy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Usa Seedream 4.5 251128 con Comfy Router

> Llama a byteplus/seedream-4-5-251128 con Comfy Router: endpoint, forma de la solicitud y respuesta que devuelve Router.

Referencia de API para `byteplus/seedream-4-5-251128`, servida por Comfy Router desde BytePlus.

**Entrada:** Texto, Imagen · **Salida:** Imagen

## Inicio rápido

Crea una clave en [tu espacio de trabajo de Comfy](https://platform.comfy.org/profile/api-keys?onboarding=router) y expórtala como `COMFY_API_KEY`. Los fragmentos de Python y TypeScript usan los SDK de Comfy (`pip install comfy-sdk` y `npm install @comfyorg/sdk`); el fragmento de cURL es la misma llamada por HTTP directo.

**ID del modelo:** `byteplus/seedream-4-5-251128`

**Endpoint:** `POST https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128`

**Esperar el resultado**

```python Python theme={null}
from comfy_sdk import Comfy

# Lee COMFY_API_KEY del entorno.
# El SDK crea automáticamente una clave de idempotencia y la reutiliza para los reintentos automáticos.
with Comfy() as client:
    result = client.models.run(
        "byteplus/seedream-4-5-251128",
        {
            "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting",
            "response_format": "url",
            "watermark": False,
        },
    )

print(result)
```

```typescript TypeScript theme={null}
import { comfy } from "@comfyorg/sdk";

// Lee COMFY_API_KEY del entorno.
// El SDK crea automáticamente una clave de idempotencia y la reutiliza para los reintentos automáticos.
const { data } = await comfy.models.run("byteplus/seedream-4-5-251128", {
  prompt: "A red fox trotting through a snowy pine forest, cinematic lighting",
  response_format: "url",
  watermark: false,
});

console.log(data);
```

```bash cURL theme={null}
curl https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128 \
  -H "X-API-Key: $COMFY_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}"
```

**Encolar y recoger más tarde**

El mismo cuerpo, enviado a `POST https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128/requests`. Router responde `201` con un `request_id` en cuanto se admite la ejecución, y el resultado se recoge cuando está listo, desde este proceso o desde otro. [Entrega en cola](https://docs.comfy.org/es/development/comfy-router/queue.md) explica el estado, la cancelación y la recogida.

```python Python theme={null}
import asyncio
from comfy_sdk import AsyncComfy

# Lee COMFY_API_KEY del entorno.
# Cada llamada a submit() genera su propia Idempotency-Key y la reutiliza para los reintentos automáticos.
async def main():
    async with AsyncComfy() as client:
        handle = await client.models.submit(
            "byteplus/seedream-4-5-251128",
            {
                "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting",
                "response_format": "url",
                "watermark": False,
            },
        )
        print("request_id:", handle.request_id)  # junto con el ID del modelo, es todo lo que necesita otro proceso

        # Consulta hasta que la solicitud se complete, esperando el Retry-After que indica el servidor.
        async for update in handle.iter_events():
            print(update.status, update.queue_position)

        # La carga propia del proveedor, el mismo valor que devuelve models.run().
        # Una solicitud que falló o se canceló lanza aquí el error tipado de Router.
        result = await handle.get()

    print(result)

asyncio.run(main())
```

```typescript TypeScript theme={null}
import { comfy } from "@comfyorg/sdk";

// Lee COMFY_API_KEY del entorno.
// Cada llamada a submit() genera su propia Idempotency-Key y la reutiliza para los reintentos automáticos.
const handle = await comfy.models.submit("byteplus/seedream-4-5-251128", {
  prompt: "A red fox trotting through a snowy pine forest, cinematic lighting",
  response_format: "url",
  watermark: false,
});
console.log("requestId:", handle.requestId); // junto con el ID del modelo, es todo lo que necesita otro proceso

// Consulta hasta que la solicitud se complete, esperando el Retry-After que indica el servidor.
for await (const update of handle.events()) {
  console.log(update.status, update.queuePosition);
}

// El mismo resultado que devuelve models.run(). Una solicitud que falló o se canceló se rechaza aquí.
const result = await handle.get();

console.log(result.data);
```

```bash cURL theme={null}
# 1. Envía. Router responde 201 con request_id, status_url, response_url y cancel_url.
curl https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128/requests \
  -H "X-API-Key: $COMFY_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d "{\"prompt\": \"A red fox trotting through a snowy pine forest, cinematic lighting\", \"response_format\": \"url\", \"watermark\": false}"

# 2. Consulta hasta que el estado sea COMPLETED, esperando los segundos de Retry-After que indica cada respuesta.
REQUEST_ID="<request_id from the 201 body>"
curl -i https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128/requests/$REQUEST_ID/status \
  -H "X-API-Key: $COMFY_API_KEY"

# 3. Recoge el resultado. 200 con la salida nativa del modelo, 202 con el cuerpo de estado mientras aún se ejecuta.
curl https://api.comfy.org/v2/models/byteplus/seedream-4-5-251128/requests/$REQUEST_ID \
  -H "X-API-Key: $COMFY_API_KEY"
```

## Esquema

### Entrada

**guidance\_scale** `number`

Controla cuánto se ajusta la imagen de salida al prompt de entrada. Rango \[1, 10]. Los valores más altos dan como resultado una mayor adherencia al prompt. No es compatible con seedream-5.0-pro, 5.0-lite, 4.5 ni 4.0.

Rango: `1` a `10`

Formato: `float`

**image** `string | string[]`

Seedream-5.0-pro, 5.0-lite, 4.5 y 4.0 admiten este parámetro.

Introduce la codificación Base64 o una URL accesible de la imagen que quieres editar. Seedream-5.0-pro, 5.0-lite, 4.5 y 4.0 admiten introducir una sola imagen o varias imágenes (consulta el ejemplo de combinación de varias imágenes).

• URL de la imagen: Asegúrate de que la URL de la imagen sea accesible.
• Codificación Base64: el formato debe ser data:image/\<image format>;base64,\<Base64 encoding>. Nota: \<image format> debe estar en minúsculas, por ejemplo, data:image/png;base64,\<base64\_image>.

Comfy Router limita toda la solicitud JSON a 100 MiB, incluida la expansión de Base64 y todas las imágenes de referencia. Usa URLs para las entradas que superen este límite de transporte.

Una imagen de entrada debe cumplir los siguientes requisitos:
• Formato de imagen: jpeg, png (seedream-5.0-pro, 5.0-lite, 4.5 y 4.0 también admiten webp, bmp, tiff y gif; seedream-5.0-pro también admite heic y heif)
• Relación de aspecto (ancho/alto): en el rango \[1/16, 16] para seedream-5.0-pro, 5.0-lite, 4.5 y 4.0
• Ancho y alto (px): > 14
• Tamaño: no más de 10 MB (30 MB para seedream-5.0-pro)
• Píxeles totales: no más de 6000x6000 (36,000,000 px) para seedream-5.0-pro
• Máximo de 14 imágenes de referencia (10 para seedream-5.0-pro y 5.0-flash)

En el escenario de separación de capas (con layer\_decomposition habilitado), image es obligatorio y solo se admite una única imagen de entrada (si pasas varias imágenes, obtienes un error). Las imágenes de entrada deben ser png, jpeg, webp, bmp, tiff o gif (no se admiten heic ni heif), de hasta 30 MB, con píxeles totales en el rango \[512x512, 6000x6000] y relación de aspecto en \[1/16, 16].

**layer\_decomposition** `boolean` (default: false)

Controla si se habilita la separación de capas. Solo seedream-5.0-pro y 5.0-flash admiten este parámetro.
true: Modo de separación de capas. El modelo descompone la única imagen de entrada en una imagen base más varias capas (hasta 16) y devuelve la información de posición y contenido de cada capa producida, incluyendo el orden de apilamiento (z\_index), la caja delimitadora (bounding\_box), el nombre (name) y la descripción (description).
false: Modo de generación de imágenes estándar; no se realiza la separación de capas.
Notas sobre el modo de separación de capas: solo se admite una única imagen de entrada (si pasas varias imágenes, obtienes un error); si alguna capa individual no se genera, toda la solicitud falla: no se admite el éxito parcial; se devuelven como máximo 17 imágenes (1 imagen base + 16 capas). sequential\_image\_generation, sequential\_image\_generation\_options, tools y stream devuelven un error si los pasas.

**model** `string`

Identificador del modelo. Modelos admitidos: seedream-4-0-250828, seedream-4-5-251128, seedream-5-0-260128, seedream-5-0-pro-260628 y seedream-5-0-flash-260915. Una llamada directa v1 a POST /proxy/byteplus/api/v3/images/generations DEBE incluirlo: el proxy rechaza con un 400 cualquier otro valor, y también su omisión. NO está en la lista `required` de este esquema porque Comfy Router lo rellena desde el segmento de ruta `{model}` de /v2/models/byteplus/\{model}, así que quien llama desde Router lo omite.

**optimize\_prompt\_options** `object`

Configuración de la función de optimización de prompts. Solo seedream-5.0-pro/5.0-lite/4.5 (que solo admiten el modo standard) y seedream-4.0 admiten este parámetro.

**optimize\_prompt\_options.mode** `string` (default: "standard")

Establece el modo de la función de optimización de prompts. standard = Mayor calidad y mayor tiempo de generación. fast = Más rápido, pero con una calidad más promedio.

Valores posibles: `standard`, `fast`

**output\_format** `string` (default: "jpeg")

Especifica el formato de la imagen de salida. Solo seedream-5.0-pro, 5.0-flash y 5.0-lite admiten este parámetro. En el escenario de separación de capas, output\_format solo controla el formato de la imagen base; todas las capas siempre se generan como png.

Valores posibles: `png`, `jpeg`

**prompt** `string`

Descripción de texto para generar o transformar imágenes.
Opcional en el escenario de separación de capas (seedream-5.0-pro o 5.0-flash con layer\_decomposition habilitado): si proporcionas un prompt, el modelo reconoce y separa los elementos que especifiques según la intención del prompt; si no proporcionas ninguno, el modelo detecta automáticamente todos los elementos principales de la imagen y los separa en capas independientes.

**response\_format** `string` (default: "url")

Especifica el formato de la imagen generada que se devuelve en la respuesta.

Valores posibles: `url`, `b64_json`

**seed** `integer` (default: -1)

Semilla aleatoria para controlar la estocasticidad de la generación de imágenes. Rango: \[-1, 2147483647]. Si no se especifica, se generará una semilla automáticamente. Para reproducir la misma salida, usa el mismo valor de semilla.

Rango: `-1` a `2147483647`

**sequential\_image\_generation** `string`

Controla si se deshabilita la función de generación por lotes. Este parámetro solo está disponible en seedream-5.0-lite, 4.5 y 4.0 (no es compatible con seedream-5.0-pro ni 5.0-flash). Valores válidos:
auto: En modo automático, el modelo determina automáticamente si debe devolver varias imágenes y cuántas imágenes contendrá según el prompt del usuario.
disabled: Deshabilita la función de generación por lotes. El modelo solo generará una imagen.

Valores posibles: `auto`, `disabled`

**sequential\_image\_generation\_options** `object`

Solo seedream-5.0-lite, 4.5 y 4.0 admiten este parámetro (seedream-5.0-pro y 5.0-flash no lo admiten).
Configuración de la función de generación de imágenes por lote. Este parámetro solo tiene efecto cuando sequential\_image\_generation está establecido en auto.

**sequential\_image\_generation\_options.max\_images** `integer` (default: 15)

Especifica el número máximo de imágenes a generar en esta solicitud. Número de imágenes de referencia de entrada + número de imágenes generadas ≤ 15.

Rango: `1` a `15`

**size** `string`

"seedream-4-0-250828": Define la especificación de la imagen generada. Hay dos métodos disponibles, pero no se pueden usar juntos.
Método 1 | Especifica la resolución. Valores opcionales: 1K, 2K, 4K
Método 2 | Especifica el ancho y el alto en píxeles. Predeterminado: 2048x2048, píxeles totales: \[1024x1024, 4096x4096], relación de aspecto: \[1/16, 16]
"seedream-4-5-251128": Dos métodos disponibles.
Método 1 | Especifica la resolución. Valores opcionales: 2K, 4K
Método 2 | Especifica el ancho y el alto en píxeles. Predeterminado: 2048x2048, píxeles totales: \[2560x1440, 4096x4096], relación de aspecto: \[1/16, 16]
"seedream-5-0-260128": Dos métodos disponibles.
Método 1 | Especifica la resolución. Valores opcionales: 2K, 3K
Método 2 | Especifica el ancho y el alto en píxeles. Predeterminado: 2048x2048, píxeles totales: \[2560x1440, \~3072x3072], relación de aspecto: \[1/16, 16]
"seedream-5-0-pro-260628": Dos métodos disponibles (no se pueden usar juntos).
Método 1 | Especifica la resolución y describe en el prompt la relación de aspecto, la forma o el propósito de la imagen; el modelo decide el tamaño final. Valores opcionales: 1K, 2K
Método 2 | Especifica el ancho y el alto en píxeles. Predeterminado: 1024x1024, píxeles totales: \[1024x1024 (1048576), 2048x2048 (4194304)], relación de aspecto: \[1/16, 16]
"seedream-5-0-flash-260915": Dos métodos disponibles (no se pueden usar juntos).
Método 1 | Especifica la resolución y describe en el prompt la relación de aspecto, la forma o el propósito de la imagen; el modelo decide el tamaño final. Valores opcionales: 1K, 1.5K, 2K. Predeterminado: 2K
Método 2 | Especifica el ancho y el alto en píxeles. Píxeles totales: \[1280x720 (921600), 2048x2048x1.1025 (4624220)], relación de aspecto: \[1/16, 16]
"seedream-5-0-pro-260628" y "seedream-5-0-flash-260915" con layer\_decomposition habilitado: solo se admite el método basado en resolución. Valores opcionales: 1K, 1.5K, 2K, auto. Predeterminado: auto.
La imagen base se genera en la resolución especificada con la relación de aspecto de la imagen de entrada original; cada capa se genera cerca de la resolución especificada, manteniendo la relación de aspecto que tenía en la imagen original.
auto: la salida se basa en el tamaño y la relación de aspecto de la imagen de entrada. Las entradas dentro de \[1280x720, \~2048x2048] se generan con el tamaño original de entrada; las entradas menores que 1K se generan a 1K; las entradas mayores que 2K se generan a 2K.

**stream** `boolean` (default: false)

Comfy Router fija en false un indicador stream proporcionado explícitamente, porque captura un resultado JSON completo. En el proxy v1, este campo controla si se habilita el modo de salida en streaming. Solo seedream-5.0-lite, 4.5 y 4.0 admiten este parámetro (seedream-5.0-pro y 5.0-flash no lo admiten). false = Todas las imágenes de salida se devuelven a la vez. true = Cada imagen de salida se devuelve en cuanto se genera.

**watermark** `boolean` (default: true)

Especifica si se añade una marca de agua a la imagen generada. false = Sin marca de agua, true = Añade una marca de agua con la etiqueta 'AI generated'

Generado a partir del esquema que Router sirve en `GET /v2/models/byteplus/seedream-4-5-251128/openapi.json`, el mismo documento con el que valida cada llamada antes de que la solicitud llegue al proveedor.

### Salida

**created** `integer`

Marca de tiempo Unix (en segundos) que indica el momento en que se creó la solicitud

**data** `object[]`

Contiene información sobre las imágenes generadas.
En el escenario de separación de capas, el primer elemento del arreglo es la imagen base (z\_index=0), y los elementos siguientes son las capas, ordenadas por z\_index creciente.

**data\[].b64\_json** `string`

Datos de la imagen codificados en Base64 (si response\_format es "b64\_json")

**data\[].bounding\_box** `object`

La información de la caja delimitadora de la región que ocupa la capa actual dentro de la imagen base. Solo las capas devuelven este campo; la imagen base cubre todo el lienzo y no devuelve bounding\_box. Se devuelve únicamente cuando layer\_decomposition es true.

**data\[].bounding\_box.absolute** `integer[]`

Las coordenadas absolutas en píxeles de la caja delimitadora de la capa, en el sistema de coordenadas de la imagen base de salida con la esquina superior izquierda en (0, 0). Formato de coordenadas: \[left, top, right, bottom].

**data\[].bounding\_box.normalized** `integer[]`

Las coordenadas cuantizadas por mil (normalizadas) de la caja delimitadora de la capa, asignadas proporcionalmente a un rango entero discreto de \[0, 1000] según el tamaño de la imagen base, truncadas a un máximo de 1000. Formato de coordenadas: \[left, top, right, bottom].

**data\[].description** `string`

Una descripción detallada del elemento separado actual, que proporciona características de capa más ricas (como color, estado, material) que name. Solo las capas devuelven este campo; la imagen base no lo hace. Se devuelve únicamente cuando layer\_decomposition es true.

**data\[].name** `string`

El nombre/etiqueta del elemento separado actual, generado automáticamente por el modelo a partir de las características del sujeto separado. Solo las capas devuelven este campo; la imagen base no lo hace. Se devuelve únicamente cuando layer\_decomposition es true.

**data\[].output\_format** `string`

El formato de archivo de la imagen de salida. Solo seedream-5.0-pro admite este campo.

**data\[].size** `string`

El ancho y el alto de la imagen en píxeles, en el formato \<width>x\<height>. Solo seedream-5.0-pro, 5.0-lite, 4.5 y 4.0 admiten este parámetro.

**data\[].url** `string (uri)`

URL para descargar la imagen (si response\_format es "url")

Formato: `uri`

**data\[].z\_index** `integer`

El orden de apilamiento de la capa, que aumenta de abajo hacia arriba: 0 es la capa más baja (la imagen base); los valores mayores quedan más arriba. Úsalo para recomponer las capas en la imagen completa con el orden de apilamiento correcto. Se devuelve únicamente cuando layer\_decomposition es true.

**error** `object`

Información del error (si la hay)

**error.code** `string`

Código de error de ModelArk del proveedor. SensitiveContentDetected, InputTextSensitiveContentDetected, InputImageSensitiveContentDetected, InputVideoSensitiveContentDetected, InputAudioSensitiveContentDetected, OutputTextSensitiveContentDetected, OutputImageSensitiveContentDetected, OutputVideoSensitiveContentDetected y OutputAudioSensitiveContentDetected identifican rechazos por políticas de contenido. Una familia puede tener un motivo separado por puntos, como InputImageSensitiveContentDetected.PrivacyInformation, OutputVideoSensitiveContentDetected.PolicyViolation u OutputImageSensitiveContentDetected.DeepFake. Esta es una cadena abierta, no una enumeración: otros códigos describen fallos de validación y del proveedor. Router reconoce las familias de políticas en las respuestas de error HTTP 400 y en las respuestas HTTP 200 de tareas fallidas sin sobrescribir los fallos de transporte.

**error.message** `string`

Mensaje de error

**model** `string`

El ID del modelo usado para la solicitud

**usage** `object`

**usage.generated\_images** `integer`

Número de imágenes generadas por el modelo

**usage.input\_images** `integer`

El número de imágenes de entrada al modelo. Solo seedream-5.0-pro admite este campo.

**usage.output\_tokens** `integer`

El número de tokens usados para la imagen generada por el modelo.

**usage.total\_tokens** `integer`

El número total de tokens consumidos por esta solicitud.

## Ejemplos

### Entrada

```json theme={null}
{
  "prompt": "A red fox trotting through a snowy pine forest, cinematic lighting",
  "response_format": "url",
  "watermark": false
}
```

### Salida

```json theme={null}
{
  "created": 1767225600,
  "data": [
    {
      "size": "1024x1024",
      "url": "https://example.invalid/byteplus/seedream-4-0-250828/generated.png"
    }
  ],
  "model": "seedream-4-5-251128",
  "usage": {
    "generated_images": 1
  }
}
```

## Antes de lanzar

Los SDK crean una `Idempotency-Key` y la reutilizan para los reintentos automáticos. Para los reintentos manuales, reutiliza la clave original. Router puede mantener la conexión abierta hasta 10 minutos.

Cuando una solicitud falla, Router envía un encabezado de respuesta `X-Comfy-Error-Type` que explica el motivo. Un `422` significa que Router rechazó la entrada antes de llamar al proveedor, y un `413` significa que el cuerpo de la solicitud era más grande de lo que Router acepta. Descarga los recursos generados de inmediato, porque [las URL de resultados pueden caducar](https://docs.comfy.org/es/development/comfy-router/reference.md#recursos-del-resultado).

Cualquier límite de tamaño mencionado en la descripción de un campo más arriba es el límite propio del proveedor para ese campo, citado de la especificación del proveedor. Router aplica un tope aparte al cuerpo completo de la solicitud, con el que cuentan los medios codificados en base64: consulta [tamaño del cuerpo de la solicitud](https://docs.comfy.org/es/development/comfy-router/limitations.md#los-cuerpos-de-las-solicitudes-tienen-un-límite).

Esta página documenta un modelo socio al que se llama a través de Comfy Router. El mismo paquete `comfy-sdk` / `@comfyorg/sdk` también incluye un segundo cliente, para ejecutar todo un gráfico de flujo de trabajo de ComfyUI en Comfy Cloud: `Comfy(api_key=...)` / `new Comfy({ apiKey })`, con `client.workflows`, `client.assets` y `client.jobs`. Consulta [SDK de Comfy](https://docs.comfy.org/es/development/api-development/sdks.md).

> **[Encabezados](https://docs.comfy.org/es/development/comfy-router/headers.md)**
>
> Autenticación, idempotencia, IDs de solicitud, agrupaciones de errores, ritmo de reintentos y límites de gasto.

> **[Uso de la API de Router](https://docs.comfy.org/es/development/comfy-router/api.md)**
>
> Descubrimiento de modelos, errores de validación, reintentos y facturación.

> **[Limitaciones](https://docs.comfy.org/es/development/comfy-router/limitations.md)**
>
> Lo que Router no hace hoy y qué usar en su lugar.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.