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

# Gebruik polling en webhooks voor videogenaratie

> Volg CometAPI-videogeneratie met polling en webhooks door task ID's op te slaan, de taskstatus te controleren en mislukkingen bij callbacklevering af te handelen.

Gebruik polling als basis voor videogenaratie, omdat elke async job een task ID retourneert die je kunt opvragen. Voeg webhooks alleen toe wanneer het geselecteerde video-endpoint callback-URL's ondersteunt, en behoud polling als de bron van waarheid voor gemiste of providerspecifieke callbacklevering.

## Maak een videotaak aan

De volgende aanvraag maakt een minimale videotaak aan en slaat de geretourneerde ID op. Voeg velden voor duur, resolutie of callback alleen toe wanneer de pagina van het geselecteerde model die velden documenteert.

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

De response bevat een task ID en status:

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

## Poll de status

De volgende aanvraag controleert de status van de videotaak:

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

De response verandert naarmate de task vordert. Voltooide responses kunnen `video_url` bevatten wanneer de modeladapter een result-URL heeft; gebruik anders modelspecifieke result-velden of de contentroute `/v1/videos/{id}/content` wanneer dat model proxied downloads ondersteunt.

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

## Ontvang een webhook

CometAPI definieert niet één universele callback-payload voor elk videomodel. Behandel callbacks als providerspecifieke pass-through-events, sla de ruwe body op en stem de uiteindelijke status af met polling.

De volgende Express-handler accepteert een videocallback en slaat de event op:

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

Een callback-payload bevat doorgaans velden voor taskidentiteit en status, maar de exacte nesting hangt af van het geselecteerde model of de provider:

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

## Veelvoorkomende fouten

| Error                                  | Oplossing                                                                                                                                  |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Verloren callback                      | Poll op task ID totdat je app een eindstatus heeft opgeslagen.                                                                             |
| Dubbele callback                       | Maak callbackafhandeling idempotent op basis van task ID.                                                                                  |
| Callback geweigerd                     | Retourneer snel een `2xx`-response en verwerk de job daarna op de achtergrond.                                                             |
| Mismatch in providerspecifieke payload | Sla de ruwe callback-payload op en normaliseer die in je app.                                                                              |
| Ontbrekende `video_url`                | Behandel `video_url` als optioneel en gebruik polling plus modelspecifieke result-velden of `/v1/videos/{id}/content` wanneer beschikbaar. |

## Gerelateerde links

* [Videomodellen](/api/video)
* [Video maken](/api/video/sora-2/create)
* [Video ophalen](/api/video/sora-2/retrieve)
* [Modellenpagina](/nl/overview/models)
* [Modeldirectory](https://www.cometapi.com/models/)
* [Prijzen](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": "Hoe gebruik ik webhooks en polling voor videogeneratie?",
        "description": "Gebruik polling en webhooks voor CometAPI-videogeneratie door task-ID's op te slaan, de taskstatus te controleren en callback-afleveringsfouten af te handelen.",
        "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": "CometAPI-documentatie",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Handleidingen",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Hoe gebruik ik webhooks en polling voor videogeneratie?",
            "item": "https://apidoc.cometapi.com/guides/webhook-and-polling-for-video-generation"
          }
        ]
      }
    ]
    }
    `}
</script>
