> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Usa polling e webhook per la generazione video

> Monitora la generazione video di CometAPI con polling e webhook archiviando gli ID delle attività, controllando lo stato delle attività e gestendo i fallimenti nella consegna dei callback.

Usa il polling come base per la generazione video perché ogni job asincrono restituisce un ID attività che puoi interrogare. Aggiungi i webhook solo quando l'endpoint video selezionato supporta gli URL di callback, e mantieni il polling come fonte di verità per le callback perse o consegnate in modo specifico dal provider.

## Crea un'attività video

La seguente richiesta crea un'attività video minima e memorizza l'ID restituito. Aggiungi i campi di durata, risoluzione o callback solo quando la pagina del modello selezionato documenta tali campi.

```bash theme={null}
curl https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=doubao-seedance-2-0" \
  -F "prompt=A cinematic shot of a paper airplane crossing a desk"
```

La risposta include un ID attività e uno stato:

```json theme={null}
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}
```

## Esegui il polling dello stato

La seguente richiesta controlla lo stato dell'attività video:

```bash theme={null}
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
```

La risposta cambia man mano che l'attività avanza. Le risposte completate possono includere `video_url` quando l'adapter del modello ha un URL del risultato; altrimenti usa i campi di risultato specifici del modello oppure la route dei contenuti `/v1/videos/{id}/content` quando quel modello supporta i download tramite proxy.

```json theme={null}
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}
```

## Ricevi un webhook

CometAPI non definisce un payload di callback universale per ogni modello video. Tratta i callback come eventi pass-through specifici del provider, memorizza il body grezzo e riconcilia lo stato finale con il polling.

Il seguente handler Express accetta un callback video e memorizza l'evento:

```javascript theme={null}
import express from "express";

const app = express();
app.use(express.json({ limit: "2mb" }));

app.post("/cometapi/video-webhook", async (request, response) => {
  const event = request.body;

  console.log("Task ID:", event.task_id || event.id);
  console.log("Status:", event.status);

  response.status(200).json({ received: true });
});

app.listen(3000);
```

Un payload di callback include comunemente i campi di identità dell'attività e dello stato, ma la struttura esatta dipende dal modello o provider selezionato:

```json theme={null}
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}
```

## Errori comuni

| Errore                                                    | Soluzione                                                                                                                                                   |
| --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Callback persa                                            | Esegui il polling tramite ID attività finché la tua app non ha memorizzato uno stato terminale.                                                             |
| Callback duplicata                                        | Rendi idempotente la gestione delle callback tramite ID attività.                                                                                           |
| Callback rifiutata                                        | Restituisci rapidamente una risposta `2xx`, quindi elabora il job in background.                                                                            |
| Mancata corrispondenza del payload specifico del provider | Memorizza il payload grezzo della callback e normalizzalo nella tua app.                                                                                    |
| `video_url` mancante                                      | Considera `video_url` come facoltativo e usa il polling insieme ai campi di risultato specifici del modello o `/v1/videos/{id}/content` quando disponibile. |

## Link correlati

* [Modelli video](/api/video)
* [Creare un video](/api/video/sora-2/create)
* [Recuperare un video](/api/video/sora-2/retrieve)
* [Pagina dei modelli](/it/overview/models)
* [Directory dei modelli](https://www.cometapi.com/models/)
* [Prezzi](https://www.cometapi.com/pricing/)

<script type="application/ld+json">
  {`
    {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "TechArticle",
        "@id": "https://apidoc.cometapi.com/guides/webhook-and-polling-for-video-generation",
        "headline": "Come si usano i webhook e il polling per la generazione di video?",
        "description": "Usa polling e webhook per la generazione video di CometAPI memorizzando gli ID delle attività, controllando lo stato delle attività e gestendo gli errori di recapito dei callback.",
        "url": "https://apidoc.cometapi.com/guides/webhook-and-polling-for-video-generation",
        "author": {
          "@type": "Organization",
          "name": "CometAPI"
        },
        "publisher": {
          "@type": "Organization",
          "name": "CometAPI",
          "url": "https://www.cometapi.com"
        }
      },
      {
        "@type": "BreadcrumbList",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "Documentazione CometAPI",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Guide",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Come si usano i webhook e il polling per la generazione di video?",
            "item": "https://apidoc.cometapi.com/guides/webhook-and-polling-for-video-generation"
          }
        ]
      }
    ]
    }
    `}
</script>
