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

# Video oluşturma API'leri

> Seedance, HappyHorse, Sora 2, Veo 3, Wan, xAI, Vidu, Omni, Kling ve Runway iş akışları için CometAPI video rotalarını seçin.

İş türünüze uyan sağlayıcı iş akışını seçerek CometAPI video model belgelerini kullanın. Çoğu video endpoint'i eşzamansız görevler oluşturur, bu nedenle görev kimliğini kaydedin ve sonuçları almak için polling kullanın. Callback'leri yalnızca modele özel sayfada callback desteği belgelenmişse ekleyin.

## Bir video API'si seçin

<CardGroup cols={2}>
  <Card title="Bir Seedance videosu oluşturun" icon="sparkles" href="/api/video/seedance/create">
    Seedance video görevleri oluşturun.
  </Card>

  <Card title="Bir HappyHorse videosu oluşturun" icon="sparkles" href="/api/video/happyhorse/create">
    HappyHorse text-to-video işleri oluşturun.
  </Card>

  <Card title="Bir Sora 2 videosu oluşturun" icon="film" href="/api/video/sora-2/create">
    Sora 2 video işleri oluşturun.
  </Card>

  <Card title="Bir Sora 2 videosunu alın" icon="refresh" href="/api/video/sora-2/retrieve">
    Sora video işlerini sorgulayın.
  </Card>

  <Card title="Bir Veo 3 videosu oluşturun" icon="film" href="/api/video/veo3/create">
    Veo video işleri oluşturun.
  </Card>

  <Card title="Bir Wan videosu oluşturun" icon="sparkles" href="/api/video/wan/create">
    Wan text-to-video işleri oluşturun.
  </Card>

  <Card title="Bir xAI videosu oluşturun" icon="film" href="/api/video/xai/video-generation">
    xAI video işleri oluşturun.
  </Card>

  <Card title="Bir Vidu videosu oluşturun" icon="sparkles" href="/api/video/vidu/create">
    Vidu text-to-video işleri oluşturun.
  </Card>

  <Card title="Bir Omni videosu oluşturun (Beta)" icon="sparkles" href="/api/video/omni/create">
    Beta Omni video işleri oluşturun.
  </Card>

  <Card title="Bir Kling text-to-video görevi oluşturun" icon="film" href="/api/video/kling/text-to-video">
    Metin prompt'larından Kling videoları oluşturun.
  </Card>

  <Card title="Bir Runway image-to-video görevi oluşturun" icon="film" href="/api/video/runway/official-format/runway-images-raw-video">
    Görsellerden Runway videoları oluşturun.
  </Card>
</CardGroup>

## Bir video görevi oluşturun ve sorgulayın

[Models sayfasından](/tr/overview/models) veya [model dizininden](https://www.cometapi.com/models/) video destekli bir model ID kullanın. Aşağıdaki örnekler `POST /v1/videos` ile bir video görevi oluşturur, ardından görev terminal duruma ulaşana kadar dönen görev kimliğini sorgular.

<Note>
  Bu örneklerde `your-video-model-id` yer tutucusu kullanılır. İsteği çalıştırmadan önce bunu [Models sayfasındaki](/tr/overview/models) veya [model dizinindeki](https://www.cometapi.com/models/) kullanılabilir bir video model ID ile değiştirin.
</Note>

<Tip>
  API playground'larını ve endpoint şemalarını kullanmak için [Bir Seedance videosu oluşturun](/api/video/seedance/create) ve [Bir Seedance videosunu alın](/api/video/seedance/query) sayfalarını açın.
</Tip>

<CodeGroup>
  ```python Python theme={null}
  import os
  import time
  import requests

  headers = {"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]}

  create_response = requests.post(
      "https://api.cometapi.com/v1/videos",
      headers=headers,
      data={
          "model": "your-video-model-id",
          "prompt": "A calm camera move across a desk with a paper airplane",
      },
      timeout=30,
  )
  create_response.raise_for_status()
  task = create_response.json()
  task_id = task["id"]

  terminal_statuses = {"completed", "failed", "error"}

  while True:
      poll_response = requests.get(
          f"https://api.cometapi.com/v1/videos/{task_id}",
          headers=headers,
          timeout=30,
      )
      poll_response.raise_for_status()
      result = poll_response.json()
      print(result["status"], result.get("progress"))

      if result["status"] in terminal_statuses:
          print(result.get("video_url"))
          break

      time.sleep(10)
  ```

  ```javascript Node.js theme={null}
  const form = new FormData();
  form.append("model", "your-video-model-id");
  form.append("prompt", "A calm camera move across a desk with a paper airplane");

  const createResponse = await fetch("https://api.cometapi.com/v1/videos", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
    },
    body: form,
  });

  if (!createResponse.ok) {
    throw new Error(await createResponse.text());
  }

  const task = await createResponse.json();
  const terminalStatuses = new Set(["completed", "failed", "error"]);

  while (true) {
    const pollResponse = await fetch(
      `https://api.cometapi.com/v1/videos/${task.id}`,
      {
        headers: {
          Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
        },
      },
    );

    if (!pollResponse.ok) {
      throw new Error(await pollResponse.text());
    }

    const result = await pollResponse.json();
    console.log(result.status, result.progress);

    if (terminalStatuses.has(result.status)) {
      console.log(result.video_url);
      break;
    }

    await new Promise((resolve) => setTimeout(resolve, 10_000));
  }
  ```

  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/videos \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -F "model=your-video-model-id" \
    -F "prompt=A calm camera move across a desk with a paper airplane"

  curl https://api.cometapi.com/v1/videos/task_example \
    -H "Authorization: Bearer $COMETAPI_KEY"
  ```
