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

# Gunakan polling dan webhook untuk pembuatan video

> Lacak pembuatan video CometAPI dengan polling dan webhook dengan menyimpan task ID, memeriksa status task, dan menangani kegagalan pengiriman callback.

Gunakan polling sebagai dasar untuk pembuatan video karena setiap job async mengembalikan task ID yang dapat Anda kueri. Tambahkan webhook hanya ketika endpoint video yang dipilih mendukung callback URL, dan tetap gunakan polling sebagai sumber kebenaran untuk callback yang terlewat atau pengiriman callback yang spesifik penyedia.

## Buat task video

Permintaan berikut membuat task video minimal dan menyimpan ID yang dikembalikan. Tambahkan field durasi, resolusi, atau callback hanya ketika halaman model yang dipilih mendokumentasikan field tersebut.

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

Respons menyertakan task ID dan 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 status

Permintaan berikut memeriksa status task video:

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

Respons berubah seiring progress task. Respons yang selesai dapat menyertakan `video_url` ketika adapter model memiliki result URL; jika tidak, gunakan field hasil yang spesifik model atau rute content `/v1/videos/{id}/content` ketika model tersebut mendukung unduhan yang diproksikan.

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

## Terima webhook

CometAPI tidak mendefinisikan satu payload callback universal untuk setiap model video. Perlakukan callback sebagai event pass-through yang spesifik penyedia, simpan body mentahnya, dan cocokkan state final dengan polling.

Handler Express berikut menerima callback video dan menyimpan event:

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

Payload callback umumnya menyertakan identitas task dan field status, tetapi nesting yang tepat bergantung pada model atau penyedia yang dipilih:

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

## Error umum

| Error                                    | Perbaikan                                                                                                                                     |
| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Callback hilang                          | Lakukan polling berdasarkan task ID sampai aplikasi Anda menyimpan terminal state.                                                            |
| Callback duplikat                        | Buat penanganan callback idempoten berdasarkan task ID.                                                                                       |
| Callback ditolak                         | Kembalikan respons `2xx` dengan cepat, lalu proses job di latar belakang.                                                                     |
| Ketidakcocokan payload spesifik penyedia | Simpan payload callback mentah dan normalkan di aplikasi Anda.                                                                                |
| `video_url` tidak ada                    | Perlakukan `video_url` sebagai opsional dan gunakan polling ditambah field hasil spesifik model atau `/v1/videos/{id}/content` jika tersedia. |

## Tautan terkait

* [Model Video](/api/video)
* [Membuat video](/api/video/sora-2/create)
* [Mengambil video](/api/video/sora-2/retrieve)
* [Halaman model](/id/overview/models)
* [Direktori model](https://www.cometapi.com/models/)
* [Harga](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": "Bagaimana cara menggunakan webhook dan polling untuk pembuatan video?",
        "description": "Gunakan polling dan webhook untuk pembuatan video CometAPI dengan menyimpan ID tugas, memeriksa status tugas, dan menangani kegagalan pengiriman 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": "Dokumentasi CometAPI",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Panduan",
            "item": "https://apidoc.cometapi.com/guides/use-cometapi-with-openai-sdk"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Bagaimana cara menggunakan webhook dan polling untuk pembuatan video?",
            "item": "https://apidoc.cometapi.com/guides/webhook-and-polling-for-video-generation"
          }
        ]
      }
    ]
    }
    `}
</script>
