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

# Bir Sora 2 videosu oluşturun

> Metin prompt'larından veya referans görsellerden Sora 2 video oluşturma görevleri oluşturmak için POST /v1/videos kullanın, ardından sonuçlar için görev kimliğine göre durumu sorgulayın.

Bu endpoint'i, metinden veya metin artı bir referans görselden bir Sora render işi başlatmak için kullanın. API hemen bir video kimliği döndürür ve render işleminin bitmesini beklemez.

## En küçük kullanışlı işle başlama

* Daha hızlı iterasyon için `sora-2`, hızdan çok çıktı kalitesinin önemli olduğu durumlarda `sora-2-pro` kullanın
* İlk isteğiniz için `seconds` değerini `4` olarak tutun
* Özellikle dikey çıktı gerekmiyorsa `size: 1280x720` ile başlayın
* En fazla bir referans görsel yükleyin

## Süre ve boyut

| Ayar                    | Desteklenen değerler                                   | Varsayılan başlangıç noktası         | Sınır davranışı                                                 |
| ----------------------- | ------------------------------------------------------ | ------------------------------------ | --------------------------------------------------------------- |
| `seconds`               | `4`, `8`, `12`, `16`, `20`                             | `4`                                  | Diğer değerler Sora video istek yapısının bir parçası değildir. |
| `size` for `sora-2`     | `1280x720`, `720x1280`                                 | `1280x720`                           | Yatay veya dikey yönlendirme kullanın.                          |
| `size` for `sora-2-pro` | `1792x1024`, `1024x1792`, plus the standard Sora sizes | `1792x1024` for landscape Pro output | Daha büyük Pro boyutlarını yalnızca bir Pro model ile kullanın. |

Sora, `size` alanının tam `WxH` biçiminde olmasını gerektirir. `720p` gibi çözünürlük belirteçleri ve `16:9` gibi oran etiketleri, bu endpoint'te geçerli Sora `size` değerleri değildir.

## Uçtan uca akış

<Steps>
  <Step title="Render işini oluşturun">
    `model`, `prompt`, `seconds` ve `size` gönderin, ardından dönen `id` değerini kaydedin.
  </Step>

  <Step title="İş tamamlanana kadar sorgulayın">
    Durum `completed` veya `failed` olana kadar [Retrieve Video](./retrieve) çağrısı yapın.
  </Step>

  <Step title="Sonucu indirin">
    Render tamamlandığında, dosyayı [Retrieve Video Content](./retrieve-content) ile alın.
  </Step>
</Steps>

## Hâlâ geçerli olan Sora davranışı

OpenAI, Videos API içinde aynı create -> retrieve -> download akışını belgeler. CometAPI üzerinde Sora istek yapısını korursunuz, ancak CometAPI temel URL'sini ve anahtarını kullanırsınız. Tamamlanan indirme URL'leri geçicidir; uzun süreli saklama gerekiyorsa tamamlanmış varlıkları kendi depolamanıza kopyalayın.


## OpenAPI

