Saltar al contenido

Si vienes de fal, Replicateo WaveSpeed

Cómo llevar las llamadas a Seedance 2.0 y Qwen-Image a /v1: autenticación, ids de modelo, cada campo, tareas asíncronas y webhooks, y lo que no se traslada.

Documentación de las plataformas revisada2026-10-22OpenAPIllms.txt

No es solo cambiar la URL base

En ninguna de las tres basta con cambiar la URL base y la clave. Cada solicitud también cambia en estos puntos:

  • La clave: Authorization: Bearer con una clave que empieza por sk_test_ o sk_live_.
  • El id del modelo va en el cuerpo como model, y un solo id cubre texto, primer fotograma y referencias.
  • Un encabezado Idempotency-Key en cada solicitud de generación.
  • Un límite de precio: max_credits, o un quote_id de POST /v1/quotes.
  • El resultado es una tarea: consulta GET /v1/jobs/{id} o recibe nuestro webhook firmado.
fal
La más parecida a la nuestra: la mayoría de los nombres de campo de Seedance son los de fal. Además, renombra image_urls a reference_image_urls, envía duration como número y pasa fal_webhook al cuerpo como webhook_url.
Replicate
Saca los campos de input. Además, renombra image a image_url, reference_images a reference_image_urls y webhook a webhook_url.
WaveSpeed
Además, renombra image a image_url y reference_images a reference_image_urls, y pasa standard_webhook al cuerpo como webhook_url. Lee los resultados de GET /v1/jobs/{id}.

Autenticación

Adónde van las solicitudes y cómo se autentican.

PlataformaURL baseEncabezado de autenticación
Pershothttps://api.pershot.app/v1Authorization: Bearer $API_KEY
falhttps://queue.fal.runAuthorization: Key $FAL_KEY
Replicatehttps://api.replicate.com/v1Authorization: Bearer $REPLICATE_API_TOKEN
WaveSpeedhttps://api.wavespeed.ai/api/v3Authorization: Bearer $WAVESPEED_API_KEY

El acceso a la API para desarrolladores requiere aprobación previa: pídelo en el estudio, en Claves de API. La clave se muestra una sola vez. Una clave de desarrollador gasta el saldo de la API para desarrolladores, y la misma clave sirve como encabezado Bearer en el servidor MCP.

Ids de modelo

Los de ellos van en la URL; el nuestro va en el cuerpo como model. Un solo id nuestro cubre texto, primer fotograma y referencias: deciden los campos que envías.

Ids de modelo en cada plataforma
NuestrofalReplicateWaveSpeedNotas
seedance-2.0-fastbytedance/seedance-2.0/fast/text-to-videobytedance/seedance-2.0/fast/image-to-videobytedance/seedance-2.0/fast/reference-to-videobytedance/seedance-2.0-fastbytedance/seedance-2.0-fast/text-to-videobytedance/seedance-2.0-fast/image-to-videoUn solo id para texto, primer fotograma e imágenes de referencia.
seedance-2.0-minibytedance/seedance-2.0/mini/text-to-videobytedance/seedance-2.0/mini/image-to-videobytedance/seedance-2.0/mini/reference-to-videobytedance/seedance-2.0-minibytedance/seedance-2.0-mini/text-to-videoUn solo id para texto, primer fotograma e imágenes de referencia.
qwen-image-2512fal-ai/qwen-image-2512qwen/qwen-image-2512wavespeed-ai/qwen-image/text-to-image-2512Los mismos pesos abiertos.
qwen-image-2512-lightningfal-ai/qwen-image-2512/loraningunoningunoNuestro nivel Lightning de 4 pasos. fal lo ejecuta como LoRA en su endpoint /lora; no encontramos un modelo Lightning listo para usar en Replicate ni en WaveSpeed.
qwen-image-edit-2511fal-ai/qwen-image-edit-2511qwen/qwen-image-edit-2511wavespeed-ai/qwen-image/edit-2511Los mismos pesos abiertos.
qwen-image-edit-2511-lightningfal-ai/qwen-image-edit-2511/loraningunoningunoNuestro nivel Lightning de 4 pasos. fal lo ejecuta como LoRA en su endpoint /lora; no encontramos un modelo Lightning listo para usar en Replicate ni en WaveSpeed.
Para agentes de IA
Texto plano para agentes de IA: entradas, valores admitidos, cada precio y un ejemplo de solicitudseedance-2.0-fastseedance-2.0-miniqwen-image-2512-lightningqwen-image-2512qwen-image-edit-2511-lightningqwen-image-edit-2511

