Seedance 2.0 Fast
Genera video con Seedance 2.0 Fast partendo da testo, dal primo e dall'ultimo fotogramma o usando riferimenti multimodali. Questa pagina descrive l'intero flusso di lavoro, dalla richiesta al risultato finale.
ID del modello API: seedance-2-0-fast
La generazione è asincrona. Salva il taskId restituito alla creazione del task, quindi interroga lo stato o ricevi un webhook.
Funzionalità
| Funzionalità | Valori supportati |
|---|---|
| Risoluzione video | 480p · 720p |
| Durata video | 4–15 secondi |
| Proporzioni | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| Immagini di riferimento | Fino a 9 immagini |
| Video di riferimento | Fino a 3 video |
| File audio di riferimento | Fino a 3 file audio |
| Tutti i riferimenti combinati | Fino a 12 file di riferimento in totale |
| Durata totale per gruppo video/audio | 15 secondi |
| seed | -1 a 4294967295 |
Prezzi e crediti
La generazione di video viene tariffata in crediti in base alla durata fatturabile in secondi. Senza un video di input, la durata fatturabile corrisponde alla durata del video generato; in presenza di un video di input, include anche la durata del video di riferimento.
La tabella seguente mostra i crediti addebitati al secondo e non il costo totale di un'operazione. La tariffa varia a seconda del modello, della risoluzione finale e dell'eventuale inserimento di video di riferimento nella modalità reference-to-video. Per il calcolo del costo totale, consulta le formule e gli esempi riportati sotto la tabella.
| Risoluzione video | Senza video in input | Con video in input |
|---|---|---|
480p | 5 crediti al secondo | 3 crediti al secondo |
720p | 10 crediti al secondo | 6 crediti al secondo |
- Senza video in input: secondi generati × tariffa senza video.
- Con video in input: (secondi generati + secondi effettivi del video di riferimento) × tariffa con video. Il server calcola la durata totale del video di riferimento arrotondandola al secondo superiore prima dell'addebito.
- I soli riferimenti di immagini o audio utilizzano la tariffa senza video. La tariffa con video si applica esclusivamente nella modalità da riferimento a video quando vengono forniti video come input.
Esempi di calcolo dei costi
Video da testo a video da 5 secondi a 720p: 5 × 10 = 50 crediti.
Video generato da 5 secondi a 720p con video di riferimento da 5 secondi: (5 + 5) × 6 = 60 crediti.
I crediti vengono prenotati all'invio e addebitati solo a completamento avvenuto. I task falliti o andati in timeout avviano la procedura di rimborso. Lo stato di fatturazione refund_failed indica che il rimborso non è andato a buon fine; verifica i log delle API o contatta l'assistenza.
Autenticazione
Crea una chiave API nella dashboard. La chiave completa viene mostrata una sola volta. Conservala sul tuo server e inviala come token Bearer in ogni richiesta.
URL di base
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonImposta la variabile d'ambiente SEEVIO_API_KEY prima di eseguire questi esempi. Gli esempi in JavaScript vengono eseguiti sul server con Node.js; gli esempi in Python utilizzano la libreria requests.
Avvio rapido
Invia questa richiesta minima, salva il taskId restituito e usa l'esempio di query del task riportato di seguito. Il valore dei crediti nella risposta di creazione corrisponde all'importo prenotato.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'Esempio di risposta alla creazione del task
Una volta accettata la richiesta precedente, l'API restituisce questa risposta JSON. taskId è l'identificativo del task da utilizzare per le successive verifiche sullo stato; credits indica il numero di crediti riservati a questo task. Questa risposta conferma la corretta creazione del task, non che il video sia pronto. Sarà necessario monitorare periodicamente lo stato del task o utilizzare un Webhook per ricevere il video finale.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 50
}Crea un task
POST https://api.seevio.ai/v1/videos/generationsInvia un oggetto JSON contenente model e input, insieme a un callback_url opzionale. Specifica sempre l'ID del modello indicato in questa pagina; se omesso, verrà selezionato seedance-2-0.
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Descrizione e vincoli |
|---|---|---|---|
model | string | Sì | ID modello. Per utilizzare Seedance 2.0 Fast, imposta questo campo su seedance-2-0-fast. |
callback_url | string | No | Endpoint HTTPS pubblico per le chiamate POST di callback in caso di completamento o errore. Non sono consentiti host locali o reti private. Esempio: https://example.com/webhooks/seevio |
input | object | Sì | Impostazioni di generazione. Deve contenere un prompt non vuoto. |
Parametri di input
Fornisci image_urls, video_urls e audio_urls sotto forma di array di stringhe URL (string[]). Ogni URL fornito deve essere accessibile pubblicamente tramite HTTPS, inclusi i contenuti multimediali ignorati dalla modalità selezionata.
| Campo | Tipo | Obbligatorio | Predefinito | Descrizione e vincoli |
|---|---|---|---|---|
input.prompt | string | Sì | — | È necessario inserire un prompt in qualsiasi modalità. Può contenere al massimo 10.000 caratteri (spazi esclusi) e non può essere composto unicamente da spazi vuoti. Esempio: A cat surfing at sunset |
input.generation_type | string | No | text-to-video | text-to-video utilizza solo il prompt; image-to-video utilizza 1–2 immagini; reference-to-video utilizza riferimenti di immagini, video e/o audio. Valori supportati text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | Condizionale | [] | image-to-video: 1 immagine per il primo fotogramma, o 2 immagini ordinate per il primo e l'ultimo fotogramma. reference-to-video: fino a 9 immagini. Ignorato in text-to-video. Esempio: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | Condizionale | [] | Inoltrato solo in reference-to-video; fino a 3 video e 15 secondi complessivi. Ignorato nelle altre modalità. Esempio: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | Condizionale | [] | Inoltrato solo in reference-to-video; fino a 3 file audio e 15 secondi complessivi. Ignorato nelle altre modalità. Non è possibile utilizzare un file audio come unico materiale di riferimento per questo modello. Se fornisci degli audio_urls, devi includere anche almeno un'immagine di riferimento in image_urls o un video di riferimento in video_urls. Esempio: ["https://example.com/music.mp3"] |
input.duration | integer | No | 5 | Durata intera del video generato da 4 a 15 secondi. Valori supportati 4–15Esempio: 5 |
input.aspect_ratio | string | No | adaptive | Proporzioni del video generato. adaptive consente al modello di determinare le proporzioni ottimali. Valori supportati 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveEsempio: adaptive |
input.resolution | string | No | 720p | Usa una delle risoluzioni supportate elencate qui. Valori supportati 480p | 720pEsempio: 720p |
input.generate_audio | boolean | No | true | Richiede la generazione di audio sincronizzato. Valori supportati true | falseEsempio: true |
input.watermark | boolean | No | false | Richiede l'applicazione di un watermark AI sul video generato. Valori supportati true | falseEsempio: false |
input.web_search | boolean | No | false | Abilita la ricerca web, se supportata dal modello. Valori supportati true | falseEsempio: false |
input.return_last_frame | boolean | No | false | Richiede il fotogramma finale. Il risultato della query conterrà data.last_frame_url quando disponibile, altrimenti sarà null. Valori supportati true | falseEsempio: true |
input.seed | integer | No | -1 | Valore intero compreso tra -1 e 4294967295. Il valore -1 seleziona un seed casuale. Valori supportati -1 a 4294967295Esempio: 42 |
I campi booleani devono essere impostati su true o false in formato JSON, non come stringhe o numeri.
Risposta di creazione
La risposta HTTP 200 restituisce taskId (stringa) e credits (numero). Questo conferma la creazione del task, non il suo completamento. L'importo indicato sotto corrisponde all'avvio rapido a 720p di 5 secondi.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 50
}Modalità di generazione ed esempi
Da testo a video
Genera a partire da un prompt testuale. Gli URL dei file multimediali non vengono considerati in questa modalità.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'Primo fotogramma
Fornisci un'immagine come primo fotogramma e descrivi il movimento nel prompt.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"aspect_ratio": "adaptive"
}
}'Primo e ultimo fotogramma
Fornisci due URL di immagini in ordine: primo fotogramma, poi ultimo fotogramma. Questo esempio richiede anche il fotogramma finale del video generato.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"aspect_ratio": "adaptive",
"return_last_frame": true
}
}'Riferimento multimodale
Combina riferimenti immagine, video e audio. Il prompt rimane obbligatorio. L'inserimento di un video di riferimento modifica la formula di fatturazione.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/camera.mp4"
],
"audio_urls": [
"https://example.com/ambience.mp3"
],
"aspect_ratio": "adaptive"
}
}'Interroga un task
GET https://api.seevio.ai/v1/tasks/{taskId}Sostituisci l'ID di esempio con il taskId restituito alla creazione. Le query restituiscono solo i task associati all'utente della chiave API; ID non accessibili o inesistenti restituiscono HTTP 404.
Come punto di partenza, effettua un polling ogni 10–20 secondi, rallenta le richieste in caso di HTTP 429 e interrompi quando lo stato diventa completed o failed. Per gli ambienti di produzione, consigliamo l'uso dei webhook. Ogni esempio di codice seguente esegue una singola query.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| Stato | Descrizione e vincoli |
|---|---|
queued | Accettato e in attesa di elaborazione. |
generating | Generazione in corso. |
completed | Completato con successo. Scarica il file da data.results prima della scadenza. |
failed | Errore definitivo. Verifica failed_reason e billing_status. |
| Campo | Tipo | Descrizione e vincoli |
|---|---|---|
id | string | Identificatore del task. Corrisponde al taskId della risposta di creazione. |
created_at | number | Data e ora di creazione del task in formato Unix timestamp (secondi). |
model | string | L'ID pubblico del modello utilizzato per questo task. |
billing_status | string | Stato di fatturazione: reserved, charged, refunded o refund_failed. |
credits | number | Crediti prenotati per questo task. Questo valore viene conservato anche dopo un rimborso; verifica billing_status per determinare l'esito finanziario. |
failed_reason | string | null | Causa del problema per i task falliti; null in caso contrario. Le query fallite omettono la sezione data. |
data | object | Presente nelle query dei task non falliti. Contiene i dettagli di output ed elaborazione. |
data.results | string[] | Array di URL dei video. Vuoto fino al completamento o dopo la scadenza del video. |
data.video_expires_at | string | null | Scadenza del video in formato ISO 8601, oppure null prima che sia disponibile. Salva il file prima di questa data. |
data.last_frame_url | string | null | URL dell'ultimo fotogramma quando richiesto e disponibile, altrimenti null. |
data.processing_time | number | null | Durata dell'elaborazione da parte del provider in secondi, se disponibile, altrimenti null. |
Task completato: risposta alla query con i risultati video
Quando la query restituisce status=completed, la generazione del video è terminata. Puoi trovare gli URL del video in data.results; assicurati di scaricarli prima della data indicata in data.video_expires_at. Lo stato billing_status=charged indica che i crediti prenotati sono stati effettivamente addebitati.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "completed",
"billing_status": "charged",
"credits": 50,
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Task fallito: risposta alla query con dettagli sul fallimento e sulla fatturazione
Se la query restituisce status=failed, significa che la generazione non è andata a buon fine. Consulta failed_reason per conoscerne il motivo e billing_status per l'esito del rimborso. In questo esempio, lo stato refunded indica che i crediti sono stati riaccreditati. La voce credits mostra la quota inizialmente prenotata e la risposta non include la chiave data.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "failed",
"billing_status": "refunded",
"credits": 50,
"failed_reason": "provider_failed"
}Webhook
Imposta callback_url nella richiesta di creazione per ricevere una richiesta POST JSON al completamento o al fallimento del task. Restituisci una risposta 2xx entro 15 secondi. Gli invii non riusciti verranno riprovati; gestisci le notifiche duplicate in modo idempotente tramite l'ID del task.
L'endpoint di callback deve accettare richieste POST con un corpo in formato JSON (Content-Type: application/json).
Crea un task con callback
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
},
"callback_url": "https://example.com/webhooks/seevio"
}'I payload dei webhook differiscono dalle risposte alle query sui task: omettono billing_status e credits; i dettagli sugli errori si trovano all'interno di data.failed_reason e data.credits_refunded. Il valore created_at del webhook indica il timestamp dell'evento in formato Unix (secondi).
Attività completata: payload di callback riuscito
In caso di generazione riuscita, la callback conterrà lo stato status=completed. Utilizza id per identificare l'attività e data.results per recuperare gli URL dei video. Assicurati di scaricare e salvare i risultati prima della scadenza indicata in data.video_expires_at.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "completed",
"data": {
"results": [
"https://cdn.seevio.ai/api/videos/example.mp4"
],
"video_expires_at": "2026-09-07T00:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Attività non riuscita: payload di callback fallito
In caso di errore durante la generazione, la callback conterrà lo stato status=failed. Utilizza id per identificare l'attività, data.failed_reason per conoscere il motivo del fallimento e data.credits_refunded per verificare il numero di crediti riaccreditati.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 50
}
}Esempio di ricevitore
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrls = callbackData.data.results;
// Save the video URLs and mark this task as completed in your application.
console.log(callbackData.id, videoUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData.data;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}Questo esempio in Next.js legge il corpo JSON della callback e gestisce direttamente le attività completate e fallite. Ti consigliamo di aggiungere logiche di persistenza e deduplicazione dei task-ID per la tua applicazione, e di accodare i processi più lenti prima di confermare la callback.
Requisiti e limitazioni dei media
- Tutti i media e gli URL di callback devono essere URL HTTPS pubblici. Evita l'uso di localhost, IP privati o file che richiedono cookie o autenticazione. Gli URL dei file video/audio di riferimento devono indirizzare a file multimediali leggibili direttamente.
- In reference-to-video, fornisci almeno un riferimento, con un limite massimo di 9 immagini, 3 video, 3 file audio e 12 elementi multimediali complessivi. La durata totale dei video e quella degli audio non devono superare i 15 secondi ciascuna.
- La modalità text-to-video ignora tutti i riferimenti multimediali. La modalità image-to-video considera solo le immagini del primo e dell'ultimo fotogramma, ignorando i riferimenti video e audio. Usa la modalità reference-to-video per combinare più formati.
- Per i modelli Seedance 2.0, associa l'audio ad almeno un'immagine o a un video per garantire la compatibilità. Gli esempi di solo audio sono disponibili nella pagina di Seedance 2.5.
- I piani Fast e Mini supportano le risoluzioni 480p e 720p. Non fare affidamento sull'accettazione di risoluzioni superiori durante la validazione della richiesta: non sono formati di output supportati per questo modello.
Requisiti delle immagini
- Ogni immagine deve avere una dimensione inferiore a 30 MB.
- Formati supportati: jpeg, png, webp, bmp, tiff, gif.
- Rapporto d'aspetto (larghezza ÷ altezza): compreso tra 0,4 e 2,5.
- Larghezza e altezza devono essere comprese tra 300 e 6.000 pixel.
Requisiti dei video
- Formati supportati: mp4, mov.
- Ogni video non deve superare i 100 MB.
- Frequenza fotogrammi: compresa tra 24 e 60 fps.
- Rapporto d'aspetto (larghezza ÷ altezza): compreso tra 0,4 e 2,5.
- Pixel totali (larghezza × altezza): compresi tra 407.696 e 8.295.044. Ad esempio, 614 × 664 = 407.696 e 3.326 × 2.494 = 8.295.044. Questi sono solo esempi di calcolo dei pixel, non requisiti fissi per larghezza e altezza.
Requisiti dei file audio
- Formati supportati: wav, mp3.
- Ogni file audio non deve superare i 15 MB.
Errori
Gli errori HTTP contengono un oggetto error con code e message. Un task accettato correttamente può comunque fallire in una fase successiva; interroga lo stato del task o gestisci la chiamata di callback per l'errore.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Campo | Cosa fare |
|---|---|---|
| 400 | invalid_request | Correggi il formato JSON, il prompt mancante, l'intervallo dei parametri o l'URL del file multimediale prima di riprovare. |
| 401 | invalid_api_key | Controlla il token Bearer e verifica che la chiave API sia attiva. |
| 402 | insufficient_credits | Aggiungi crediti o riduci il costo del task. La risposta potrebbe indicare i crediti richiesti e quelli effettivamente disponibili. |
| 403 | forbidden | Verifica le limitazioni a livello di account descritte nel messaggio di errore. |
| 404 | not_found | Verifica l'ID del task e accertati che la chiave appartenga all'utente che ha avviato il task. |
| 429 | rate_limited | Attendi l'intervallo indicato in Retry-After prima di effettuare un nuovo tentativo. |
| 500 | internal_error | Verifica il messaggio d'errore e i log delle API. Riprova con attenzione: l'invio ripetuto di una richiesta di creazione può generare un nuovo task addebitabile. |
Limiti di frequenza
Creazione task: per impostazione predefinita, ciascuna chiave API consente fino a 100 richieste al minuto. Al momento non sono disponibili limiti di frequenza personalizzati.
Interrogazione task: per impostazione predefinita, ciascuna chiave API consente fino a 120 richieste al minuto. Le richieste di interrogazione e quelle di creazione dei task vengono conteggiate separatamente.