Claude Opus 5.5 è disponibile su SeedRouter

Video

Seedance 2.0

View Markdown

Genera video con Seedance 2.0 tramite l'API di attività ufficiale ModelArk: da testo a video, primo e ultimo fotogramma e riferimenti immagine, video e audio, da 480p a 4K.

Seedance 2.0 è il modello di generazione video di ByteDance (Dreamina Seedance 2.0). 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 modelloRisoluzioniNote
dreamina-seedance-2-0480p, 720p, 1080p, 4KModello completo
dreamina-seedance-2-0-fast480p, 720pPrezzo al secondo più basso
dreamina-seedance-2-0-mini480p, 720pPrezzo al secondo minimo

Tutti e tre gli ID accettano gli stessi parametri. 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-0",
    "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ì—Uno dei tre ID modello indicati sopra.
contentobject[]Sì—Il prompt e i media; vedi sotto.
resolutionenumNo720p480p, 720p, 1080p, 4k; gli ID Fast e Mini accettano solo 480p e 720p.
ratioenumNoadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive.
durationintegerNo54–15 secondi, oppure -1 per lasciar scegliere il modello.
generate_audiobooleanNotrueGenera l'audio insieme al video.
watermarkbooleanNofalseAggiunge una filigrana.
return_last_framebooleanNofalseRestituisce anche il fotogramma finale come URL di immagine.
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 9 immagini di riferimento.
Video{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoFino a 3.
Audio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioFino a 3. Richiede un'immagine o un video di riferimento.

I campi sconosciuti vengono rifiutati. Non supportati: seed, callback_url (interroga invece l'attività), draft e draft_task, tools, i parametri frames e camera_fixed esclusivi di 1.x, nonché output_format e omni_reference_task_type (solo Seedance 2.5). 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

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-0",
    "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–9 immagini di riferimento
VideoMP4, MOV (H.264 o H.265)2–15 secondi ciascuno, fino a 3, al massimo 15 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–15 secondi ciascuno, fino a 3, al massimo 15 secondi in totale; richiede un'immagine o un video di riferimento; 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.0 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 10.044 token a 480p (864×496), 21.600 a 720p, 48.600 a 1080p e 194.400 a 4K.

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-0", "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-0",
  "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-0",
  "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.

Correlati