Seedance 2.0, campo por campo

Nuestros nombres siguen los de fal cuando fal tiene el campo, y las notas indican dónde difieren. Los campos van en el nivel superior del cuerpo JSON; Replicate los envuelve en input.

Campos de solicitud de Seedance 2.0 en cada plataforma
NuestrofalReplicateWaveSpeedNotas
modelen la URLen la URLen la URLUn solo id en el cuerpo para texto, primer fotograma y referencias. El de ellos va en la URL.
promptpromptpromptpromptEl mismo texto sirve tal cual.
durationdurationdurationdurationUn número entero de 4 a 15, predeterminado 5. fal lo envía como cadena y ofrece auto; Replicate usa -1 para automático. Aquí no hay duración automática.
resolutionresolutionresolutionresolution480p o 720p, predeterminado 720p. WaveSpeed también ofrece 1080p y 4k; aquí las resoluciones más altas son el paso aparte enhance.
aspect_ratioaspect_ratioaspect_ratioaspect_ratio16:9, 9:16 o 1:1, predeterminado 16:9. Sin auto, adaptive, 4:3, 3:4 ni 21:9.
generate_audiogenerate_audiogenerate_audiogenerate_audioEl mismo significado, activado de forma predeterminada. El precio es el mismo, activado o desactivado.
image_urlimage_urlimageimageEl primer fotograma. Mismo nombre que en fal; Replicate y WaveSpeed lo llaman image. No se combina con imágenes de referencia.
reference_image_urlsimage_urlsreference_imagesreference_imagesHasta 9 imágenes, @image1, @image2 en el prompt. Distinto de fal, que lo llama image_urls.
seedningunoseedningunoSe acepta y no se usa: Seedance 2.0 no admite semilla. fal y WaveSpeed no lo incluyen.
quote_idningunoningunoningunoNuevo: envía exactamente uno de quote_id o max_credits. Una tarea nunca cuesta más.
max_creditsningunoningunoningunoNuevo: envía exactamente uno de quote_id o max_credits. Una tarea nunca cuesta más.
webhook_urlfal_webhookcadena de consultawebhookstandard_webhookcadena de consultaEn el cuerpo. Distinto de fal, que recibe fal_webhook en la cadena de consulta.
end_user_idend_user_idningunoningunoEl mismo nombre que en fal. Para cuentas de desarrollador aprobadas (el acceso requiere aprobación previa): tu propio id de usuario, visible en el uso.
project_idningunoningunoningunoSolo nuestro, opcional: proyectos y enrutamiento de proveedores.
shot_idningunoningunoningunoSolo nuestro, opcional: proyectos y enrutamiento de proveedores.
routing_preferenceningunoningunoningunoSolo nuestro, opcional: proyectos y enrutamiento de proveedores.
enhanceningunoningunoningunoSolo nuestro, opcional: una ampliación con IA después del render, con la etiqueta AI Enhanced.
Idempotency-KeyencabezadoningunoningunoningunoNuevo y obligatorio: la misma clave dentro de 24 horas devuelve la misma tarea.

Sus campos de Seedance sin equivalente aquí. Si se envían tal cual, se rechazan como campos desconocidos (400 invalid_request).

fal
end_image_urlvideo_urlsaudio_urlsbitrate_modecodec
Replicate
last_frame_imagereference_videosreference_audios
WaveSpeed
last_imagereference_videosreference_audiosenable_web_search

Qwen-Image, campo por campo

Nuestro cuerpo de imagen es más pequeño que el suyo: un tamaño y una relación de aspecto en lugar de píxeles libres, una imagen por tarea y sin ajustes del sampler.