</CodeGroup>

## Yanıt örnekleri

Başarılı bir oluşturma yanıtı şöyle görünebilir. Sorgulama yapmadan önce görev kimliğini saklayın:

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

Başarılı bir sorgulama yanıtı şöyle görünebilir. Tamamlanmış yanıtlar `video_url` içerebilir; bazı sağlayıcı formatları modele özgü sonuç alanları veya bu rota belgelendirilmişse video içerik rotasını kullanır:

```json theme={null}
{
  "id": "task_example",
  "object": "video",
  "model": "your-video-model-id",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "https://example.com/generated-video.mp4"
}
```

## Örnek model kayıtları

<Info>
  Bu örnek model katalog yanıtı, `/api/models` zarfını ve bir video model kaydı şeklini gösterir. Tam bir model listesi değildir.
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 1767529753,
      "id": "your-video-model-id",
      "code": "your-video-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example video model",
      "model_type": "video",
      "features": [
        "text-to-video"
      ],
      "endpoints": "{\n  \"seedance\": {\n    \"path\": \"/v1/videos\",\n    \"method\": \"POST\"\n  }\n}",
      "pricing": {
        "currency": "USD / M Tokens",
        "input": null,
        "output": null,
        "per_request": null,
        "per_second": 0.024
      }
    }
  ]
}
```

## Yaygın hatalar

<AccordionGroup>
  <Accordion title="Task ID eksik">
    Job handler'ınızdan dönmeden önce create yanıtındaki ID'yi saklayın.
  </Accordion>

  <Accordion title="Çok sık polling yapılıyor">
    Durum kontrolleri arasına gecikme ve backoff ekleyin.
  </Accordion>

  <Accordion title="Desteklenmeyen süre veya boyut">
    Seçilen video endpoint'i için belgelenen duration ve resolution alanlarını kullanın.
  </Accordion>

  <Accordion title="video_url eksik">
    `video_url` alanını isteğe bağlı olarak ele alın ve mevcut olduğunda modele özgü sonuç alanlarına veya content rotasına geri dönün.
  </Accordion>

  <Accordion title="Callback alınmadı">
    Kaynak doğruluk olarak polling kullanın ve callback URL'nizin POST isteklerini kabul ettiğini doğrulayın.
  </Accordion>
</AccordionGroup>

## Hata kodları ve yeniden deneme stratejisi

<AccordionGroup>
  <Accordion title="400">
    Prompt, dosyalar, duration veya size alanları düzeltilene kadar yeniden denemeyin.
  </Accordion>

  <Accordion title="401">
    API anahtarı mevcut ve geçerli olana kadar yeniden denemeyin.
  </Accordion>

  <Accordion title="404">
    Yeniden denemeden önce task ID, base URL, path ve model ID'yi kontrol edin.
  </Accordion>

  <Accordion title="413">
    Yeniden denemeden önce yükleme boyutunu küçültün.
  </Accordion>

  <Accordion title="429">
    Exponential backoff ile yeniden deneyin ve create veya polling eşzamanlılığını azaltın.
  </Accordion>

  <Accordion title="500 or 503">
    Task oluşturmayı backoff ile yeniden deneyin; task terminal bir hataya ulaşmadıkça mevcut task'leri polling ile kontrol etmeye devam edin.
  </Accordion>
</AccordionGroup>

<Tip>
  Uygulama kalıpları için [Hata kodları ve yeniden deneme stratejisi](/tr/guides/error-codes-and-retry-strategy), [Oran sınırları ve eşzamanlılık](/tr/guides/rate-limits-and-concurrency) ve [Video oluşturma için webhook ve polling](/tr/guides/webhook-and-polling-for-video-generation) bölümlerine bakın.
</Tip>

## Fiyatlandırma ve model dizini

<CardGroup cols={3}>
  <Card title="Models sayfası" icon="list" href="/overview/models">
    CometAPI'nin belgelerde model ID'leri nasıl sunduğunu öğrenin.
  </Card>

  <Card title="Model dizini" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    Model kullanılabilirliğini ve yeteneklerini inceleyin.
  </Card>

  <Card title="Fiyatlandırma" icon="tag" href="https://www.cometapi.com/pricing/">
    Bir modeli çağırmadan önce fiyatlandırmayı kontrol edin.
  </Card>
</CardGroup>
