# Seedance 2.5 (https://funnyai.io/it/docs/seedance-2-5)





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

## Collegarsi a Funny AI [#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.5                                                                                    |
| --------------- | ----------------------------------------------------------------------------------------------- |
| ID modello      | `bytedance/seedance-2.5`                                                                        |
| `resolution`    | `480p`, `720p`, `1080p`; valore predefinito: `720p`.                                            |
| `duration`      | 4–30 secondi di video in uscita oppure `-1` per la durata automatica; valore predefinito: `-1`. |
| `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 14 campi di primo livello. Usa i nomi indicati qui, compresi `aspectRatio` e `generateAudio`.

## Inviare un'attività di Seedance 2.5 [#submit-a-seedance-25-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.5",
  "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.5 [#query-a-seedance-25-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.5 [#seedance-25-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-5')" />

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

## Campi della richiesta [#request-fields]

Invia un oggetto JSON. Per una nuova scena sono obbligatori `model` e un prompt non vuoto o almeno un input multimediale; gli altri campi sono facoltativi. Per un rendering finale, invia solo `model`, `draftTaskId` e `resolution: "1080p"` (facoltativi: `n: 1` e `providerOptions.bytedance.output_format`). I campi sconosciuti vengono rifiutati.

| Campo             | Tipo              | Specifica                                                                                                                                                                                                                                                                                          |
| ----------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | string            | Obbligatorio: `bytedance/seedance-2.5`.                                                                                                                                                                                                                                                            |
| `draftTaskId`     | string            | ID pubblico della tua bozza completata di Seedance 2.5. Per il rendering finale, invia solo `model`, `draftTaskId` e `resolution: "1080p"` (facoltativi: `n: 1` e `providerOptions.bytedance.output_format`).                                                                                      |
| `prompt`          | string            | Istruzioni testuali; fino a 20.000 caratteri su questo servizio. Una nuova scena richiede un prompt o un input multimediale; ometti questo campo quando usi `draftTaskId`.                                                                                                                         |
| `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 30 immagini e 10 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`. Le modalità con primo fotogramma richiedono adaptive.                                                                                                                                                                       |
| `resolution`      | string            | `480p`, `720p`, `1080p`. Valore predefinito: `720p`. Accetta anche `854x480`, `1280x720`, `1920x1080` come livelli di risoluzione; usa `aspectRatio` per scegliere il formato.                                                                                                                     |
| `duration`        | integer           | 4–30 secondi di video in uscita oppure `-1` per la durata automatica. Valore predefinito: `-1`.                                                                                                                                                                                                    |
| `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 10 URL HTTP(S)), `seed` (stessi limiti del campo `seed` di primo livello), `draft` (boolean; predefinito `false`; `true` richiede `480p`), `output_format` (`mp4` o `mov`; predefinito `mp4`). 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 30 immagini, 10 video e 10 clip audio, per un massimo di 50 riferimenti totali.

* Gli input di fotogrammi richiedono `aspectRatio: "adaptive"`. L'audio di riferimento può essere usato senza immagini o video.

* 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, HEIC o HEIF; meno di 30 MB; ogni lato di 300–6.000 pixel; rapporto d'aspetto 0,4–2,5.

* Video: MP4 o MOV; massimo 200 MB per file; ogni clip di 2–30 secondi e massimo 30 secondi complessivi; 300–6.000 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–30 secondi e massimo 30 secondi complessivi.

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

* Usa `draftTaskId` per eseguire il rendering a 1080p di una bozza completata. Le opzioni native arbitrarie per le attività non sono accettate.

## 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.5",
  "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.5",
  "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
}
```

### Anteprima in bozza [#draft-preview]

Usa `providerOptions.bytedance.draft: true` con `resolution: "480p"` per creare una bozza. La bozza usa la normale tariffa per token a 480p. Dopo il completamento, usa il suo ID pubblico per un rendering finale separato a 1080p.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "A paper boat floats through a sunlit stream. Slow tracking shot.",
  "resolution": "480p",
  "aspectRatio": "16:9",
  "duration": 4,
  "generateAudio": true,
  "providerOptions": {
    "bytedance": {
      "draft": true
    }
  }
}
```

### Rendering di una bozza a 1080p [#render-a-draft-at-1080p]

Invia questo corpo a `POST /v1/videos`, usando l'ID pubblico `task_…` della bozza completata. La bozza deve appartenere al tuo account, usare lo stesso modello e canale ed essere stata creata da meno di 7 giorni. Questa durata di validità nativa della bozza è distinta dal periodo di conservazione del video.

```json
{
  "model": "bytedance/seedance-2.5",
  "draftTaskId": "task_YOUR_COMPLETED_DRAFT",
  "resolution": "1080p"
}
```

Non inviare di nuovo `prompt`, contenuti multimediali, `duration`, `aspectRatio`, `seed`, `generateAudio`, `fps`, `draft` o `referenceAudio`. Queste impostazioni vengono ereditate dalla bozza. Puoi impostare `providerOptions.bytedance.output_format` per l’output finale. L'API restituisce un **nuovo ID attività**; interroga periodicamente `GET /v1/videos/{new_task_id}` per ottenere il video finale e il suo URL Bunny.

Il rendering finale viene addebitato separatamente alla tariffa attuale per 1080p e secondo la fascia per video di riferimento della bozza originale, in base ai token effettivi al completamento. Il polling non rigenera il video né comporta nuovi addebiti. Se l'esito dell'invio è incerto, non ripetere automaticamente la richiesta.

## Output MOV [#mov-output]

Imposta `providerOptions.bytedance.output_format` su `mov` per MOV oppure su `mp4` per MP4 (predefinito). Questa opzione di output è disponibile sia per una nuova scena sia per un rendering finale da una bozza.

```json
{
  "model": "bytedance/seedance-2.5",
  "prompt": "A red ball on a plain table. Static camera.",
  "resolution": "480p",
  "duration": 4,
  "providerOptions": {
    "bytedance": {
      "output_format": "mov"
    }
  }
}
```

Al completamento, `videos[0].url` è l’URL Bunny firmato del file `.mov` originale e `videos[0].mediaType` è `video/quicktime`. Il file MOV non viene convertito in MP4. La riproduzione nel browser dipende dal supporto dei codec; scarica il file se il tuo browser non riesce a riprodurlo. I file vengono caricati su Bunny; nel database vengono salvati solo i riferimenti ai file e i metadati delle attività. Gli input multimediali in Base64 non sono accettati.

## 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.5",
  "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.5",
  "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.5",
  "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.5](https://funnyai.io/models/seedance-2-5/openapi.json).