Campos de solicitud de Qwen-Image en cada plataforma
NuestrofalReplicateWaveSpeedNotas
modelen la URLen la URLen la URLCuatro ids en el cuerpo: Image Mini e Image Fast, cada uno para generar y para editar.
promptpromptpromptpromptEl mismo texto sirve tal cual.
sizeimage_sizeningunosize1K o 2K, predeterminado 1K. Junto con la relación de aspecto fija un tamaño, de hasta 2048 px por lado. Sin ancho y alto libres.
aspect_ratioimage_sizeaspect_ratiosize16:9, 9:16 o 1:1, predeterminado 1:1. No cambia el precio.
image_urlimage_urlsimageimagesSolo modelos de edición: exactamente una imagen de origen, como URL. Los de ellos aceptan una lista.
seedseedseedseedEl mismo significado.
quote_idningunoningunoningunoNuevo: envía exactamente uno de quote_id o max_credits. Una tarea nunca cuesta más.
max_creditsningunoningunoningunoNuevo: envía exactamente uno de quote_id o max_credits. Una tarea nunca cuesta más.
webhook_urlfal_webhookcadena de consultawebhookstandard_webhookcadena de consultaEn el cuerpo. Distinto de fal, que recibe fal_webhook en la cadena de consulta.
end_user_idningunoningunoningunoSolo nuestro, opcional, para cuentas de desarrollador aprobadas (el acceso requiere aprobación previa): tu propio id de usuario, visible en el uso.
project_idningunoningunoningunoSolo nuestro, opcional: proyectos y enrutamiento de proveedores.
shot_idningunoningunoningunoSolo nuestro, opcional: proyectos y enrutamiento de proveedores.
routing_preferenceningunoningunoningunoSolo nuestro, opcional: proyectos y enrutamiento de proveedores.
Idempotency-KeyencabezadoningunoningunoningunoNuevo y obligatorio: la misma clave dentro de 24 horas devuelve la misma tarea.

Sus campos de Qwen-Image sin equivalente aquí. Si se envían tal cual, se rechazan como campos desconocidos (400 invalid_request).

fal
negative_promptnum_inference_stepsguidance_scalenum_imagesoutput_formataccelerationenable_safety_checkersync_modeloras
Replicate
negative_promptstrengthwidthheightguidancenum_inference_stepsgo_fastoutput_formatoutput_qualitydisable_safety_checkerlora_weightslora_scale
WaveSpeed
widthheightoutput_formatenable_base64_outputenable_sync_mode

Tareas asíncronas y webhooks

Las cuatro ejecutan las tareas en segundo plano. Así llama cada una a los pasos:

Tareas y webhooks en cada plataforma
PasoPershotfalReplicateWaveSpeed
CrearPOST /v1/videos/generationsPOST /v1/images/generations202 → { id: "job_…" }POST https://queue.fal.run/<endpoint id>→ request_id, status_url, response_urlPOST /v1/models/{owner}/{name}/predictions{ "input": { … } }POST /api/v3/<model id>→ data.id
ConsultarGET /v1/jobs/{id}GET status_urlGET response_urlGET /v1/predictions/{id}GET /api/v3/predictions/{id}/result
EstadosqueuedprocessingsucceededfailedcancelledunknownIN_QUEUEIN_PROGRESSCOMPLETEDstartingprocessingsucceededfailedcanceledcreatedcompletedfailedcancelledtimeoutdeleted
Webhookwebhook_url (body)?fal_webhook=…webhook (body)webhook_events_filter?standard_webhook=…?webhook=… (legacy)
FirmaX-Signature: t=…,v1=…HMAC-SHA256, whsec_…X-Event-IdX-Fal-Webhook-SignatureED25519, JWKSwebhook-idwebhook-timestampwebhook-signaturewebhook-idwebhook-timestampwebhook-signature
Reintentos de entregaDespués de 1 min, 5 min, 30 min, 2 h y 6 h. Una respuesta 2xx en 10 segundos cuenta como entregada.Hasta 31 reintentos, mientras no caduque el resultado guardado.Puede reintentar: gestiona los duplicados.Hasta 3 reintentos.
Archivos de salidaEnlaces firmados válidos durante 24 horas; vuelve a leer la tarea para obtener uno nuevo. Los archivos se conservan 12 meses.Siguen tu configuración de caducidad de medios.Se eliminan al cabo de una hora en las predicciones hechas mediante la API.Se conservan hasta 7 días.
Esperar en una sola llamadaNo hay: cada tarea es asíncrona. Por MCP, wait_for_job espera hasta 60 segundos.POST https://fal.run/<endpoint id>Prefer: wait=nenable_sync_mode

El cuerpo de nuestro webhook es la propia tarea, y la firma es nuestra: el código que verifica sus webhooks rechazará los nuestros. Cómo verificar los nuestros

Idempotencia

