POST /videos/generations

Live
Crea un trabajo de vídeo asíncrono.
Abrir en ChatGPT
(opens in new tab)
Última verificación: 2026-09-08

Endpoint

POST /videos/generations
Crea un trabajo de vídeo asíncrono. La Base URL es https://api.modelrush.ai/v1.

Petición

Campos: model y los campos obligatorios de operations.input_schema. Wan 3 exige duration, resolution, ratio y audio; mode selecciona text-to-video (prompt), image-to-video (first_frame y last_frame opcional) o reference-to-video (reference_images/reference_videos/reference_audios). Wan 3 acepta prompt_extend (booleano, true por defecto). Otros modelos usan sus propios campos image, video, media o LoRA; los contratos no son intercambiables. Envía Authorization: Bearer $MODELRUSH_API_KEY en las rutas autenticadas y Content-Type: application/json en los cuerpos JSON.

Respuesta

Campos: HTTP 202 con id, status=queued, model, modelrush_region y poll_url. Sigue poll_url; el endpoint de estado de vídeo termina con completed o failed y devuelve video_url al completarse. Conserva los identificadores de petición o de generación devueltos. Las salidas generadas y sus referencias de archivo en el proveedor se eliminan de la base de datos de ModelRush 24 horas después de completarse la petición; descarga lo que necesites conservar.

Errores

Las entradas no válidas devuelven una respuesta 4xx con un error estructurado. Un 403 con adult_attestation_required, portrait_rights_attestation_required o person_rights_confirmation_required debe resolverlo la persona titular de la cuenta y nunca debe reintentarse automáticamente. Reintenta los 429 según Retry-After; reintenta los fallos 5xx solo con una política de retroceso acotada.

Referencias de las API de modelos Spicy

Abre la página del modelo para consultar parámetros y precios actuales. Las cuatro páginas de Wan 3 incluyen una sección API debajo del Playground. GET /v1/models ofrece los esquemas y el acceso permitido a tu clave; GET /api/model-pricing devuelve precios públicos sin autenticación; con una clave API Bearer válida, devuelve los precios aplicables a esa cuenta.
Modelo y referencia de la APIID del modeloEndpoint
Wan 3 Spicymodelrush/wan3-spicyPOST /v1/videos/generations
Wan 3 Pro Spicymodelrush/wan3-pro-spicyPOST /v1/videos/generations
Wan 3 Prime Spicymodelrush/wan3-prime-spicyPOST /v1/videos/generations
Wan 3 Prime Pro Spicymodelrush/wan3-prime-pro-spicyPOST /v1/videos/generations
Wan 2.7 I2V Spicymodelrush/wan2.7-i2v-spicyPOST /v1/videos/generations
Wan 2.2 I2V Spicymodelrush/wan2.2-i2v-spicyPOST /v1/videos/generations
Wan Animate Spicymodelrush/wan-animatePOST /v1/videos/generations
FlashVSR Spicymodelrush/flashvsrPOST /v1/videos/generations
GET /v1/videos/generations/:id termina con completed o failed y devuelve video_url al completarse. GET /v1/predictions/:id usa succeeded y outputs. Sigue el contrato del poll_url utilizado. Los vídeos de referencia y de salida de Wan 3 no pueden superar 30 segundos en total. Los cuatro niveles Wan 3 Spicy aceptan prompt_extend (booleano, true por defecto). LoRA admite tres listas opcionales de pesos, 480P/720P y 5/8 segundos. Wan Animate y FlashVSR usan el endpoint de vídeo con medios de origen. En FlashVSR, duration debe coincidir con la duración del vídeo de entrada redondeada al segundo entero más cercano (mínimo 1); si no, la solicitud falla con video_duration_mismatch (o video_duration_unverified si no se puede leer el vídeo) antes de cualquier cargo.
Todos los modelos Spicy requieren confirmación de acceso para adultos en la cuenta y una clave con permiso para el modelo y la capacidad. Guarda las claves en el servidor y reutiliza Idempotency-Key donde se admita. Wan Animate también exige el presupuesto firmado y x-request-id de la documentación de vídeo.

Wan Animate: confirma un presupuesto firmado antes de enviar

