> ## 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.

# Utiliser le polling et les webhooks pour la génération de vidéos

> Suivez la génération de vidéos CometAPI avec le polling et les webhooks en stockant les ID de tâche, en vérifiant le statut des tâches et en gérant les échecs de livraison des callbacks.

Utilisez le polling comme base pour la génération de vidéos, car chaque tâche asynchrone renvoie un ID de tâche que vous pouvez interroger. Ajoutez des webhooks uniquement lorsque l'endpoint vidéo sélectionné prend en charge les URL de callback, et conservez le polling comme source de vérité pour les callbacks manqués ou les livraisons propres au fournisseur.

## Créer une tâche vidéo

La requête suivante crée une tâche vidéo minimale et stocke l'ID renvoyé. Ajoutez des champs de durée, de résolution ou de callback uniquement lorsque la page du modèle sélectionné documente ces champs.

```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 réponse inclut un ID de tâche et un statut :

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

## Interroger le statut

La requête suivante vérifie le statut de la tâche vidéo :

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

La réponse évolue à mesure que la tâche progresse. Les réponses terminées peuvent inclure `video_url` lorsque l'adaptateur de modèle dispose d'une URL de résultat ; sinon, utilisez des champs de résultat spécifiques au modèle ou la route de contenu `/v1/videos/{id}/content` lorsque ce modèle prend en charge les téléchargements proxifiés.

```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>"
}
```

## Recevoir un webhook

CometAPI ne définit pas une charge utile de callback universelle pour chaque modèle vidéo. Traitez les callbacks comme des événements pass-through spécifiques au fournisseur, stockez le corps brut et réconciliez l'état final avec le polling.

Le gestionnaire Express suivant accepte un callback vidéo et stocke l'événement :

```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);
```

Une charge utile de callback inclut généralement des champs d'identité de tâche et de statut, mais l'imbrication exacte dépend du modèle ou du fournisseur sélectionné :

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

## Erreurs courantes

| Error                                                     | Fix                                                                                                                                                                 |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Callback perdu                                            | Interrogez par ID de tâche jusqu'à ce que votre application ait enregistré un état terminal.                                                                        |
| Callback dupliqué                                         | Rendez le traitement des callbacks idempotent par ID de tâche.                                                                                                      |
| Callback rejeté                                           | Renvoyez rapidement une réponse `2xx`, puis traitez la tâche en arrière-plan.                                                                                       |
| Incompatibilité de charge utile spécifique au fournisseur | Stockez la charge utile brute du callback et normalisez-la dans votre application.                                                                                  |
| `video_url` manquant                                      | Traitez `video_url` comme facultatif et utilisez le polling ainsi que des champs de résultat spécifiques au modèle ou `/v1/videos/{id}/content` lorsque disponible. |

## Liens connexes

* [Modèles vidéo](/api/video)
* [Créer une vidéo](/api/video/sora-2/create)
* [Récupérer une vidéo](/api/video/sora-2/retrieve)
* [Page des modèles](/fr/overview/models)
* [Répertoire des modèles](https://www.cometapi.com/models/)
* [Tarification](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": "Comment utiliser les webhooks et le polling pour la génération de vidéo ?",
        "description": "Utilisez le polling et les webhooks pour la génération de vidéo CometAPI en stockant les ID de tâche, en vérifiant l’état des tâches et en gérant les échecs de livraison des callbacks.",
        "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": "Documentation CometAPI",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Guides",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Comment utiliser les webhooks et le polling pour la génération de vidéo ?",
            "item": "https://apidoc.cometapi.com/guides/webhook-and-polling-for-video-generation"
          }
        ]
      }
    ]
    }
    `}
</script>
