Se arrivi da fal, Replicateo WaveSpeed
Spostare le chiamate a Seedance 2.0 e Qwen-Image su /v1: autenticazione, id dei modelli, ogni campo, lavori asincroni e webhook, e cosa non si trasferisce.
Non basta cambiare l'URL di base
Cambiare l'URL di base e la chiave non basta su nessuna delle tre. Ogni richiesta cambia anche in questi punti:
- La chiave:
Authorization: Bearercon una chiave che inizia consk_test_osk_live_. - L'id del modello va nel corpo come
model, e un solo id copre testo, primo fotogramma e riferimenti. - Un header
Idempotency-Keyin ogni richiesta di generazione. - Un tetto di prezzo:
max_credits, oppure unquote_iddaPOST /v1/quotes. - Il risultato è un lavoro: interroga
GET /v1/jobs/{id}o ricevi il nostro webhook firmato.
- fal
- La più simile alla nostra API: la maggior parte dei nomi dei campi di Seedance sono quelli di fal. Rinomina anche
image_urlsinreference_image_urls, inviadurationcome numero e spostafal_webhooknel corpo comewebhook_url. - Replicate
- Togli i campi da
input. Rinomina ancheimageinimage_url,reference_imagesinreference_image_urlsewebhookinwebhook_url. - WaveSpeed
- Rinomina anche
imageinimage_urlereference_imagesinreference_image_urls, e spostastandard_webhooknel corpo comewebhook_url. Leggi i risultati daGET /v1/jobs/{id}.
Autenticazione
Dove vanno le richieste e come vengono firmate.
| Piattaforma | URL di base | Header di autenticazione |
|---|---|---|
| Pershot | https://api.pershot.app/v1 | Authorization: Bearer $API_KEY |
| fal | https://queue.fal.run | Authorization: Key $FAL_KEY |
| Replicate | https://api.replicate.com/v1 | Authorization: Bearer $REPLICATE_API_TOKEN |
| WaveSpeed | https://api.wavespeed.ai/api/v3 | Authorization: Bearer $WAVESPEED_API_KEY |
L'accesso all'API per sviluppatori è su richiesta: chiedilo nello studio, in Chiavi API. La chiave viene mostrata una sola volta. Una chiave sviluppatore spende il saldo API sviluppatori, e la stessa chiave funziona come header Bearer sul server MCP.
Id dei modelli
I loro vanno nell'URL; il nostro va nel corpo come model. Un nostro id copre testo, primo fotogramma e riferimenti: decidono i campi che invii.
| Noi | fal | Replicate | WaveSpeed | Note |
|---|---|---|---|---|
seedance-2.0-fast | bytedance/seedance-2.0/fast/text-to-videobytedance/seedance-2.0/fast/image-to-videobytedance/seedance-2.0/fast/reference-to-video | bytedance/seedance-2.0-fast | bytedance/seedance-2.0-fast/text-to-videobytedance/seedance-2.0-fast/image-to-video | Un solo id per testo, primo fotogramma e immagini di riferimento. |
seedance-2.0-mini | bytedance/seedance-2.0/mini/text-to-videobytedance/seedance-2.0/mini/image-to-videobytedance/seedance-2.0/mini/reference-to-video | bytedance/seedance-2.0-mini | bytedance/seedance-2.0-mini/text-to-video | Un solo id per testo, primo fotogramma e immagini di riferimento. |
qwen-image-2512 | fal-ai/qwen-image-2512 | qwen/qwen-image-2512 | wavespeed-ai/qwen-image/text-to-image-2512 | Gli stessi pesi aperti. |
qwen-image-2512-lightning | fal-ai/qwen-image-2512/lora | nessuno | nessuno | Il nostro livello Lightning a 4 passaggi. fal lo esegue come LoRA sul suo endpoint /lora; non abbiamo trovato un modello Lightning pronto all'uso su Replicate o WaveSpeed. |
qwen-image-edit-2511 | fal-ai/qwen-image-edit-2511 | qwen/qwen-image-edit-2511 | wavespeed-ai/qwen-image/edit-2511 | Gli stessi pesi aperti. |
qwen-image-edit-2511-lightning | fal-ai/qwen-image-edit-2511/lora | nessuno | nessuno | Il nostro livello Lightning a 4 passaggi. fal lo esegue come LoRA sul suo endpoint /lora; non abbiamo trovato un modello Lightning pronto all'uso su Replicate o WaveSpeed. |
- Per gli agenti IA
- Testo semplice per gli agenti IA: input, valori ammessi, ogni prezzo e un esempio di richiesta
seedance-2.0-fastseedance-2.0-miniqwen-image-2512-lightningqwen-image-2512qwen-image-edit-2511-lightningqwen-image-edit-2511
Seedance 2.0, campo per campo
I nostri nomi seguono quelli di fal quando fal ha il campo, e le note indicano dove differiscono. I campi stanno al primo livello del corpo JSON; Replicate li racchiude in input.
| Noi | fal | Replicate | WaveSpeed | Note |
|---|---|---|---|---|
model | nell'URL | nell'URL | nell'URL | Un solo id nel corpo per testo, primo fotogramma e riferimenti. Il loro è nell'URL. |
prompt | prompt | prompt | prompt | Lo stesso testo si riusa così com'è. |
duration | duration | duration | duration | Un numero intero, da 4 a 15, predefinito 5. fal invia una stringa e offre auto; Replicate usa -1 per la durata automatica. Qui non c'è durata automatica. |
resolution | resolution | resolution | resolution | 480p o 720p, predefinito 720p. WaveSpeed elenca anche 1080p e 4k; qui le risoluzioni più alte sono il passaggio separato enhance. |
aspect_ratio | aspect_ratio | aspect_ratio | aspect_ratio | 16:9, 9:16 o 1:1, predefinito 16:9. Niente auto, adaptive, 4:3, 3:4 o 21:9. |
generate_audio | generate_audio | generate_audio | generate_audio | Stesso significato, attivo per impostazione predefinita. Il prezzo è lo stesso, attivo o disattivato. |
image_url | image_url | image | image | Il primo fotogramma. Stesso nome di fal; Replicate e WaveSpeed lo chiamano image. Non insieme alle immagini di riferimento. |
reference_image_urls | image_urls | reference_images | reference_images | Fino a 9 immagini, richiamate nel prompt come @image1, @image2. Diverso da fal, che lo chiama image_urls. |
seed | nessuno | seed | nessuno | Accettato e non usato: Seedance 2.0 non accetta un seed. fal e WaveSpeed non lo prevedono. |
quote_id | nessuno | nessuno | nessuno | Nuovo: invia esattamente uno tra quote_id e max_credits. Un lavoro non costa mai di più. |
max_credits | nessuno | nessuno | nessuno | Nuovo: invia esattamente uno tra quote_id e max_credits. Un lavoro non costa mai di più. |
webhook_url | fal_webhookstringa di query | webhook | standard_webhookstringa di query | Nel corpo. Diverso da fal, che accetta fal_webhook nella stringa di query. |
end_user_id | end_user_id | nessuno | nessuno | Lo stesso nome di fal. Per gli account sviluppatore approvati (accesso su richiesta): il tuo ID utente, mostrato nell'utilizzo. |
project_id | nessuno | nessuno | nessuno | Solo da noi, facoltativo: progetti e instradamento verso i fornitori. |
shot_id | nessuno | nessuno | nessuno | Solo da noi, facoltativo: progetti e instradamento verso i fornitori. |
routing_preference | nessuno | nessuno | nessuno | Solo da noi, facoltativo: progetti e instradamento verso i fornitori. |
enhance | nessuno | nessuno | nessuno | Solo da noi, facoltativo: un aumento di risoluzione con l'IA dopo il rendering, etichettato AI Enhanced. |
Idempotency-Keyheader | nessuno | nessuno | nessuno | Nuovo e obbligatorio: la stessa chiave entro 24 ore restituisce lo stesso lavoro. |
I loro campi di Seedance senza un corrispettivo qui. Se li invii così come sono, vengono rifiutati come campi sconosciuti (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 per campo
Il nostro corpo per le immagini è più ridotto del loro: dimensione e proporzioni invece di pixel liberi, un'immagine per lavoro e nessuna impostazione del sampler.
| Noi | fal | Replicate | WaveSpeed | Note |
|---|---|---|---|---|
model | nell'URL | nell'URL | nell'URL | Quattro id nel corpo: Image Mini e Image Fast, ognuno per generazione e modifica. |
prompt | prompt | prompt | prompt | Lo stesso testo si riusa così com'è. |
size | image_size | nessuno | size | 1K o 2K, predefinito 1K. Insieme alle proporzioni stabilisce una dimensione fissa, al massimo 2048 px per lato. Niente larghezza e altezza libere. |
aspect_ratio | image_size | aspect_ratio | size | 16:9, 9:16 o 1:1, predefinito 1:1. Non cambia il prezzo. |
image_url | image_urls | image | images | Solo modelli di modifica: esattamente un'immagine di partenza, come URL. I loro accettano un elenco. |
seed | seed | seed | seed | Stesso significato. |
quote_id | nessuno | nessuno | nessuno | Nuovo: invia esattamente uno tra quote_id e max_credits. Un lavoro non costa mai di più. |
max_credits | nessuno | nessuno | nessuno | Nuovo: invia esattamente uno tra quote_id e max_credits. Un lavoro non costa mai di più. |
webhook_url | fal_webhookstringa di query | webhook | standard_webhookstringa di query | Nel corpo. Diverso da fal, che accetta fal_webhook nella stringa di query. |
end_user_id | nessuno | nessuno | nessuno | Solo da noi, facoltativo, per gli account sviluppatore approvati (accesso su richiesta): il tuo ID utente, mostrato nell'utilizzo. |
project_id | nessuno | nessuno | nessuno | Solo da noi, facoltativo: progetti e instradamento verso i fornitori. |
shot_id | nessuno | nessuno | nessuno | Solo da noi, facoltativo: progetti e instradamento verso i fornitori. |
routing_preference | nessuno | nessuno | nessuno | Solo da noi, facoltativo: progetti e instradamento verso i fornitori. |
Idempotency-Keyheader | nessuno | nessuno | nessuno | Nuovo e obbligatorio: la stessa chiave entro 24 ore restituisce lo stesso lavoro. |
I loro campi di Qwen-Image senza un corrispettivo qui. Se li invii così come sono, vengono rifiutati come campi sconosciuti (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
Lavori asincroni e webhook
Tutte e quattro eseguono i lavori in background. Come ognuna chiama i passaggi:
| Passaggio | Pershot | fal | Replicate | WaveSpeed |
|---|---|---|---|---|
| Creazione | POST /v1/videos/generationsPOST /v1/images/generations202 → { id: "job_…" } | POST https://queue.fal.run/<endpoint id>→ request_id, status_url, response_url | POST /v1/models/{owner}/{name}/predictions{ "input": { … } } | POST /api/v3/<model id>→ data.id |
| Interrogazione | GET /v1/jobs/{id} | GET status_urlGET response_url | GET /v1/predictions/{id} | GET /api/v3/predictions/{id}/result |
| Stati | queuedprocessingsucceededfailedcancelledunknown | IN_QUEUEIN_PROGRESSCOMPLETED | startingprocessingsucceededfailedcanceled | createdcompletedfailedcancelledtimeoutdeleted |
| Webhook | webhook_url (body) | ?fal_webhook=… | webhook (body)webhook_events_filter | ?standard_webhook=…?webhook=… (legacy) |
| Firma | X-Signature: t=…,v1=…HMAC-SHA256, whsec_…X-Event-Id | X-Fal-Webhook-SignatureED25519, JWKS | webhook-idwebhook-timestampwebhook-signature | webhook-idwebhook-timestampwebhook-signature |
| Nuovi tentativi di consegna | Dopo 1 min, 5 min, 30 min, 2 h e 6 h. Una risposta 2xx entro 10 secondi vale come consegnata. | Fino a 31 nuovi tentativi, finché il risultato salvato non scade. | Può ritentare: gestisci i duplicati. | Fino a 3 nuovi tentativi. |
| File dei risultati | Link firmati validi per 24 ore; richiedi di nuovo il lavoro per averne uno nuovo. I file vengono conservati per 12 mesi. | Seguono le tue impostazioni di scadenza dei media. | Rimossi dopo un'ora per le previsioni create tramite l'API. | Conservati fino a 7 giorni. |
| Attesa in una sola chiamata | Nessuna: ogni lavoro è asincrono. Via MCP, wait_for_job attende fino a 60 secondi. | POST https://fal.run/<endpoint id> | Prefer: wait=n | enable_sync_mode |
Il corpo del nostro webhook è il lavoro stesso, e la firma è la nostra: il codice che verifica i loro webhook rifiuterà i nostri. Come verificare i nostri
Idempotenza
Ogni richiesta di generazione richiede un header Idempotency-Key, da 1 a 255 caratteri ASCII visibili. La stessa chiave entro 24 ore restituisce lo stesso lavoro con HTTP 200, quindi un nuovo tentativo dopo un timeout non crea né addebita mai un secondo lavoro.
Nessuna delle tre documenta una chiave di idempotenza per creare un lavoro (2026-10-22): fal suggerisce di eliminare i webhook duplicati in base a request_id, e WaveSpeed chiede di inviare una sola volta e di cercare il task prima di reinviarlo. Dai a ogni lavoro una chiave e riusala a ogni nuovo tentativo.
Cosa non è compatibile
Se li invii così come sono, questi elementi non funzionano o vengono rifiutati qui:
- Le loro librerie client (fal_client, replicate, wavespeed) non chiamano /v1. Usa HTTP semplice, il documento OpenAPI o il server MCP.
- Le loro strutture di risposta: qui un lavoro è un Job con
outputs[].url, non un risultato di fal, una previsione di Replicate o un wrapperdatadi WaveSpeed. - Ultimi fotogrammi: fal
end_image_url, Replicatelast_frame_image, WaveSpeedlast_image. - Video e audio di riferimento: fal
video_urlseaudio_urls, Replicate e WaveSpeedreference_videosereference_audios. - Durata o proporzioni automatiche, le proporzioni 4:3, 3:4 e 21:9, e i rendering a 1080p o 4K. Qui le risoluzioni più alte sono un passaggio separato,
enhance, etichettato AI Enhanced. - Un primo fotogramma insieme a immagini di riferimento. Anche Replicate lo rifiuta.
- Attendere il risultato in una sola chiamata (fal.run,
Prefer: waitdi Replicate,enable_sync_modedi WaveSpeed): qui ogni lavoro è asincrono. - Più immagini per lavoro, output PNG o WebP, larghezza e altezza libere, più immagini di partenza per una modifica, LoRA e impostazioni del sampler.
- La loro verifica dei webhook: le nostre consegne portano
X-Signature, un HMAC-SHA256 con il tuo segreto whsec_, non la firma ED25519 di fal né l'headerwebhook-signature. - Pagare dopo l'uso: i crediti sono prepagati, ogni lavoro ha un tetto, e un lavoro sopra
max_creditsviene rifiutato, non addebitato. - Link ai risultati di lunga durata: i nostri durano 24 ore. Richiedi di nuovo il lavoro per averne uno nuovo.
Prima e dopo
La stessa richiesta a Seedance 2.0 Fast con un primo fotogramma, come la documenta ogni piattaforma, poi su /v1. Il tetto di prezzo viene dal nostro motore dei prezzi.
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
}'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
}'I prezzi sono i nostri
Ogni lavoro ha un preventivo in crediti prima dell'esecuzione (1 US$ = 100 crediti) e non costa mai più del suo preventivo o di max_credits.
Quanto fanno pagare fal, Replicate e WaveSpeed è indicato sulle loro pagine. Le nostre pagine di confronto riportano i loro prezzi pubblicati per Seedance 2.0, ognuno con la data in cui è stato letto.
| Modello | 480p, al secondo | 720p, al secondo |
|---|---|---|
Seedance 2.0 Fastseedance-2.0-fast | 0,031 $ | 0,067 $ |
Seedance 2.0 Miniseedance-2.0-mini | 0,020 $ | 0,042 $ |
| Modello | 1K, per immagine | 2K, per immagine |
|---|---|---|
Qwen-Image-2512 · Lightning 4-stepqwen-image-2512-lightning | 1 cr | 3 cr |
Qwen-Image-2512qwen-image-2512 | 2 cr | 6 cr |
Qwen-Image-Edit-2511 · Lightningqwen-image-edit-2511-lightning | 2 cr | 4 cr |
Qwen-Image-Edit-2511qwen-image-edit-2511 | 3 cr | 10 cr |
Fonti
I nomi dei loro campi e il loro comportamento come li mostravano le loro pagine pubbliche il 2026-10-22. Controlla la loro documentazione prima di migrare:
- fal
- fal.ai/models/bytedance/seedance-2.0/fast/text-to-video/llms.txtfal.ai/models/bytedance/seedance-2.0/fast/image-to-video/llms.txtfal.ai/models/bytedance/seedance-2.0/fast/reference-to-video/llms.txtfal.ai/models/fal-ai/qwen-image-2512/llms.txtfal.ai/models/fal-ai/qwen-image-edit-2511/llms.txtfal.ai/docs/model-apis/model-endpoints/queuefal.ai/docs/model-apis/model-endpoints/webhooks
- Replicate
- replicate.com/bytedance/seedance-2.0-fast/llms.txtreplicate.com/qwen/qwen-image-2512/llms.txtreplicate.com/qwen/qwen-image-edit-2511/llms.txtreplicate.com/docs/reference/httpreplicate.com/docs/topics/webhooks/verify-webhook
- WaveSpeed
- wavespeed.ai/models/bytedance/seedance-2.0-fast/text-to-videowavespeed.ai/models/bytedance/seedance-2.0-fast/image-to-videowavespeed.ai/models/wavespeed-ai/qwen-image/text-to-image-2512wavespeed.ai/models/wavespeed-ai/qwen-image/edit-2511wavespeed.ai/docs/submit-taskwavespeed.ai/docs/how-to-use-webhookswavespeed.ai/docs/verify-webhookswavespeed.ai/docs/data-retention-policy