En solicitudes nuevas de modelrush/wan-animate, elimina duration. El servidor mide el vídeo de referencia: debe durar más de 0 y como máximo 30 segundos. La salida sigue esa duración; 5/8 segundos no controla su longitud. El presupuesto lee el vídeo y el precio actual sin iniciar una generación ni reservar saldo. Confirma billing.maximum_charge_cents (céntimos enteros, redondeados hacia arriba por tarea). El cobro final no puede superar ese máximo; el saldo reservado no utilizado se libera. El presupuesto dura 10 minutos. Siguen vigentes los requisitos de cuenta, acceso a medios y credenciales.
API pública: POST https://api.modelrush.ai/v1/videos/generations/quote y después POST https://api.modelrush.ai/v1/videos/generations. Usa Authorization: Bearer con una clave de servidor autorizada para el modelo. Entorno Agent: POST https://modelrush.ai/api/agent/v1/videos/generations/quote y después POST https://modelrush.ai/api/agent/v1/videos/generations. Usa la credencial Agent con media:write y un Agent run activo, no una clave de API pública. El presupuesto no cobra una generación, pero no elimina la suscripción Agent ni otros requisitos del servicio.
  1. Crea un UUID y guarda el identificador y el cuerpo JSON exacto antes del envío. Incluye model, image, video, mode (animate o replace), resolution (480P o 720P) y los valores opcionales prompt/seed/region. Omite duration.
  2. Envía ese cuerpo a la ruta de presupuesto con Content-Type: application/json y x-request-id: UUID. HTTP 200 devuelve quote_token, request_id, expires_at y billing. Comprueba request_id y muestra el máximo para su aprobación.
  3. Envía el mismo cuerpo y x-request-id a la ruta de generación correspondiente. Añade x-modelrush-video-edit-quote: quote_token. Conserva la cuenta, el Agent run cuando corresponda, la región, los bytes de los medios y la configuración. Idempotency-Key no sustituye el UUID ni la firma; cambiarlo no autoriza otra tarea con el mismo presupuesto.
  4. Guarda id y poll_url y consulta esa ruta con su credencial. El estado de vídeo usa completed/failed; prediction unificado usa succeeded/failed. No envíes otra tarea para consultar el progreso.
UUID o firma ausente/no válida: HTTP 400 video_edit_quote_required. Presupuesto vencido, medios/configuración o precio diferentes: HTTP 409 video_edit_quote_changed. No aceptes automáticamente otro máximo. Tras un rechazo definitivo del presupuesto, solicita otro con el mismo UUID y cuerpo y vuelve a confirmarlo. Si nunca intentaste el envío y venció, actualiza antes de enviar. Ante un timeout, respuesta perdida o 5xx incierto, conserva UUID, cuerpo y firma y repite exactamente la generación una vez para recuperar el resultado. Una solicitud aceptada coincidente se recupera antes de validar caducidad o medios; no reemplaces la firma vencida durante una recuperación incierta. Si persiste la duda, detente e investiga con el ID; no cambies el UUID para evitarla. HTTP 409 idempotency_conflict indica otro contenido bajo ese ID: detente. Mantén privados los presupuestos y las credenciales.
Las solicitudes ya aceptadas antes del cambio pueden recuperarse con su Idempotency-Key y cuerpo originales, incluido el antiguo duration. Se devuelve la tarea existente sin otra reserva ni cobro. Esto solo cubre tareas aceptadas coincidentes, no solicitudes nuevas sin firma, cuerpos modificados ni otro UUID. Sin una tarea aceptada conocida, migra al presupuesto firmado.
Descarga el ejemplo ejecutable Node.js. Configura MODELRUSH_API_KEY para public o MODELRUSH_AGENT_TOKEN para agent en el servidor. El archivo de estado contiene la firma privada; no lo añadas a Git. quote nunca envía una generación. Sustituye MAX_CENTS por el entero mostrado solo después de aprobarlo. submit/recover pueden reservar saldo e iniciar una tarea de pago; hacen una solicitud, sin reintentos automáticos. refresh conserva UUID/cuerpo y exige otra revisión; úsalo antes del primer envío o tras un video_edit_quote_changed definitivo.
sh
curl --fail --output wan-animate-quoted-request.mjs https://modelrush.ai/examples/wan-animate-quoted-request.mjs
cat > wan-animate-body.json <<'JSON'
{"model":"modelrush/wan-animate","image":"https://YOUR_HOST/character.png","video":"https://YOUR_HOST/reference.mp4","mode":"animate","resolution":"480P"}
JSON
node wan-animate-quoted-request.mjs quote wan-animate-state.json wan-animate-body.json public
node wan-animate-quoted-request.mjs submit wan-animate-state.json MAX_CENTS
# recover: same saved UUID, body and token; no new task ID
node wan-animate-quoted-request.mjs recover wan-animate-state.json MAX_CENTS
# refresh: review the returned maximum again before submit
node wan-animate-quoted-request.mjs refresh wan-animate-state.json
# Agent: use a separate state file and MODELRUSH_AGENT_TOKEN
node wan-animate-quoted-request.mjs quote wan-animate-agent-state.json wan-animate-body.json agent