Vídeos de 30s, más de 50 referencias. Pruébalo ahora

SeeGen AI API

Bienvenido a la API de SeeGen AI: una sola API para generar vídeo cinematográfico e imágenes de alta fidelidad con múltiples modelos líderes.

Descripción general

SeeGen AI es una API de generación unificada: un conjunto consistente de endpoints para ejecutar varios de los principales modelos de IA de vídeo e imagen. Elige un modelo con el parámetro model — la autenticación, el envío de tareas, el sondeo de estado y los webhooks funcionan igual en todos ellos.

Modelos disponibles actualmente:

  • Vídeo — Seedance 2.0 Pro (sd2), Seedance 2.0 Fast (sd2-fast), Seedance 2.0 Mini (sd2-mini), Seedance 2.5 (sd2.5), HappyHorse 1.1 (happyhorse)
  • Imagen — GPT Image 2 (gpt-image-2), Nano Banana 2 (nano-banana-2), Nano Banana Pro (nano-banana-pro), Seedream 5.0 Lite (seedream-v5.0-lite), Seedream 5.0 Pro (seedream-v5.0-pro)

URL base: https://seegen.ai/api/v1

Modelo: pasa cualquiera de los alias anteriores en el campo model (por ejemplo, sd2, gpt-image-2).

¿Por qué SeeGen AI?

Más razones para elegir SeeGen AI:

  • Más que Seedance 2.0: HappyHorse 1.1, Nano Banana, ChatGPT Image y más.
  • Sin suscripción — paga solo por lo que uses
  • Acceso rápido a los modelos más recientes
  • Soporte al cliente 24/7
  • Soporte para consultas oficiales relacionadas con los modelos
  • Acceso a la consola para desarrolladores
  • Abierto tanto a empresas como a usuarios individuales

Precios

40% OFF

API Pack

$500$833

125,000 créditos ($0.004/crédito)

~781 vídeos de 5s

40% OFF

API-XL Pack

$2,000$3,332

500,000 créditos ($0.004/crédito)

~3,125 vídeos de 5s

Seedance 2.0 / Fast / Mini / 2.5: cálculo del coste

Sea out = output_seconds e in = la suma de ⌈duration⌉ de cada vídeo de entrada (cada uno redondeado hacia arriba, con un mínimo de out × 2/3). Seedance 2.5 sigue el mismo cálculo que Seedance 2.0. La tarifa base de cada modelo correspondiente se multiplica por 1.5 y se redondea antes de aplicar la fórmula de la tarea (1080P es nativo en sd2.5, 2.5× su tarifa de 720P); los complementos de escalado independientes del modelo se mantienen en +30 / +40 créditos por segundo de salida para 2K / 4K (+20 para 1080P solo en sd2-fast / sd2-mini).

Sin entrada de vídeoCon entrada de vídeo
sd2.5: 480P30 × out23 × (out + in)
sd2.5: 720P60 × out45 × (out + in)
sd2.5: 1080P (nativo)150 × out113 × (out + in)
sd2.5: 2K(60 + 30) × out45 × (out + in) + 30 × out
sd2.5: 4K(60 + 40) × out45 × (out + in) + 40 × out
sd2-pro: 480P20 × out15 × (out + in)
sd2-pro: 720P40 × out30 × (out + in)
sd2-pro: 1080P (nativo)100 × out75 × (out + in)
sd2-pro: 2K(40 + 30) × out30 × (out + in) + 30 × out
sd2-pro: 4K (nativo)200 × out150 × (out + in)
sd2-fast: 480P16 × out12 × (out + in)
sd2-fast: 720P32 × out24 × (out + in)
sd2-fast: 1080P(32 + 20) × out24 × (out + in) + 20 × out
sd2-fast: 2K(32 + 30) × out24 × (out + in) + 30 × out
sd2-fast: 4K(32 + 40) × out24 × (out + in) + 40 × out
sd2-mini: 480P10 × out7.5 × (out + in)
sd2-mini: 720P20 × out15 × (out + in)
sd2-mini: 1080P(20 + 20) × out15 × (out + in) + 20 × out
sd2-mini: 2K(20 + 30) × out15 × (out + in) + 30 × out
sd2-mini: 4K(20 + 40) × out15 × (out + in) + 40 × out

Nota: sd2-pro en 1080P y 4K es salida nativa oficial (4K = 5× la tarifa de 720P); sd2-pro en 2K y todo sd2-fast / sd2-mini en 1080P/2K/4K son escalados por SeeGen AI. sd2.5 genera de forma nativa en 480P/720P/1080P (1080P = 2.5× la tarifa de 720P, sin recargo de escalado) y usa escalado automático para 2K/4K. Solicita cualquier nivel con outputResolution: "4k" (por ejemplo, "2k" / "4k"; el gateway elige automáticamente entre nativo y escalado — solo cambian el precio y la etiqueta Native). sd2-mini cuesta el 50% de sd2-pro, el nivel más económico. Seedance 2.5 usa el mismo redondeo de duración por vídeo, el mínimo de duración de entrada y el cálculo de escalado que Seedance 2.0. La tarifa base de cada modelo correspondiente se multiplica por 1.5 y se redondea antes del cálculo de la tarea (por ejemplo, 1080P con vídeo: 75 × 1.5 → 113). Los complementos de escalado 2K / 4K, independientes del modelo, se mantienen en +30 / +40 créditos por segundo de salida. Si el escalado falla, la tarea completada devuelve el resultado de reserva en 720P sin reembolso parcial de créditos.

  • sd2.5 480P, salida de 4 segundos sin vídeo de entrada: 120 créditos
  • sd2.5 720P, salida de 5 segundos sin vídeo de entrada: 300 créditos
  • sd2.5 720P, salida de 5 segundos + vídeo de entrada de 3 segundos (mínimo de entrada de 4 segundos): 405 créditos
  • sd2.5 1080P nativo, salida de 5 segundos sin vídeo de entrada: 750 créditos
  • sd2.5 1080P nativo, salida de 5 segundos + vídeo de entrada de 5 segundos: 1,130 créditos

happyhorse: créditos por segundo

SalidaCréditos/segEjemplo de 5s
720P32160
1080P60300
2K32 + 30310
4K32 + 40360

