# Seedance 2.0 (https://wanapi.app/it/docs/seedance-2-0)





Seedance 2.0 supporta testo, primo e ultimo fotogramma e riferimenti di immagini, video e audio, con output a 480p, 720p, 1080p, 4K. Genera video lunghi fino a 15 secondi per richiesta. [Dettagli del modello e Playground](/it/models/seedance-2-0).

## Collegarsi a Wan API [#connect-to-wan-api]

Usa `https://api.wanapi.app` come URL di base dell'API. Crea una chiave con la famiglia di modelli **Seedance** nelle [impostazioni delle chiavi API](/it/settings/apikeys) e inviala come `Authorization: Bearer YOUR_API_KEY`. Conserva le chiavi sul tuo server. Il Playground usa la sessione del sito e addebita lo stesso saldo dell'account; non richiede di incollare una chiave nel browser.

L'accesso richiede un account abilitato con saldo sufficiente. `GET /v1/models` elenca i modelli disponibili per la tua chiave. I modelli Seedance usano `POST /v1/videos`; seleziona il modello nel corpo JSON.

| Impostazione    | Seedance 2.0                                                                                   |
| --------------- | ---------------------------------------------------------------------------------------------- |
| ID modello      | `bytedance/seedance-2.0`                                                                       |
| `resolution`    | `480p`, `720p`, `1080p`, `4k`; valore predefinito: `720p`.                                     |
| `duration`      | 4–15 secondi di video in uscita oppure `-1` per la durata automatica; valore predefinito: `5`. |
| `aspectRatio`   | `adaptive`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`; valore predefinito: `adaptive`.       |
| `generateAudio` | `true` per impostazione predefinita. `false` non riduce la tariffa per token.                  |
| Output          | Un video per richiesta, a 24 fps.                                                              |

I [campi della richiesta](#request-fields) descrivono tutti i 13 campi di primo livello. Usa i nomi indicati qui, compresi `aspectRatio` e `generateAudio`.

## Inviare un'attività di Seedance 2.0 [#submit-a-seedance-20-task]

Questa richiesta da testo a video produce una clip di quattro secondi a 720p. Imposta `WAN_API_KEY` con la tua chiave Seedance sul server. Invia una sola volta e salva l'`id` restituito.

```bash
curl https://api.wanapi.app/v1/videos \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "bytedance/seedance-2.0",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "720p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true
}'
```

## Interrogare un'attività di Seedance 2.0 [#query-a-seedance-20-task]

Salva l'`id` restituito come `TASK_ID`, poi interroga l'attività con la stessa chiave. L'invio restituisce una ricevuta dell'attività; il video è disponibile al completamento. Inizia il polling ogni cinque secondi; consulta [stati delle attività e download](#poll-and-download-the-video).

```bash
curl "https://api.wanapi.app/v1/videos/$TASK_ID" \
  -H "Authorization: Bearer $WAN_API_KEY"