Cada solicitud de generación necesita un encabezado Idempotency-Key, de 1 a 255 caracteres ASCII visibles. La misma clave dentro de 24 horas devuelve la misma tarea con HTTP 200, así que un reintento después de un tiempo de espera agotado nunca crea ni cobra una segunda tarea.

Ninguna de las tres documenta una clave de idempotencia para crear tareas (2026-10-22): fal sugiere eliminar duplicados de webhooks por request_id, y WaveSpeed pide enviar una sola vez y buscar la tarea antes de volver a enviarla. Dale a cada tarea una clave y reutilízala en cada reintento.

Lo que no es compatible

Si se envían tal cual, estos fallan o se rechazan aquí:

  • Sus bibliotecas cliente (fal_client, replicate, wavespeed) no llaman a /v1. Usa HTTP directo, el documento OpenAPI o el servidor MCP.
  • Sus formas de respuesta: aquí una tarea es un Job con outputs[].url, no un resultado de fal, una predicción de Replicate ni un envoltorio data de WaveSpeed.
  • Últimos fotogramas: fal end_image_url, Replicate last_frame_image, WaveSpeed last_image.
  • Videos y audio de referencia: fal video_urls y audio_urls, Replicate y WaveSpeed reference_videos y reference_audios.
  • Una duración o relación automática, las relaciones 4:3, 3:4 y 21:9, y los renders en 1080p o 4K. Aquí las resoluciones más altas son un paso aparte, enhance, con la etiqueta AI Enhanced.
  • Un primer fotograma junto con imágenes de referencia. Replicate también lo rechaza.
  • Esperar el resultado en una sola llamada (fal.run, Prefer: wait de Replicate, enable_sync_mode de WaveSpeed): aquí cada tarea es asíncrona.
  • Varias imágenes por tarea, salida en PNG o WebP, ancho y alto libres, varias imágenes de origen para una edición, LoRA y ajustes del sampler.
  • Su verificación de webhooks: nuestras entregas llevan X-Signature, un HMAC-SHA256 con tu secreto whsec_, no la firma ED25519 de fal ni el encabezado webhook-signature.
  • Pagar después de usar: los créditos son prepagados, cada tarea tiene un límite y una tarea por encima de max_credits se rechaza, no se cobra.
  • Enlaces de salida de larga duración: los nuestros duran 24 horas. Vuelve a leer la tarea para obtener uno nuevo.

Antes y después

La misma solicitud de Seedance 2.0 Fast con un primer fotograma, tal como la documenta cada plataforma, y luego en /v1. El límite de precio sale de nuestro motor de precios.

Antes
curl -X POST https://queue.fal.run/bytedance/seedance-2.0/fast/image-to-video \
  -H "Authorization: Key $FAL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Slow dolly-in on a ceramic mug on a wooden table, morning window light",
    "image_url": "https://example.com/first-frame.jpg",
    "duration": "5",
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }'
Después: /v1
curl https://api.pershot.app/v1/videos/generations \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-fast",
    "prompt": "Slow dolly-in on a ceramic mug on a wooden table, morning window light",
    "image_url": "https://example.com/first-frame.jpg",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true,
    "max_credits": 34
  }'

Los precios son los nuestros

Aquí cada tarea se cotiza en créditos antes de ejecutarse (1 US$ = 100 créditos) y nunca cuesta más que su cotización o max_credits.

Lo que cobran fal, Replicate y WaveSpeed está en sus propias páginas. Nuestras páginas de comparación muestran sus precios publicados de Seedance 2.0, cada uno con la fecha en que se consultó.

Nuestras tarifas de API por segundo facturado
Modelo480p, por segundo720p, por segundo
Seedance 2.0 Fastseedance-2.0-fast0,031 US$0,067 US$
Seedance 2.0 Miniseedance-2.0-mini0,020 US$0,042 US$
Nuestros créditos por imagen
Modelo1K, por imagen2K, por imagen
Qwen-Image-2512 · Lightning 4-stepqwen-image-2512-lightning1 cr3 cr
Qwen-Image-2512qwen-image-25122 cr6 cr
Qwen-Image-Edit-2511 · Lightningqwen-image-edit-2511-lightning2 cr4 cr
Qwen-Image-Edit-2511qwen-image-edit-25113 cr10 cr

Fuentes

Sus nombres de campo y su comportamiento tal como los mostraban sus páginas públicas el 2026-10-22. Revisa su documentación antes de cambiar: