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

# Veo 3 API hızlı başlangıç: CometAPI ile video oluşturun

> CometAPI ile bir Veo video görevi oluşturun, görev durumunu yoklayın ve tamamlanan video çıktısını curl, Python veya Node.js ile depolayın.

## Neler oluşturacaksınız

Multipart form data ile bir Veo video görevi oluşturacak, döndürülen görev kimliğini depolayacak, retrieve endpoint'ini yoklayacak ve son asset URL'sini veya dosyayı kendi sisteminize kaydedeceksiniz.

## Ön koşullar

* `COMETAPI_KEY` içinde saklanan bir CometAPI API anahtarı
* `requests` ile Python 3.10+ veya Node.js 18+
* Yoklama için sunucu tarafında çalışan bir job runner

## API anahtarı, temel URL, kimlik doğrulama

Veo görevlerini şununla oluşturun:

```text theme={null}
POST https://api.cometapi.com/v1/videos
```

Veo görev durumunu şununla yoklayın:

```text theme={null}
GET https://api.cometapi.com/v1/videos/<task_id>
```

Bir Bearer token ile kimlik doğrulayın:

```text theme={null}
Authorization: Bearer $COMETAPI_KEY
```

## Kod örnekleri

Kopyalanabilir cURL, Python ve Node.js örnekleri için aşağıdaki sekmeleri kullanın.

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/videos \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -F model=veo3.1-fast \
    -F "prompt=A paper kite floats above a field." \
    -F seconds=4 \
    -F size=1280x720

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

  ```python Python theme={null}
  import os
  import time

  import requests

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

  create_response = requests.post(
      "https://api.cometapi.com/v1/videos",
      headers=headers,
      files={
          "model": (None, "veo3.1-fast"),
          "prompt": (None, "A paper kite floats above a field."),
          "seconds": (None, "4"),
          "size": (None, "1280x720"),
      },
      timeout=60,
  )
  create_response.raise_for_status()
  task_id = create_response.json()["id"]

  for _ in range(60):
      retrieve_response = requests.get(
          f"https://api.cometapi.com/v1/videos/{task_id}",
          headers=headers,
          timeout=30,
      )
      retrieve_response.raise_for_status()
      task = retrieve_response.json()
      if task["status"] in {"completed", "failed", "error"}:
          print(task)
          break
      time.sleep(5)
  else:
      raise TimeoutError("Veo task did not finish in time")
  ```

  ```javascript Node.js theme={null}
  const form = new FormData();
  form.append("model", "veo3.1-fast");
  form.append("prompt", "A paper kite floats above a field.");
  form.append("seconds", "4");
  form.append("size", "1280x720");

  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 { id } = await createResponse.json();

  for (let attempt = 0; attempt < 60; attempt += 1) {
    const retrieveResponse = await fetch(`https://api.cometapi.com/v1/videos/${id}`, {
      headers: { Authorization: `Bearer ${process.env.COMETAPI_KEY}` },
    });

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

    const task = await retrieveResponse.json();
    if (["completed", "failed", "error"].includes(task.status)) {
      console.log(task);
      break;
    }
    await new Promise((resolve) => setTimeout(resolve, 5000));
  }
  ```
</CodeGroup>

## Akış açıklaması

Veo video oluşturma asenkron çalışır. Create endpoint'i multipart form data kabul eder ve hemen bir görev kimliği döndürür. Görev terminal bir duruma ulaşana kadar retrieve endpoint'ini yoklayın, ardından tamamlanan yanıttaki son video URL'sini veya dosya ayrıntılarını kalıcı olarak saklayın.

İlk testler için kısa süreler ve işe yarayan en küçük boyutu kullanın. Uygulamanızın saklama gereksinimi olduğunda tamamlanan asset'leri kendi depolamanıza taşıyın.

## Yaygın parametreler

| Parametre         | Kullanım                                                       |
| ----------------- | -------------------------------------------------------------- |
| `model`           | Veo model ID. API referans örneğinde `veo3.1-fast` kullanılır. |
| `prompt`          | Video işi için metin promptu.                                  |
| `seconds`         | Süre form alanı. Referansta `4`, `6` ve `8` belgelenmiştir.    |
| `size`            | `1280x720` gibi tam `WxH` boyutu.                              |
| `input_reference` | Image-to-video için isteğe bağlı ilk kare görsel dosyası.      |

## Sorun giderme / SSS

<AccordionGroup>
  <Accordion title="İstek bir content type problemiyle başarısız oluyor">
    Multipart form data gönderin. Veo create isteklerini JSON olarak göndermeyin.
  </Accordion>

  <Accordion title="Polling beklenenden uzun sürüyor">
    Sınırlandırılmış bir polling döngüsü kullanın, task ID'yi saklayın ve bir web isteğini bloke etmek yerine uygulamanızda beklemede durumunu gösterin.
  </Accordion>

  <Accordion title="Maliyeti nasıl kontrol etmeliyim">
    Kısa bir süre, tek task ve kabul edilebilir en küçük boyutla başlayın. Task sayısını ölçeklendirmeden önce hesap kotelerini ve maliyet tahminini kullanın.
  </Accordion>
</AccordionGroup>

## Sonraki adımlar

* [Create a Veo 3 video API reference](/api/video/veo3/create) belgesini okuyun.
* [Retrieve a Veo 3 video](/api/video/veo3/retrieve) ile polling yapın.
* [Models](/tr/overview/models) içinde Veo video modellerini bulun.
* [Use polling and webhooks for video generation](/tr/guides/webhook-and-polling-for-video-generation) belgesini inceleyin.
* [Estimate request cost before calling a model](/tr/guides/how-to-estimate-cost-before-calling-a-model) ile model çağırmadan önce task maliyetini tahmin edin.