```

## Prezzi di Seedance 2.0 [#seedance-20-pricing]

Le tariffe sono in USD per un milione di token video. I token video in ingresso e in uscita determinano il costo finale. Risoluzione, durata e video di riferimento influiscono sul consumo; usa la tariffa corrispondente alle richieste con o senza video di riferimento. L'audio non ha una fascia di prezzo separata.

<SeedanceModelPricing model="findSeedanceModel('seedance-2-0')" />

[Consulta prezzi e stime di Seedance 2.0](/it/models/seedance-2-0#pricing). Controlla la stima nel [Playground](/it/models/seedance-2-0#playground) prima dell'invio.

## Campi della richiesta [#request-fields]

Invia un oggetto JSON. `model` è obbligatorio, insieme a un prompt non vuoto o almeno un input multimediale. Gli altri campi sono facoltativi. I campi sconosciuti vengono rifiutati.

| Campo             | Tipo              | Specifica                                                                                                                                                                                                     |
| ----------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | string            | Obbligatorio: `bytedance/seedance-2.0`.                                                                                                                                                                       |
| `prompt`          | string            | Istruzioni testuali; fino a 20.000 caratteri su questo servizio. È obbligatorio un prompt o un input multimediale.                                                                                            |
| `image`           | URL o oggetto URL | URL dell'immagine del primo fotogramma, oppure un oggetto con `type: "url"`, `url` e `mediaType` facoltativo. Usa `image` oppure `frameImages`, non entrambi.                                                 |
| `frameImages`     | array             | Un `first_frame` e un `last_frame` facoltativo. Ogni elemento contiene `frameType` e `image`; vedi l'esempio dei fotogrammi qui sotto.                                                                        |
| `inputReferences` | array             | Fino a 9 immagini e 3 video. Ogni elemento contiene `type: "url"`, `url` e `mediaType`. È accettata anche la forma URL con `data`/`mediaType`.                                                                |
| `aspectRatio`     | string            | `adaptive` (predefinito), `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `21:9`.                                                                                                                                        |
| `resolution`      | string            | `480p`, `720p`, `1080p`, `4k`. Valore predefinito: `720p`. Accetta anche `854x480`, `1280x720`, `1920x1080` e `3840x2160` come livelli di risoluzione; usa `aspectRatio` per scegliere il formato.            |
| `duration`        | integer           | 4–15 secondi di video in uscita oppure `-1` per la durata automatica. Valore predefinito: `5`.                                                                                                                |
| `fps`             | integer           | Fisso a `24`; omettilo oppure invia `24`.                                                                                                                                                                     |
| `seed`            | integer           | Facoltativo; da `-1` a `2147483647`. La ripetibilità non è garantita. Non specificare anche `providerOptions.bytedance.seed`.                                                                                 |
| `generateAudio`   | boolean           | Genera audio. Valore predefinito: `true`; disattivarlo non cambia la tariffa per token.                                                                                                                       |
| `n`               | integer           | Fisso a `1`; un video per richiesta.                                                                                                                                                                          |
| `providerOptions` | object            | Oggetto `bytedance` facoltativo: `referenceAudio` (fino a 3 URL HTTP(S)), `seed` (stessi limiti del campo `seed` di primo livello). `draft: true` non è supportato. Le opzioni sconosciute vengono rifiutate. |

### Combinazioni di input e limiti dei contenuti [#input-combinations-and-media-limits]

* Usa `image` per un primo fotogramma oppure `frameImages` per un primo fotogramma e un ultimo facoltativo. Un ultimo fotogramma da solo e i tipi di fotogramma duplicati vengono rifiutati.

* I fotogrammi non possono essere combinati con `inputReferences` o `providerOptions.bytedance.referenceAudio`.

* La modalità riferimenti accetta fino a 9 immagini, 3 video e 3 clip audio, per un massimo di 15 riferimenti totali.

* Gli input multimediali devono essere URL HTTP(S) pubblici. Non sono accettati caricamenti di byte né URL con credenziali.

* Immagini: JPEG, PNG, WebP, BMP, TIFF o GIF; meno di 30 MB; ogni lato di 300–6000 pixel; rapporto d'aspetto 0.4–2.5.

* Video: MP4 o MOV; massimo 50 MB per file; ogni clip di 2–15 secondi e massimo 15 secondi complessivi; 300–6000 pixel per lato, rapporto d'aspetto 0.4–2.5, 24–60 fps.

* Audio: MP3 o WAV; massimo 15 MB per file; ogni clip di 2–15 secondi e massimo 15 secondi complessivi. È richiesta almeno un'immagine o un video di riferimento.

* Dimensioni, codifica e durata dei contenuti remoti vengono verificate durante l'elaborazione; la sola validazione dell'URL non garantisce che un file sia utilizzabile.

* Questo endpoint non espone il rendering finale da una precedente attività di bozza né opzioni native arbitrarie per le attività.

## Esempi con fotogrammi e riferimenti [#frame-and-reference-examples]

Invia questi corpi allo stesso endpoint `POST /v1/videos`. Prima dell'invio, sostituisci ogni URL `example.com` con un tuo URL multimediale direttamente accessibile. Mantieni disponibili gli URL di input fino al completamento dell'attività.

### Primo e ultimo fotogramma [#first-and-last-frames]

Per un solo primo fotogramma, usa `image: "https://example.com/first-frame.jpg"` e ometti `frameImages`. Per definire l'inizio e la fine della clip, usa:

```json
{
  "model": "bytedance/seedance-2.0",
  "prompt": "The camera slowly moves from the opening scene to the closing scene.",
  "frameImages": [
    {
      "frameType": "first_frame",
      "image": "https://example.com/first-frame.jpg"
    },
    {
      "frameType": "last_frame",
      "image": "https://example.com/last-frame.jpg"
    }
  ],
  "aspectRatio": "adaptive",
  "resolution": "720p",
  "duration": 4
}
```

### Riferimenti di immagini, video e audio [#image-video-and-audio-references]

Inserisci gli input di immagini e video in `inputReferences`, con un tipo MIME esplicito. Inserisci gli URL audio in `providerOptions.bytedance.referenceAudio`. Non aggiungere input di fotogrammi a questa richiesta.

