Claude Opus 5.5 è disponibile su SeedRouter

Video

Seedance 2.5

View Markdown

Genera, modifica ed estendi video con Seedance 2.5 tramite l'API di attività ufficiale ModelArk: fino a 30 secondi a 1080p, con fino a 30 riferimenti immagine, 10 video e 10 audio.

Seedance 2.5 è il modello di generazione video più recente di ByteDance (Dreamina Seedance 2.5). Invia il corpo dell'attività ufficiale ModelArk a POST /v1/videos/generations, conserva l'identificativo dell'attività restituito e leggi il video finito da GET /v1/tasks/{id}. Immagini, video e audio vanno in content come URL.

ID modello

ID modelloRisoluzioniDurata
dreamina-seedance-2-5480p, 720p, 1080p4–30 secondi, oppure automatica

Consulta la pagina del modello per i prezzi attuali.

Esempio rapido

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

Endpoint

POST https://api.seedrouter.ai/v1/videos/generations
HeaderValore
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Il corpo è il corpo della richiesta ufficiale ModelArk «crea un'attività di generazione video»; questo è lo stesso endpoint che usano tutti i modelli video di SeedRouter. La risposta è la nuova attività (id, status: "processing"), non il video finito. Tieni le chiavi API nel codice lato server.

Parametri

NomeTipoObbligatorioPredefinitoNote
modelstringSì—dreamina-seedance-2-5.
contentobject[]Sì—Il prompt e i media; vedi sotto.
draftbooleanNofalsetrue crea una bozza a 480p.
resolutionenumNo480p, 720p, 1080p. Il valore predefinito è 720p per la generazione standard e 480p per le bozze. Per generare il video finale da una bozza, devi indicare esplicitamente 1080p.480p, 720p, 1080p.
ratioenumNoadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. Deve essere adaptive (od omesso) con un primo fotogramma e per edit ed extend.
durationintegerNo-14–30 secondi, oppure -1 per lasciar scegliere il modello. Deve essere -1 per edit.
generate_audiobooleanNotrueGenera l'audio insieme al video.
watermarkbooleanNofalseAggiunge una filigrana.
return_last_framebooleanNofalseRestituisce anche il fotogramma finale come URL di immagine.
output_formatenumNomp4mp4 o mov.
omni_reference_task_typeenumNoautoauto, reference, edit, extend. edit ed extend richiedono un video di riferimento.
execution_expires_afterintegerNo1728003600–259200 secondi. Un'attività ancora non conclusa dopo questo tempo fallisce con task_expired e non viene addebitata.
priorityintegerNo00–9.
safety_identifierstringNo—1–64 caratteri che identificano il tuo utente finale. Va bene anche un hash.
service_tierenumNodefaultSolo default.
content_filterbooleanNotrueEstensione di SeedRouter. false disattiva il filtro dei contenuti per questa richiesta.

Elementi di content