Nota: el escalado 2K / 4K se añade sobre la base de 720P (no se combina con el nativo 1080P). t2v / i2v / r2v comparten la misma tarifa por segundo: las imágenes de referencia no se facturan.

🎉 Oferta por tiempo limitado: 33% de descuento en toda la generación de imágenes — todos los precios de imagen que aparecen abajo ya incluyen el descuento.

gpt-image-2: créditos por imagen

ResoluciónCalidad mediaCalidad alta
1k10154770
2k (predeterminado)233584125
4k4060154230

Cada tarea genera 1 imagen. Envía N tareas para obtener N variantes. Las tareas fallidas reembolsan los créditos automáticamente.

nano-banana-2 y nano-banana-pro: créditos por imagen

Resoluciónnano-banana-2nano-banana-pro
1k20304060
2k (predeterminado)30454060
4k477074110

Cada tarea genera 1 imagen. Envía N tareas para obtener N variantes. Las tareas fallidas reembolsan los créditos automáticamente.

Seedream 5.0: créditos por imagen

Modelo / nivelCréditos
Lite 2k / 4k (tarifa plana)710
Pro 1k (predeterminado)1015
Pro 2k2030

Cada tarea genera 1 imagen. Envía N tareas para obtener N variantes. Las tareas fallidas reembolsan los créditos automáticamente. Las imágenes de referencia no se facturan por separado.

Consulta tu saldo: GET /api/v1/account/credits

Autenticación

Todas las solicitudes a la API requieren un token Bearer en la cabecera Authorization. Puedes crear y gestionar tus claves de API desde Configuración de la cuenta.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://seegen.ai/api/v1/account/credits

Importante: tu clave de API solo se muestra una vez, en el momento de crearla. Guárdala de forma segura. Puedes crear hasta 10 claves de API por cuenta.

Guía rápida

Genera un vídeo en dos pasos: crea una tarea y luego consulta el resultado.