```json
{
  "model": "bytedance/seedance-2.0",
  "prompt": "Use the character from the image and the camera movement from the video.",
  "inputReferences": [
    {
      "type": "url",
      "url": "https://example.com/character.jpg",
      "mediaType": "image/jpeg"
    },
    {
      "type": "url",
      "url": "https://example.com/motion.mp4",
      "mediaType": "video/mp4"
    }
  ],
  "providerOptions": {
    "bytedance": {
      "referenceAudio": [
        "https://example.com/sound.wav"
      ]
    }
  },
  "resolution": "720p",
  "duration": 4
}
```

## Polling e download del video [#poll-and-download-the-video]

Un'attività accettata restituisce un oggetto come questo. ID e timestamp di esempio sono illustrativi:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "queued",
  "progress": 0,
  "created_at": 1792022400
}
```

Interroga periodicamente `GET /v1/videos/{task_id}` con la tua chiave API. La query restituisce lo stesso ID pubblico dell'attività e lo stesso modello. Usa `status` per decidere quando interrompere il polling; `progress` non è una stima del tempo rimanente.

| Stato         | Significato                    | Passo successivo                           |
| ------------- | ------------------------------ | ------------------------------------------ |
| `queued`      | L'attività è stata accettata.  | Continua il polling.                       |
| `in_progress` | La generazione è in corso.     | Continua il polling.                       |
| `completed`   | Il video è pronto.             | Leggi `videos[0].url` e scarica il video.  |
| `failed`      | La generazione non è riuscita. | Interrompi il polling e controlla `error`. |

Una query completata include `videos`, un array di oggetti contenenti `url` e `mediaType`. I timestamp sono espressi in secondi Unix; `completed_at` compare quando viene registrato il completamento.

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "completed",
  "progress": 100,
  "created_at": 1792022400,
  "completed_at": 1792022460,
  "videos": [
    {
      "url": "/v1/tasks/task_EXAMPLE/artifacts/video/content",
      "mediaType": "video/mp4"
    }
  ]
}
```

Se l'URL restituito è un percorso relativo, risolvilo rispetto a `https://api.wanapi.app` e autenticati con la tua chiave API. Per l'esempio precedente:

```bash
curl "https://api.wanapi.app/v1/tasks/$TASK_ID/artifacts/video/content" \
  -H "Authorization: Bearer $WAN_API_KEY" \
  -o video.mp4
```

Se viene restituito un URL multimediale HTTPS firmato, usalo direttamente senza inoltrare la chiave API a quell'host. Gli URL dei risultati possono scadere. Salva i video da conservare nel tuo spazio di archiviazione. Il polling e il download di un risultato esistente non creano un'altra generazione.

Un'attività non riuscita include un oggetto `error` con `code` e `message`, per esempio:

```json
{
  "id": "task_EXAMPLE",
  "object": "video",
  "model": "bytedance/seedance-2.0",
  "status": "failed",
  "error": {
    "code": "generation_failed",
    "message": "Video generation failed"
  }
}
```

## Fatturazione e gestione degli errori [#billing-and-failure-handling]

L'addebito finale dipende dal consumo effettivo di token video e dalla tariffa attuale del modello. La stima del Playground è una stima massima, non un preventivo fisso. Clip più lunghe e risoluzioni di output maggiori possono aumentare il consumo di token. Le richieste non riuscite non vengono addebitate.

* **Parametri non validi:** correggi i campi o la combinazione di input prima di inviare di nuovo. Controlla formati e limiti dei contenuti, oltre alla sintassi degli URL.
* **Autenticazione o accesso al modello:** usa una chiave Seedance valida e abilitata per il modello richiesto.
* **Saldo insufficiente:** aggiungi fondi prima di una nuova richiesta a pagamento. Un limite della chiave non aggiunge credito all'account.
* **Errore temporaneo nel polling:** riprova la GET con intervalli crescenti e un tempo massimo di attesa. Una query non riuscita non significa che la generazione sia fallita.
* **Timeout dell'invio o ID attività mancante:** l'esito potrebbe essere sconosciuto. Non ripetere automaticamente la POST; potrebbe creare una seconda attività a pagamento.
* **Errore di download:** riprova il risultato esistente prima di avviare una nuova generazione.

Conserva l'ID attività e contatta l'[assistenza](/it/contact) se occorre indagare su un invio dall'esito incerto.

[Scarica lo schema OpenAPI di Seedance 2.0](https://wanapi.app/models/seedance-2-0/openapi.json).