````yaml api/openapi/video/sora-2/post-create.openapi.json POST /v1/videos
openapi: 3.1.0
info:
  title: Create Video API
  version: 1.0.0
  description: >-
    Create an asynchronous Sora video job through CometAPI. Poll GET
    /v1/videos/{video_id} for status and GET /v1/videos/{video_id}/content for
    the final file.
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /v1/videos:
    post:
      summary: Create a Sora video job
      description: >-
        Start a Sora render job from a prompt and, optionally, one reference
        image. Save the returned video id and poll the retrieve endpoint until
        the job completes.
      operationId: create_video
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - prompt
              properties:
                prompt:
                  type: string
                  description: Text prompt that describes the video you want to create.
                  example: A paper airplane glides across a desk.
                model:
                  type: string
                  description: >-
                    Sora model ID. Choose an available model from the [Models
                    page](/overview/models).
                  default: sora-2
                  example: sora-2
                seconds:
                  type: string
                  enum:
                    - '4'
                    - '8'
                    - '12'
                    - '16'
                    - '20'
                  description: Clip duration in seconds. Use 4, 8, 12, 16, or 20.
                  default: '4'
                  example: '4'
                size:
                  type: string
                  enum:
                    - 720x1280
                    - 1280x720
                    - 1024x1792
                    - 1792x1024
                  description: >-
                    Output resolution formatted as width x height. Use 1280x720
                    or 720x1280 for standard Sora output. Use 1792x1024 or
                    1024x1792 with a Pro model when you need larger Pro output.
                  default: 1280x720
                  example: 1280x720
                input_reference:
                  type: string
                  format: binary
                  description: >-
                    Optional reference image uploaded as a file. The image
                    should match the target size you request.
              default:
                prompt: A paper airplane glides across a desk.
                model: sora-2
                seconds: '4'
                size: 1280x720
            examples:
              Text to video:
                summary: Text to video
                value:
                  model: sora-2
                  prompt: A paper boat drifts across a calm pond at sunrise
                  seconds: '4'
                  size: 1280x720
              With reference image:
                summary: >-
                  First-frame reference image. Replace input_reference with your
                  image file.
                value:
                  model: sora-2
                  prompt: Animate gentle ripples across the water
                  seconds: '4'
                  size: 1280x720
                  input_reference: '@reference.png'
      responses:
        '200':
          description: Video job accepted.
          content:
            application/json:
              schema:
                type: object
                required:
                  - created_at
                  - id
                  - model
                  - object
                  - progress
                  - seconds
                  - size
                  - status
                properties:
                  created_at:
                    type: integer
                  id:
                    type: string
                  model:
                    type: string
                  object:
                    type: string
                  progress:
                    type: integer
                  seconds:
                    type: string
                  size:
                    type: string
                  status:
                    type: string
                example:
                  created_at: 1773296991
                  id: video_69b25d5f467c81908733a56bc236b4df
                  model: sora-2
                  object: video
                  progress: 0
                  seconds: '4'
                  size: 1280x720
                  status: queued
              example:
                id: <video_id>
                task_id: <video_id>
                object: video
                model: sora-2
                status: queued
                progress: 0
                created_at: 1781079478
                seconds: '4'
                size: 1280x720
      x-codeSamples:
        - lang: Shell
          label: Text to video
          source: |
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F model=sora-2 \
              -F prompt="A paper boat drifts across a calm pond at sunrise" \
              -F seconds=4 \
              -F size=1280x720
        - lang: Shell
          label: With reference image
          source: |
            curl https://api.cometapi.com/v1/videos \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -F model=sora-2 \
              -F prompt="Animate gentle ripples across the water" \
              -F seconds=4 \
              -F size=1280x720 \
              -F input_reference=@reference.png
        - lang: Python
          label: Text to video
          source: >
            import os

            import requests


            response = requests.post(
                "https://api.cometapi.com/v1/videos",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                data={
                    "model": "sora-2",
                    "prompt": "A paper boat drifts across a calm pond at sunrise",
                    "seconds": "4",
                    "size": "1280x720",
                },
            )


            video = response.json()

            print(video["id"], video["status"])  # poll GET /v1/videos/{id}
            until completed
        - lang: Python
          label: With reference image
          source: |
            import os
            import requests

            with open("reference.png", "rb") as image:
                response = requests.post(
                    "https://api.cometapi.com/v1/videos",
                    headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                    data={
                        "model": "sora-2",
                        "prompt": "Animate gentle ripples across the water",
                        "seconds": "4",
                        "size": "1280x720",
                    },
                    files={"input_reference": image},
                )

            video = response.json()
            print(video["id"], video["status"])
        - lang: JavaScript
          label: Text to video
          source: >
            const form = new FormData();

            form.append("model", "sora-2");

            form.append("prompt", "A paper boat drifts across a calm pond at
            sunrise");

            form.append("seconds", "4");

            form.append("size", "1280x720");


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


            const video = await response.json();

            console.log(video.id, video.status); // poll GET /v1/videos/{id}
            until completed
        - lang: JavaScript
          label: With reference image
          source: >
            import { readFile } from "node:fs/promises";


            const form = new FormData();

            form.append("model", "sora-2");

            form.append("prompt", "Animate gentle ripples across the water");

            form.append("seconds", "4");

            form.append("size", "1280x720");

            form.append("input_reference", new Blob([await
            readFile("reference.png")], { type: "image/png" }),
            "reference.png");


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


            const video = await response.json();

            console.log(video.id, video.status);
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Use your CometAPI key.

````