# 1. Create a text-to-video task
TASK_ID=$(curl -s -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A golden retriever running on the beach at sunset",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask | jq -r '.taskId')

echo "Task created: $TASK_ID"

# 2. Poll for result
while true; do
  RESULT=$(curl -s -H "Authorization: Bearer $API_KEY" \
    "https://seegen.ai/api/v1/jobs/queryTask?taskId=$TASK_ID")
  STATUS=$(echo $RESULT | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

Endpoints

POST/api/v1/jobs/createTask

Crea una nueva tarea de generación de vídeo

GET/api/v1/jobs/queryTask

Consulta el estado y el resultado de una tarea

GET/api/v1/account/credits

Consulta tu saldo de créditos

POST/api/v1/assets/upload

Sube un recurso (imagen/vídeo/audio) para su revisión

GET/api/v1/assets/status

Consulta el estado de revisión de un recurso

GET/api/v1/assets/list

Enumera tus recursos subidos

POST/api/v1/upscale/create

Envía una tarea independiente de escalado de vídeo (720p / 1080p / 2K / 4K)

GET/api/v1/upscale/query

Consulta el estado y el resultado de una tarea de escalado independiente

Elegir un modelo (vídeo)

Dos familias de modelos generan vídeo. Elige según el modo y el precio; combina con la sección Precios para estimar el coste.

ModeloT2VI2VFirst–LastMulti-RefR2V1080p nativo4K nativoAudio720p / 5s
sd2.5escalado300 créditos
sd2200 créditos
sd2-fastescaladoescalado160 créditos
sd2-miniescaladoescalado100 créditos
happyhorseescalado160 créditos

T2V = Texto a vídeo · I2V = Imagen a vídeo (primer fotograma) · First–Last = primer + último fotograma clave · Multi-Ref = referencias mixtas de imagen / vídeo / audio · R2V = 1–9 imágenes de referencia con marcadores de personaje

Seedance 2.0 / 2.0 Fast / 2.0 Mini / Seedance 2.5

Texto a vídeo

Genera un vídeo a partir de un prompt de texto. No se requieren imágenes.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "prompt": "A futuristic city with flying cars at night, neon lights reflecting on wet streets",
      "duration": "5s",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParámetroTipoObligatorioDescripción
promptstringDescripción de texto del vídeo que se va a generar. Máximo 20000 caracteres.
durationstringNoDuración del vídeo: de "4s" a "15s"; sd2.5 admite hasta "30s" (por defecto: "5s")
resolutionstringNoRelación de aspecto mediante resolution. Opciones: auto (por defecto), 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstringNoNivel de resolución de salida: "480p", "720p" (por defecto), "1080p", "2k" o "4k". Las resoluciones nativas varían según el modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast y Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Los niveles superiores se escalan automáticamente.
seedintNoSemilla de reproducibilidad: -1 u omitir para aleatorio; 0–2147483647 para un valor fijo.
generateAudiobooleanNoSi se debe sintetizar una pista de audio sincronizada. Por defecto es true; pasa false para un vídeo sin sonido.

Imagen a vídeo

Anima una imagen estática convirtiéndola en un vídeo. Proporciona una URL de imagen como fotograma inicial.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": ["https://example.com/photo.jpg"],  // or "asset://asset-20260326-abc123"
      "prompt": "The woman slowly turns her head and smiles",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParámetroTipoObligatorioDescripción
urlsstring[]Array con una URL de imagen (el fotograma de origen). Admite tanto URLs HTTP como referencias de recursos (por ejemplo, "asset://asset-20260326-abc123")
promptstringNoDescripción de texto del movimiento deseado
durationstringNoDuración del vídeo: de "4s" a "15s"; sd2.5 admite hasta "30s" (por defecto: "5s")
outputResolutionstringNoNivel de resolución de salida: "480p", "720p" (por defecto), "1080p", "2k" o "4k". Las resoluciones nativas varían según el modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast y Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Los niveles superiores se escalan automáticamente.
seedintNoSemilla de reproducibilidad: -1 u omitir para aleatorio; 0–2147483647 para un valor fijo.
generateAudiobooleanNoSi se debe sintetizar una pista de audio sincronizada. Por defecto es true; pasa false para un vídeo sin sonido.

Primer y último fotograma

Define el fotograma inicial y el final, y el modelo genera la transición entre ambos. Usa videoInputMode: "keyframe".

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/first-frame.jpg",
        "https://example.com/last-frame.jpg"
      ],
      "prompt": "Smooth camera transition from day to night",
      "duration": "5s",
      "videoInputMode": "keyframe"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParámetroTipoObligatorioDescripción
urlsstring[]Array con exactamente 2 URLs de imagen: [first_frame, last_frame]. Admite tanto URLs HTTP como referencias de recursos (por ejemplo, "asset://asset-20260326-abc123")
videoInputModestringDebe ser "keyframe"
promptstringNoDescripción de texto que guía la transición
durationstringNoDuración del vídeo: de "4s" a "15s"; sd2.5 admite hasta "30s" (por defecto: "5s")
outputResolutionstringNoNivel de resolución de salida: "480p", "720p" (por defecto), "1080p", "2k" o "4k". Las resoluciones nativas varían según el modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast y Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Los niveles superiores se escalan automáticamente.
seedintNoSemilla de reproducibilidad: -1 u omitir para aleatorio; 0–2147483647 para un valor fijo.
generateAudiobooleanNoSi se debe sintetizar una pista de audio sincronizada. Por defecto es true; pasa false para un vídeo sin sonido.

Multi-Referencia

Usa varias imágenes, vídeos y archivos de audio de referencia para guiar la generación. Usa videoInputMode: "reference". En sd2.5 esta es la subtarea de referencia por defecto; consulta Edición y extensión de vídeo más abajo para editar o continuar un vídeo existente.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "inputs": {
      "urls": [
        "https://example.com/ref1.jpg",
        "https://example.com/ref2.jpg"
      ],
      "videoUrls": ["asset://asset-motion-video"],
      "audioUrls": ["https://example.com/audio.mp3"],
      "prompt": "Character walks through a garden",
      "duration": "5s",
      "videoInputMode": "reference",
      "resolution": "1280x720"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParámetroTipoObligatorioDescripción
urlsstring[]NoURLs de imágenes de referencia (máx. 9). Admite tanto URLs HTTP como referencias de recursos (por ejemplo, "asset://asset-20260326-abc123")
videoUrlsstring[]NoURIs asset:// de vídeos de referencia — primero súbelos con /api/v1/assets/upload; las URLs externas se rechazan. sd2: máx. 3 vídeos, cada uno ≤15s. sd2.5: hasta 10 vídeos, cada uno de 2–30s y ≤200MB, duración total de referencia ≤30s, admite entradas de 480p a 4K.
audioUrlsstring[]NoEntradas de audio de referencia. sd2 / sd2-fast / sd2-mini: hasta 3 archivos de audio, cada uno de 2–15s, total ≤15s — el audio no puede ser la única referencia en estos modelos (añade al menos una imagen o un vídeo). sd2.5: hasta 10 archivos, ≤15MB y 2–30s cada uno, total ≤30s, y se admite la entrada solo de audio.
videoInputModestringDebe ser "reference"
promptstringNoDescripción de texto
durationstringNoDuración del vídeo: de "4s" a "15s"; sd2.5 admite hasta "30s" (por defecto: "5s")
resolutionstringObligatorio en modo de referencia. Opciones: 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540
outputResolutionstringNoNivel de resolución de salida: "480p", "720p" (por defecto), "1080p", "2k" o "4k". Las resoluciones nativas varían según el modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast y Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Los niveles superiores se escalan automáticamente.
seedintNoSemilla de reproducibilidad: -1 u omitir para aleatorio; 0–2147483647 para un valor fijo.
generateAudiobooleanNoSi se debe sintetizar una pista de audio sincronizada. Por defecto es true; pasa false para un vídeo sin sonido.

Restricciones de referencia

  • Máximo 9 imágenes, 3 vídeos, 3 archivos de audio
  • Máximo 12 archivos en total entre todos los tipos
  • Cada vídeo/audio debe durar ≤ 15 segundos
  • Las imágenes deben tener al menos 400px en el lado más corto
  • sd2.5: máx. 30 imágenes, 10 vídeos, 10 archivos de audio, y 50 en total; los totales de vídeo y audio son cada uno ≤ 30 segundos

Edición y extensión de vídeo

sd2.5 divide la generación basada en referencias en tres subtareas. Omite mode para la generación de referencia habitual, define mode: "edit" para editar un vídeo existente, o mode: "extend" para continuarlo. Ambas requieren al menos un vídeo en videoUrls y siempre generan la salida con la relación de aspecto del vídeo de origen.

Coloca el vídeo que quieres modificar en primer lugar dentro de videoUrls y refiérete a él como "Video 1" en tu prompt. edit obliga a que la duración de salida coincida con ese primer vídeo (de origen), que debe durar entre 4 y 30s, por lo que se ignora cualquier duration que envíes; la facturación usa la duración del vídeo de origen como duración de salida, más todos los vídeos de referencia como entrada. extend acepta de 1 a 3 clips unidos en orden, y el duration que solicites es la duración de salida de esta generación (sin relación con la duración de origen), facturado como una generación de referencia normal.

Los modelos de la familia 2.0 (sd2 / sd2-fast / sd2-mini) también admiten mode: "edit" y mode: "extend": infieren la operación a partir de tu prompt (describe explícitamente la edición o continuación), la relación de aspecto sigue al vídeo de origen, y duration sigue bajo tu control con la facturación habitual.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2.5",
    "inputs": {
      "mode": "edit",
      "videoUrls": ["asset://asset-source-video"],
      "urls": ["https://example.com/annotation-at-1.2s.png"],
      "source_frame_timestamps_ms": [1200],
      "prompt": "Replace the marked object with a red umbrella",
      "outputResolution": "720p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask
ParámetroTipoObligatorioDescripción
modestringNo"edit" o "extend". Omite para la generación de referencia habitual.
videoUrlsstring[]Al menos un vídeo; el primero es el de origen ("Video 1") — la duración de salida y la facturación de la edición dependen de él. Los vídeos posteriores son referencias adicionales (edit) o clips adicionales unidos en orden (extend, máx. 3).
urlsstring[]NoImágenes opcionales de anotación/referencia.
source_frame_timestamps_msnumber[]NoSolo con mode "edit". Una marca de tiempo no negativa del vídeo de origen, en milisegundos, por cada imagen en urls.
outputResolutionstringNoNivel de resolución de salida: "480p", "720p" (por defecto), "1080p", "2k" o "4k". Las resoluciones nativas varían según el modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast y Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Los niveles superiores se escalan automáticamente.

Referencia de parámetros de Seedance

Referencia completa de todos los parámetros de inputs para los modelos sd2 / sd2-fast / sd2-mini / sd2.5.

ParámetroTipoObligatorioDescripción
promptstringNoDescripción de texto (obligatoria para texto a vídeo, opcional en otros modos). Máximo 20000 caracteres.
urlsstring[]NoURLs de imagen. Admite tanto URLs HTTP como referencias de recursos (por ejemplo, "asset://asset-20260326-abc123"). Se asigna internamente a uploadedUrls.
videoUrlsstring[]NoURIs asset:// de vídeos de referencia (solo modo de referencia). Deben subirse primero con /api/v1/assets/upload — las URLs externas se rechazan.
audioUrlsstring[]NoURLs de audio de referencia (solo modo de referencia). La entrada solo de audio se admite en sd2.5; sd2 / sd2-fast / sd2-mini requieren al menos una imagen o un vídeo junto con el audio.
durationstringNoDe "4s" a "15s" normalmente; sd2.5 admite hasta "30s". Por defecto: "5s"
resolutionstringNoRelación de aspecto: auto (por defecto) | 720x720 | 720x960 | 960x720 | 1280x720 | 720x1280 | 1280x540
outputResolutionstringNoNivel de resolución de salida: "480p", "720p" (por defecto), "1080p", "2k" o "4k". Las resoluciones nativas varían según el modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast y Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Los niveles superiores se escalan automáticamente.
videoInputModestringNo"keyframe" (por defecto) o "reference"
modestringNoSubtarea de modo de referencia (todos los modelos Seedance): omite para la generación de referencia habitual, "edit" para editar el primer vídeo en videoUrls, "extend" para continuar de 1 a 3 clips. Consulta Edición y extensión de vídeo.
source_frame_timestamps_msnumber[]NoSolo para la edición de vídeo de sd2.5: una marca de tiempo en milisegundos, no negativa, por cada imagen de anotación.
seedintNoSemilla aleatoria para reproducibilidad. -1 u omitir para aleatoria en el servidor. La misma semilla + las mismas entradas producen un resultado muy similar (no idéntico a nivel de bits, debido a la no determinación de la GPU). Rango: -1 a 2147483647.
generateAudiobooleanNoSi se debe sintetizar una pista de audio (voz, efectos de sonido, música de fondo) sincronizada con el vídeo. Por defecto es true. Ponlo en false para producir un vídeo sin sonido — ligeramente más rápido, útil si planeas doblarlo por separado.
bitrateModestringNoNivel de bitrate de salida a la misma resolución: "standard" (por defecto) o "high". "high" conserva más detalle y reduce el banding/bloqueo a costa de un tamaño de archivo ~3-5× mayor — no cambia la resolución ni el precio.
upscaleResolutionstringNo(Obsoleto) Campo dividido heredado, aceptado por compatibilidad con versiones anteriores. Las integraciones nuevas deben usar outputResolution, que ahora acepta "2k" / "4k" directamente. Si se envían ambos, upscaleResolution tiene prioridad — excepto en modelos con 1080p nativo (Seedance2 Pro / Seedance 2.5), donde upscaleResolution:"1080p" se resuelve como 1080p nativo (facturado a la tarifa nativa).

Campos de nivel superior de la solicitud: model (obligatorio), inputs (obligatorio), callBackUrl (URL de webhook opcional).

Recursos

Los recursos son archivos de imagen, vídeo y audio que pasan por un proceso de revisión antes de poder usarse en tareas de generación de vídeo. Sube un recurso, espera a que pase a ACTIVE y luego usa su URL asset:// en tus tareas.

Nota: los recursos de imagen y vídeo con personas reales requieren revisión oficial, que normalmente se completa en cuestión de segundos. Una vez aprobados, pueden usarse directamente como referencias. Sin revisión, la generación puede fallar.

Subir recurso

Hay dos formas de subir: enviar un archivo local directamente (multipart/form-data) o enviar una URL HTTPS de acceso público. En ambos casos, el recurso se procesa y revisa automáticamente.

Método A: subida de archivo directa (multipart/form-data)

Envía un archivo local sin necesidad de alojar la imagen en otro sitio. El tipo de medio se detecta a partir de los bytes del archivo (no se confía en la extensión del nombre). Permitidos: imágenes (jpg/png/webp/gif/bmp/tiff/heic), vídeos (mp4/mov), audio (wav/mp3). Máximo 50MB por archivo (imagen ≤30MB, vídeo ≤50MB, audio ≤15MB).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@/path/to/photo.jpg" \
  -F "name=my-photo" \
  https://seegen.ai/api/v1/assets/upload
ParámetroTipoObligatorioDescripción
filefileEl archivo local (campo del formulario multipart). El tipo de medio se detecta a partir del contenido.
namestringNoNombre del recurso (máx. 64 caracteres)

Método B: por URL (application/json)

Si el archivo ya está alojado en una URL HTTPS pública.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/photo.jpg",
    "type": "IMAGE",
    "name": "my-photo"
  }' \
  https://seegen.ai/api/v1/assets/upload
ParámetroTipoObligatorioDescripción
urlstringURL HTTPS de acceso público del archivo que se va a subir
typestring"IMAGE", "AUDIO" o "VIDEO"
namestringNoNombre del recurso (máx. 64 caracteres)

Respuesta de subida

{
  "assetId": 123,
  "volcAssetId": "asset-20260326-abc123",
  "type": "IMAGE",
  "status": "PROCESSING",
  "failReason": null,
  "url": "https://example.com/photo.jpg",
  "name": "my-photo",
  "createdAt": 1711234567890
}

Consultar estado del recurso

Consulta el estado de revisión de un recurso. Cuando el estado es PROCESSING, el endpoint comprueba automáticamente si hay actualizaciones del sistema de revisión.

# Query by asset ID (numeric)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=123"

# Query by volcAssetId (string)
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/status?assetId=asset-20260326-abc123"

Valores de estado del recurso

  • PROCESSINGen revisión, aún no utilizable
  • ACTIVErevisión aprobada, listo para usarse en tareas
  • FAILEDrevisión fallida, consulta failReason

Listar recursos

Enumera tus recursos subidos, con filtrado opcional por tipo y estado. Admite paginación basada en cursor.

# List all assets
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list"

# Filter by type and status
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?type=IMAGE&status=ACTIVE&limit=10"

# Paginate with cursor
curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/assets/list?cursor=100&limit=20"
ParámetroTipoObligatorioDescripción
typestringNoFiltrar por tipo: "IMAGE", "AUDIO" o "VIDEO"
statusstringNoFiltrar por estado: "NONE", "PROCESSING", "ACTIVE" o "FAILED"
cursornumberNoCursor para paginación (usa nextCursor de la respuesta anterior)
limitnumberNoElementos por página, 1-50 (por defecto: 20)

Respuesta de listado

{
  "items": [
    {
      "assetId": 123,
      "volcAssetId": "asset-20260326-abc123",
      "type": "IMAGE",
      "status": "ACTIVE",
      "failReason": null,
      "url": "https://example.com/photo.jpg",
      "name": "my-photo",
      "width": 1920,
      "height": 1080,
      "size": 245000,
      "duration": null,
      "createdAt": 1711234567890
    }
  ],
  "nextCursor": 122
}

Uso de recursos en tareas

Una vez que un recurso está ACTIVE, usa su volcAssetId con el protocolo asset:// en las URLs de tu tarea:

{
  "model": "sd2",
  "inputs": {
    "urls": ["asset://asset-20260326-abc123"],
    "prompt": "The person slowly looks up and smiles",
    "duration": "5s"
  }
}

HappyHorse 1.1 (Alibaba)

Un modelo alternativo de generación de vídeo de Alibaba DashScope. Admite tres modos: texto a vídeo, imagen a vídeo con primer fotograma, y referencia a vídeo (1–9 imágenes de referencia fusionadas por prompt; haz referencia a los sujetos con character1, character2, … en el prompt). HappyHorse 1.1 no admite último fotograma, vídeo de referencia ni audio de referencia. Nombre del modelo: happyhorse.

No requiere revisión de recursos — puedes usar URLs de imagen HTTPS públicas directamente, o pasar referencias asset:// de la biblioteca de recursos (se resuelven automáticamente a la URL R2 original).

Texto a vídeo

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "prompt": "A panda DJ at a beach party, smoky sunset",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Imagen a vídeo (primer fotograma)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "urls": ["https://example.com/panda.jpg"],
      "prompt": "The panda blinks and smiles",
      "duration": "5s",
      "outputResolution": "1080p"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Referencia a vídeo (1–9 imágenes de referencia)

Pasa videoWorkflowTab: "multi-reference" con 1–9 URLs de imágenes de referencia para fusionar varios sujetos en una sola salida. Haz referencia a cada imagen en el prompt con character1, character2, … (siguiendo el orden de urls). La relación de aspecto se controla con el campo ratio (no hay un primer fotograma del que derivarla).

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "inputs": {
      "videoWorkflowTab": "multi-reference",
      "urls": [
        "https://example.com/character.jpg",
        "https://example.com/folding-fan.jpg",
        "https://example.com/earrings.jpg"
      ],
      "prompt": "A woman in red character1 opening folding fan character2, with tassel earrings character3 swinging",
      "duration": "5s",
      "outputResolution": "720p",
      "ratio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Referencia de parámetros de HappyHorse

Referencia completa de todos los parámetros de inputs para el modelo happyhorse.

ParámetroTipoObligatorioDescripción
promptstringNoDescripción de texto. Obligatoria para texto a vídeo y referencia a vídeo; opcional para imagen a vídeo. Máximo 5000 caracteres no CJK o 2500 caracteres CJK (el sistema ascendente trunca automáticamente el exceso). En r2v, usa character1/character2/… para referirte a la imagen de referencia N-ésima.
urlsstring[]Not2v: omitir. i2v: exactamente 1 URL (se usa como primer fotograma). r2v: 1–9 URLs. Admite URLs HTTPS públicas y referencias de recursos (por ejemplo, "asset://asset-20260326-abc123").
videoWorkflowTabstringNoEstablece "multi-reference" para activar el modo de referencia a vídeo (debe combinarse con 1 o más urls). Omite para texto a vídeo / imagen a vídeo.
durationstringNoDe "3s" a "15s" (por defecto "5s").
outputResolutionstringNo"720p" (por defecto) o "1080p".
ratiostringNo"16:9" / "9:16" / "1:1" / "4:3" / "3:4". Se usa para texto a vídeo y referencia a vídeo — la relación de aspecto de imagen a vídeo se infiere del primer fotograma.
seedintNoDe 0 a 2147483647. Déjalo en blanco para una semilla aleatoria.

Requisitos de imagen (i2v / r2v)

  • Lado más corto ≥ 300px
  • Relación de aspecto entre 1:2.5 y 2.5:1
  • Formatos: JPEG, JPG, PNG, BMP, WEBP
  • Tamaño máximo de archivo 10MB por imagen (r2v: cada una de las 1–9 entradas)

Elegir un modelo (imagen)

Los modelos de imagen toman un prompt (y opcionalmente imágenes de referencia) y devuelven una imagen por tarea. Cada solicitud se factura por imagen según el nivel del modelo seleccionado (o una tarifa fija para Seedream Lite). Las tareas fallidas se reembolsan automáticamente. No hay parámetro de lote — para generar varias variantes, llama a createTask una vez por imagen.

ModeloT2II2I (Edición)Multi-RefResolución máxima2k / medium
gpt-image-2hasta 104kver Precios
nano-banana-2hasta 104kver Precios
nano-banana-prohasta 104kver Precios
seedream-v5.0-litehasta 104ktarifa plana
seedream-v5.0-prohasta 102kver Precios

GPT Image 2

El modelo GPT Image 2 de OpenAI para edición de texto a imagen e imagen a imagen de alta calidad. Un único flujo de trabajo gestiona ambos modos — pasa urls para cambiar automáticamente al modo de edición. La salida se entrega mediante R2 en el formato que solicites (PNG / JPEG / WEBP). Nombre del modelo: gpt-image-2.

Texto a imagen

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "quality": "medium",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Imagen a imagen (edición)

Pasa de 1 a 10 imágenes de referencia mediante urls. El modelo las usará como contexto visual para la edición descrita en prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "quality": "medium",
      "resolution": "1k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Referencia de parámetros de GPT Image 2

Referencia completa de todos los parámetros de inputs para el modelo gpt-image-2.

ParámetroTipoObligatorioDescripción
promptstringDescripción de texto de la imagen a generar, o la edición a aplicar cuando se proporciona urls.
urlsstring[]NoURLs de imágenes de referencia para el modo imagen a imagen (edición) (1–10 imágenes). Omite para texto a imagen. Se aceptan URLs HTTPS públicas.
qualitystringNo"medium" / "high". Por defecto: "medium". Los créditos varían según el nivel (ver Precios).
resolutionstringNo"1k" / "2k" / "4k". Por defecto: "2k". Los créditos varían según el nivel (ver Precios).
aspectRatiostringNo"1:1" / "16:9" / "9:16" / "4:3" / "3:4". Por defecto: "1:1".
outputFormatstringNo"png" / "jpeg" / "webp". Por defecto: "png".

Requisitos de la imagen de entrada (modo imagen a imagen)

  • Hasta 10 imágenes de referencia por tarea
  • Tamaño máximo de archivo 50 MB por imagen
  • Lado más corto ≥ 256px
  • Relación de aspecto entre 1:3 y 3:1
  • Formatos: JPEG, JPG, PNG, WEBP

Los créditos por imagen varían según la resolución y la calidad — consulta la tabla completa en la sección Precios.

Nano Banana 2

Nano Banana 2 es un modelo de imagen de alta fidelidad con mayor cobertura de relaciones de aspecto que gpt-image-2 — añade preajustes vertical/horizontal (3:2, 2:3, 4:5, 5:4) y el formato cinematográfico 21:9. Un único flujo de trabajo gestiona ambos modos — pasa urls para cambiar automáticamente al modo de edición. Nombre del modelo: nano-banana-2.

Texto a imagen

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Imagen a imagen (edición)

Pasa de 1 a 10 imágenes de referencia mediante urls. El modelo las usará como contexto visual para la edición descrita en prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-2",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Referencia de parámetros de Nano Banana 2

Referencia completa de todos los parámetros de inputs para el modelo nano-banana-2.

ParámetroTipoObligatorioDescripción
promptstringDescripción de texto de la imagen a generar, o la edición a aplicar cuando se proporciona urls.
urlsstring[]NoURLs de imágenes de referencia para el modo imagen a imagen (edición) (1–10 imágenes). Omite para texto a imagen. Se aceptan URLs HTTPS públicas.
resolutionstringNo"1k" / "2k" / "4k". Por defecto: "2k". Los créditos varían según el nivel (ver Precios).
aspectRatiostringNo"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". Por defecto: "1:1".

Requisitos de la imagen de entrada (modo imagen a imagen)

  • Hasta 10 imágenes de referencia por tarea
  • Tamaño máximo de archivo 50 MB por imagen
  • Lado más corto ≥ 256px
  • Relación de aspecto entre 1:3 y 3:1
  • Formatos: JPEG, JPG, PNG, WEBP

Los créditos por imagen varían según la resolución — consulta la tabla completa en la sección Precios.

Nano Banana Pro

Nano Banana Pro es un modelo de imagen de alta fidelidad con mayor cobertura de relaciones de aspecto que gpt-image-2 — añade preajustes vertical/horizontal (3:2, 2:3, 4:5, 5:4) y el formato cinematográfico 21:9. Un único flujo de trabajo gestiona ambos modos — pasa urls para cambiar automáticamente al modo de edición. Nombre del modelo: nano-banana-pro.

Texto a imagen

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
      "resolution": "2k",
      "aspectRatio": "16:9"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Imagen a imagen (edición)

Pasa de 1 a 10 imágenes de referencia mediante urls. El modelo las usará como contexto visual para la edición descrita en prompt.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "inputs": {
      "urls": ["https://example.com/portrait.jpg"],
      "prompt": "Restyle as oil painting",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Referencia de parámetros de Nano Banana Pro

Referencia completa de todos los parámetros de inputs para el modelo nano-banana-pro.

ParámetroTipoObligatorioDescripción
promptstringDescripción de texto de la imagen a generar, o la edición a aplicar cuando se proporciona urls.
urlsstring[]NoURLs de imágenes de referencia para el modo imagen a imagen (edición) (1–10 imágenes). Omite para texto a imagen. Se aceptan URLs HTTPS públicas.
resolutionstringNo"1k" / "2k" / "4k". Por defecto: "2k". Los créditos varían según el nivel (ver Precios).
aspectRatiostringNo"1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". Por defecto: "1:1".

Requisitos de la imagen de entrada (modo imagen a imagen)

  • Hasta 10 imágenes de referencia por tarea
  • Tamaño máximo de archivo 50 MB por imagen
  • Lado más corto ≥ 256px
  • Relación de aspecto entre 1:3 y 3:1
  • Formatos: JPEG, JPG, PNG, WEBP

Los créditos por imagen varían según la resolución — consulta la tabla completa en la sección Precios.

Seedream 5.0 Lite

Generación rápida de texto a imagen e imagen a imagen en 2K o 4K con 15 relaciones de aspecto. Nombre del modelo: seedream-v5.0-lite.

Texto a imagen

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "A cinematic product photograph, soft studio light",
      "resolution": "2k",
      "aspectRatio": "1:1"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Imagen a imagen (edición)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-lite",
    "inputs": {
      "prompt": "Restyle the references as a premium fashion campaign",
      "urls": ["https://example.com/reference.png"],
      "resolution": "4k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Parámetros de Seedream 5.0 Lite

ParámetroTipoObligatorioDescripción
promptstringDescripción de la imagen o instrucción de edición.
urlsstring[]No1–10 URLs HTTPS públicas de imágenes de referencia. Omite para texto a imagen.
resolutionstringNo"2k" o "4k". Por defecto: "2k".
aspectRatiostringNo"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", o "21:9".

Seedream 5.0 Pro

Generación y edición de alta fidelidad en 1K o 2K. Nombre del modelo: seedream-v5.0-pro.

Texto a imagen

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Editorial portrait with dramatic rim lighting",
      "resolution": "2k",
      "aspectRatio": "3:4"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Imagen a imagen (edición)

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-v5.0-pro",
    "inputs": {
      "prompt": "Turn the reference into a cinematic poster",
      "urls": ["https://example.com/reference.png"],
      "resolution": "2k",
      "aspectRatio": "1:2"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Parámetros de Seedream 5.0 Pro

ParámetroTipoObligatorioDescripción
promptstringDescripción de la imagen o instrucción de edición.
urlsstring[]No1–10 URLs HTTPS públicas de imágenes de referencia. Omite para texto a imagen.
resolutionstringNo"1k" o "2k". Por defecto: "1k". 4k no se admite.
aspectRatiostringNo"1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", o "21:9".

Escalador de vídeo

Crear tarea

POST /api/v1/upscale/create

# source.url accepts ANY https video URL — your own CDN, OR a file you first
# uploaded to us via /api/v1/assets/upload (pass the r2Url it returns). No need
# to declare which: we detect it. External URLs are validated; our own are trusted.
curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": { "type": "url", "url": "https://your-cdn.com/video.mp4" },
    "targetResolution": "2k",
    "callBackUrl": "https://your-server.com/webhook"
  }' \
  https://seegen.ai/api/v1/upscale/create
ParámetroTipoObligatorioDescripción
source.typestringUsa "url" para cualquier fuente. ("uploadId" es un alias heredado que se mantiene por compatibilidad con versiones anteriores.)
source.urlstringNoCon type="url". Cualquier URL de vídeo https — tu propia CDN, o el r2Url devuelto por /api/v1/assets/upload. En el caso de URLs externas, se rechazan http y las IPs privadas/internas (protección SSRF); las URLs de nuestro propio host de recursos omiten esa comprobación.
source.r2UrlstringNoHeredado — solo con type="uploadId" (compatibilidad con versiones anteriores). Las integraciones nuevas deben usar type="url".
targetResolutionstring"720p", "1080p", "2k" o "4k". Debe ser superior a la resolución de origen.
callBackUrlstringNoURL de webhook invocada una vez al alcanzar el estado final (completado o fallido).

Respuesta de creación

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "orderId": "ord_2026...",
  "status": "validating"
}

Consultar estado

GET /api/v1/upscale/query?taskId=...

El estado avanza validatingprocessingcompleted / failed.

curl -H "Authorization: Bearer $API_KEY" \
  "https://seegen.ai/api/v1/upscale/query?taskId=n770mo4sh6rpi690ff3gwymx"

Respuesta de finalización

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "completed",
  "targetResolution": "2k",
  "creditsConsumed": 900,
  "result": {
    "url": "https://static.seegen.ai/standalone-upscale/results/...mp4",
    "probedDurationSeconds": 30,
    "probedSourceResolution": "1280x720"
  },
  "error": null,
  "createdAt": "2026-04-29T01:23:45.000Z",
  "finishedAt": "2026-04-29T01:35:01.000Z"
}

Respuesta de fallo

{
  "taskId": "n770mo4sh6rpi690ff3gwymx",
  "status": "failed",
  "creditsConsumed": null,
  "result": null,
  "error": {
    "code": "SOURCE_RESOLUTION_TOO_HIGH",
    "message": "Source 3840x2160 is not below target 4k"
  }
}

Límites

  • Fuente: URL https o tu URL R2 subida anteriormente
  • Duración de hasta 600 s (los clips de menos de 5 s se facturan como 5 s)
  • Tamaño de archivo ≤ 200 MB
  • Formato: MP4 / MOV / WebM
  • La resolución de origen debe ser inferior a la de destino

Precios

  • 720P: 17 créditos/seg (5s = 85, 30s = 510)
  • 1080P: 25 créditos/seg (5s = 125, 30s = 750)
  • 2K: 38 créditos/seg (5s = 190, 30s = 1140)
  • 4K: 50 créditos/seg (5s = 250, 30s = 1500)
  • Mínimo de 5 segundos; los fallos reembolsan los créditos automáticamente

Códigos de error

Errores comunes sobre los que puedes actuar. Otros fallos devuelven un campo message autoexplicativo — léelo antes de asumir que el código es uno de estos.

CódigoSignificado
INVALID_URLLa URL tiene un formato incorrecto o no es https
URL_NOT_REACHABLENo se pudo obtener la URL — comprueba que sea pública y accesible
UNSUPPORTED_MEDIA_TYPEEl archivo no es un vídeo, o no está en formato MP4 / MOV / WebM
FILE_TOO_LARGELa fuente supera los 200 MB
DURATION_EXCEEDS_LIMITLa fuente dura más de 600 s
SOURCE_RESOLUTION_TOO_HIGHLa fuente ya está en o por encima del destino — elige un destino más alto
INSUFFICIENT_CREDITSCréditos insuficientes — recarga y vuelve a intentarlo

Callback de webhook

En lugar de hacer polling, puedes proporcionar una callBackUrl para recibir los resultados automáticamente cuando una tarea se completa o falla.

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sd2",
    "callBackUrl": "https://your-server.com/webhook/callback",
    "inputs": {
      "prompt": "A cat playing piano",
      "duration": "5s"
    }
  }' \
  https://seegen.ai/api/v1/jobs/createTask

Payload del callback

Cuando la tarea finaliza, enviamos una solicitud POST a tu URL con el mismo formato que la respuesta de queryTask:

// POST to your callBackUrl
{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",
  "creditsUsed": 200,
  "output": [
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

Política de reintentos: si tu endpoint devuelve un estado que no sea 2xx, reintentamos hasta 3 veces con retrasos crecientes (1s, 5s, 30s).

Formato de respuesta

Respuesta de createTask

// 200 OK
{ "taskId": "task_abc123" }

Respuesta de queryTask

{
  "taskId": "task_abc123",
  "model": "sd2",
  "status": "COMPLETED",     // "PENDING" | "PROCESSING" | "COMPLETED" | "FAILED"
  "creditsUsed": 200,
  "output": [                // null when status is not "COMPLETED"
    {
      "url": "https://static.seegen.ai/videos/result.mp4",
      "width": 1280,
      "height": 720
    }
  ],
  "error": null,             // error message when status is "FAILED"
  "createTime": 1711234567890,
  "completeTime": 1711234612345
}

Respuesta de credits

{
  "credits": 5000,
  "availableCredits": 4800
}

Manejo de errores

Código de estadoSignificadoAcción
400Parámetros no válidosRevisa el mensaje de error y corrige tu solicitud
401Clave de API no válida o ausenteRevisa el formato de tu cabecera Authorization
402Créditos insuficientesCompra más créditos en seegen.ai
403Acceso denegadoSolo puedes consultar tus propias tareas
404Tarea no encontradaVerifica que el taskId sea correcto
429Límite de concurrencia (3 tareas)Espera a que finalicen las tareas existentes
500Error interno del servidorVuelve a intentarlo después de unos segundos

Validación previa al envío (400 con un código)

Las solicitudes de Seedance se verifican contra el contrato ascendente antes de cobrar cualquier crédito. Cuando una verificación falla, createTask devuelve { "message": "...", "code": "..." } con HTTP 400 y no se crea ninguna tarea. El mensaje indica exactamente qué límite se superó y cómo solucionarlo.

ParámetroTipoObligatorioDescripción
EMPTY_CONTENTcodeNoNo hay prompt ni imagen/vídeo/audio de referencia.
AUDIO_ONLY_NOT_SUPPORTEDcodeNoEl audio es la única referencia en sd2 / sd2-fast / sd2-mini. Añade una imagen o un vídeo, o usa sd2.5 (admite solo audio).
DURATION_OUT_OF_RANGEcodeNoduration no es un entero dentro del rango del modelo (familia sd2 "4s"–"15s", sd2.5 "4s"–"30s").
EDIT_SOURCE_VIDEO_REQUIRED / EXTEND_SOURCE_VIDEO_REQUIREDcodeNoSe solicitó mode "edit" / "extend" sin un vídeo en videoUrls.
EDIT_SOURCE_DURATION_INVALIDcodeNoEdición de vídeo de sd2.5: un vídeo de la solicitud dura menos de 4s o más de 30s (ARK aplica 4–30s a todos los vídeos de una tarea de edición).
TOO_MANY_REFERENCEScodeNoHay más imágenes/vídeos/clips de audio de referencia de los que admite el modelo (familia sd2 9 / 3 / 3, sd2.5 30 / 10 / 10; extend ≤3 vídeos).
REFERENCE_VIDEO_DURATION_INVALIDcodeNoUn vídeo de referencia supera el máximo por clip (familia sd2 15s, sd2.5 30s) o la duración total de referencia supera el límite (15s / 30s).
ASSET_NOT_FOUND / EXTERNAL_URL / READ_TIMEOUT / READ_FAILEDcodeNoNo se pudo resolver una entrada de videoUrls a uno de tus recursos subidos, o no se pudo leer su duración.

Ejemplos completos

Flujo de trabajo completo: sube un recurso, espera la revisión, crea una tarea con el recurso aprobado y consulta el resultado.

const API_KEY = process.env.API_KEY;
const BASE = "https://seegen.ai/api/v1";
const headers = {
  "Authorization": `Bearer ${API_KEY}`,
  "Content-Type": "application/json",
};

// 1. Upload asset and wait for review
// (To upload a LOCAL file instead of a URL, POST multipart/form-data with a "file"
//  field — no Content-Type header, no "type" — see the Upload Asset section above.)
async function uploadAndWaitForAsset(url, type = "IMAGE") {
  const res = await fetch(`${BASE}/assets/upload`, {
    method: "POST",
    headers,
    body: JSON.stringify({ url, type }),
  });
  if (!res.ok) throw new Error(`Upload failed: ${(await res.json()).message}`);
  const asset = await res.json();
  console.log(`Asset uploaded: ${asset.assetId}, status: ${asset.status}`);

  // Poll until review completes
  while (true) {
    const statusRes = await fetch(
      `${BASE}/assets/status?assetId=${asset.assetId}`,
      { headers }
    );
    const status = await statusRes.json();
    if (status.status === "ACTIVE") {
      console.log(`Asset approved: asset://${status.volcAssetId}`);
      return status.volcAssetId;
    }
    if (status.status === "FAILED") {
      throw new Error(`Asset review failed: ${status.failReason}`);
    }
    await new Promise((r) => setTimeout(r, 3000));
  }
}

// 2. Create a task
async function createTask(inputs, callBackUrl) {
  const res = await fetch(`${BASE}/jobs/createTask`, {
    method: "POST",
    headers,
    body: JSON.stringify({
      model: "sd2",
      inputs,
      ...(callBackUrl && { callBackUrl }),
    }),
  });
  if (!res.ok) throw new Error(`[${res.status}] ${(await res.json()).message}`);
  return res.json();
}

// 3. Poll until done
async function waitForResult(taskId, timeoutMs = 300000) {
  const start = Date.now();
  while (Date.now() - start < timeoutMs) {
    const res = await fetch(
      `${BASE}/jobs/queryTask?taskId=${taskId}`,
      { headers }
    );
    const result = await res.json();
    if (result.status === "COMPLETED") return result;
    if (result.status === "FAILED") throw new Error(result.error);
    await new Promise((r) => setTimeout(r, 5000));
  }
  throw new Error("Timeout waiting for task");
}

// Full workflow: upload → review → generate → result
async function main() {
  // Upload image and wait for review
  const volcAssetId = await uploadAndWaitForAsset(
    "https://example.com/photo.jpg", "IMAGE"
  );

  // Create task with approved asset
  const { taskId } = await createTask({
    urls: [`asset://${volcAssetId}`],
    prompt: "The person slowly looks up and smiles",
    duration: "5s",
  });
  console.log(`Task: ${taskId}`);

  // Wait for video
  const result = await waitForResult(taskId);
  console.log(`Video: ${result.output[0].url}`);
}

main().catch(console.error);

¿Necesitas ayuda? Únete a nuestro Discord o contáctanos