ElementoFormaRuoloLimite
Testo{"type": "text", "text": "..."}—Uno.
Immagine{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_imageFino a 30 immagini di riferimento.
Video{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoFino a 10.
Audio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioFino a 10.

I campi sconosciuti vengono rifiutati. Non supportati: seed, callback_url (interroga invece l'attività), tools e i parametri frames e camera_fixed esclusivi di 1.x. Le attività non possono essere annullate né eliminate.

Modalità

La modalità dipende dagli elementi di content; non esiste un parametro di modalità.

Modalitàcontent
Da testo a videoun elemento di testo
Primo fotogrammatesto (facoltativo) + un'immagine con ruolo first_frame, oppure un'immagine senza ruolo
Primo e ultimo fotogrammatesto (facoltativo) + un'immagine first_frame + un'immagine last_frame
Riferimento multimodaletesto + qualsiasi combinazione di elementi reference_image, reference_video e reference_audio
Modificare un videotesto + un reference_video, con omni_reference_task_type: "edit"
Estendere un videotesto + un reference_video, con omni_reference_task_type: "extend"

Le modalità con primo fotogramma non possono essere combinate con elementi di riferimento. Con più immagini o con altri media, ogni immagine richiede un role.

Esempio con riferimenti

curl https://api.seedrouter.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'

Sostituisci gli URL di esempio con file tuoi accessibili.

Input multimediali

Questa API accetta solo riferimenti tramite URL. Non sono accettati base64, URL data:, identificativi asset:// e caricamenti multipart. Il Playground carica i file selezionati nello storage prima di inviarne gli URL.

I media devono essere URL HTTP(S) pubblici e rispettare i limiti ufficiali del modello:

MediaFormatiLimiti
ImmagineJPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIFMeno di 30 MB; larghezza e altezza 300–6000 px; rapporto d'aspetto (larghezza / altezza) 0,4–2,5; 1–30 immagini di riferimento
VideoMP4, MOV (H.264 o H.265)2–30 secondi ciascuno (4–30 secondi per edit), fino a 10, al massimo 30 secondi in totale; al massimo 200 MB; 24–60 FPS; larghezza e altezza 300–6000 px; rapporto d'aspetto 0,4–2,5; 407.696–8.295.044 pixel (larghezza × altezza)
AudioWAV, MP32–30 secondi ciascuno, fino a 10, al massimo 30 secondi in totale; al massimo 15 MB

Il modello non supporta immagini e video di riferimento che contengono volti umani reali.

I media vengono controllati all'avvio dell'attività, prima di qualsiasi generazione. Un'attività i cui media violano uno di questi limiti termina come failed con invalid_request_error e un messaggio che indica la regola, ad esempio The request was rejected: content reference videos must total at most 15 seconds., e non viene addebitata. Un file che in quel momento non può essere letto viene passato al modello, che lo accetta o lo rifiuta; in entrambi i casi un'attività fallita non viene addebitata.

Fattori di costo

Consulta la sezione prezzi del modello per le tariffe correnti. Seedance 2.5 fattura i token video, l'unità ufficiale:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

La tariffa per milione di token dipende dalla risoluzione di output e dalla presenza di un video di riferimento nella richiesta; una richiesta con video di riferimento applica una tariffa più bassa a tutti i suoi token. Gli input di testo, immagine e audio non vengono fatturati. In 16:9, un secondo corrisponde a 9.607,5 token a 480p (854×480), 21.600 a 720p, 48.600 a 1080p.

Le richieste con video di riferimento hanno anche una soglia minima di token. Per le stime, usa nella formula almeno ceil(output seconds × 2 / 3) secondi di riferimento, anche quando i video di riferimento originali sono più brevi. Questo vale sia per le attività di bozza sia per quelle del video finale; la clip della bozza non diventa un video di riferimento. L’addebito effettivo si basa sull’utilizzo riportato dall’attività completata.

L'addebito segue i token dichiarati dal video finito (output.usage.completion_tokens), quindi duration: -1 viene fatturato sulla durata effettivamente generata. Le clip renderizzate durano leggermente più di quanto richiesto: una richiesta di 5 secondi a 720p in 16:9 renderizza 121 fotogrammi e dichiara 108.900 token anziché 108.000. Gli addebiti definitivi sono nello storico di utilizzo del tuo account. Le attività fallite non vengono addebitate.

Schema di output

L'invio restituisce la nuova attività:

{"id": "task_...", "model": "dreamina-seedance-2-5", "status": "processing", "created_at": 1790321515}

Recuperare l'attività

curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Interroga ogni 10–20 secondi finché status non diventa completed o failed. Un timeout di rete durante il polling non significa che la generazione sia fallita: conserva l'identificativo dell'attività e riprendi il controllo. Non creare un'altra attività per verificare l'avanzamento.

Esempio di polling completo

Esegui questo dopo l'esempio di invio in Python qui sopra.

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "completed":
        print(task["output"]["video_url"])
        break
    if task["status"] == "failed":
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Attività completata

{
  "id": "task_...",
  "model": "dreamina-seedance-2-5",
  "status": "completed",
  "created_at": 1790321515,
  "finished_at": 1790321652,
  "output": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg",
    "content": {
      "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
      "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
    },
    "usage": {"completion_tokens": 108900, "total_tokens": 108900},
    "seed": 42,
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "framespersecond": 24,
    "generate_audio": true,
    "draft": false,
    "output_format": "mp4",
    "service_tier": "default",
    "execution_expires_after": 172800,
    "priority": 0
  }
}
CampoSignificato
idConserva questo identificativo per le interrogazioni successive.
statusprocessing, completed o failed.
output.video_urlIl video generato.
output.last_frame_urlIl fotogramma finale, quando return_last_frame è true.
output.contentGli stessi URL nella forma ufficiale di ModelArk.
output.usage.completion_tokensToken video del video finito; la quantità fatturata.
output.duration, output.resolution, output.ratio, output.framespersecond, output.seedI valori effettivamente renderizzati; seed è quello scelto dal modello.
created_at, finished_atTimestamp Unix in secondi.
error{"code", "message"} per un'attività fallita.

Gli URL dei video sono ospitati sul nostro storage. Salva il file nel tuo storage se ti serve una copia duratura.

Errori

Le richieste rifiutate prima della creazione di un'attività restituiscono un errore HTTP con un oggetto error e non vengono addebitate. Un'attività che fallisce dopo l'accettazione restituisce HTTP 200 all'interrogazione, con status: "failed" e un oggetto error. L'output bloccato dal filtro dei contenuti fallisce con content_policy_violation; un'attività che supera execution_expires_after fallisce con task_expired.

Vedi il catalogo errori comune per codici, stati HTTP e indicazioni sui tentativi.

{
  "id": "task_...",
  "model": "dreamina-seedance-2-5",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

Se è l'invio stesso ad andare in timeout, controlla il tuo storico delle attività prima di inviare di nuovo: la prima richiesta potrebbe essere già stata accettata.

Suggerimenti

  • Descrivi il soggetto, l'azione, il movimento di camera e l'illuminazione con frasi complete.
  • Fai le bozze a 480p con una duration breve, poi renderizza la versione scelta a una risoluzione più alta.
  • Concatena le inquadrature con return_last_frame: usa il fotogramma restituito come first_frame dell'attività successiva.
  • Per modificare un filmato, imposta omni_reference_task_type su edit e descrivi solo ciò che deve cambiare.

Correlati

Anteprima in bozza e video finale

Imposta draft: true per generare un’anteprima a 480p. Le altre risoluzioni non sono valide in modalità bozza. Il calcolo dell’utilizzo dei token e il prezzo unitario sono gli stessi della generazione standard a 480p.

{
  "model": "dreamina-seedance-2-5",
  "content": [{ "type": "text", "text": "A fox walks through a sunny garden." }],
  "draft": true,
  "resolution": "480p",
  "duration": 4,
  "ratio": "16:9"
}

Interroga l’ID dell’attività SeedRouter restituito finché status non è completed e output.draft non è true. Entro 7 giorni dalla creazione della bozza, invia una richiesta separata con quell’ID:

{
  "model": "dreamina-seedance-2-5",
  "content": [{ "type": "draft_task", "draft_task": { "id": "task_YOUR_DRAFT_ID" } }],
  "resolution": "1080p"
}

La bozza deve appartenere al tuo account, essere completata e usare lo stesso modello. content deve contenere un solo elemento draft_task. Imposta esplicitamente resolution su 1080p; ometti draft oppure impostalo su false. Non inviare di nuovo duration, ratio, seed, generate_audio, omni_reference_task_type, testo o contenuti multimediali, nemmeno con gli stessi valori. Queste impostazioni vengono ereditate dalla bozza.

Per la nuova attività puoi impostare watermark, return_last_frame, output_format, execution_expires_after, priority, safety_identifier e service_tier: "default". Le opzioni di output omesse usano i rispettivi valori predefiniti. content_filter viene ereditato e non può essere modificato. Un video finale generato con successo restituisce un nuovo ID attività, output.draft: false e output.draft_task_id contenente l’ID della tua bozza SeedRouter originale. Prima della scadenza, una stessa bozza può essere usata per più generazioni finali separate.

La bozza e il video finale vengono addebitati indipendentemente. Il video finale usa la tariffa 1080p per la categoria di input della bozza originale: se la bozza usava un video di riferimento, anche il video finale usa la tariffa con video di riferimento e include la durata del video di riferimento originale nell’utilizzo dei token. La clip della bozza non viene conteggiata come video di input aggiuntivo. Ogni attività usa il prezzo in vigore al momento dell’invio. Le richieste non riuscite non vengono addebitate.