Skip to main content
POST
Text-to-video: submit a video generation task from text
Интерактивный Playground справа поддерживает отладку в реальном времени. Укажите ваш API Key в поле Authorization (формат: Bearer sk-xxx), введите prompt, выберите model / size / seconds и отправьте.
Область применения: На этой странице описана «генерация видео только из текста» — без input_reference, тело запроса — application/json. Чтобы анимировать по опорному изображению (image-to-video), используйте эндпоинт Image-to-Video (тот же путь + multipart upload).
⚠️ Асинхронный поток из трех шагов — эта страница охватывает только шаг 1 (отправку)
  • Шаг 1 (эта страница): POST /v1/videos → возвращает video_id + status: "queued"
  • Шаг 2: Опросите GET /v1/videos/{video_id}, пока не status: "completed"
  • Шаг 3: Скачайте из GET /v1/videos/{video_id}/content (возвращает файл MP4)
Сам POST-запрос занимает несколько секунд и не блокирует выполнение до завершения генерации. Полный сценарий показан в примере на Python ниже.

Примеры кода

Python (OpenAI SDK для быстрой интеграции)

Python (прямые запросы)

cURL

Node.js (fetch)

JavaScript в браузере

Краткая справка по параметрам

Подробные ограничения параметров, допустимые значения и примеры видны в правой панели Playground — у всех полей enum есть выпадающие списки. Для параметров image-to-video (загрузка input_reference) см. эндпоинт Image-to-Video.

Формат ответа

Шаг 1 — Немедленный ответ на отправку

Шаг 2 — Опрос во время выполнения

Шаг 2 — Опрос после завершения

⚠️ Особенности полей ответа
  • Нет прямого поля video_url — видеофайл необходимо загрузить из GET /v1/videos/{id}/content (возвращает двоичный поток video/mp4). Не ожидайте CDN URL в ответе JSON.
  • progress не является строго линейным — он может перескакивать (например, 0 → 45 → 80 → 100)
  • При status: "failed" поле error не всегда присутствует — большинство сбоев связаны с политикой контента или capacity, просто повторите попытку или измените prompt
  • Видео содержимое хранится в OpenAI только 1 день — после истечения срока /content возвращает 404
Этот эндпоинт — точка входа для async-task. Тарификация рассчитывается по коэффициенту тарифа seconds, когда задача завершается (см. таблицу тарифов). Само POST-отправление, опрос статуса и загрузка содержимого не тарифицируются, и неудачные задачи не тарифицируются.

Авторизации

Authorization
string
header
обязательно

API Key from the APIYI console (must use Sora2官转 group + usage-based billing)

Тело

application/json
model
enum<string>
по умолчанию:sora-2
обязательно

Model ID. sora-2 supports 720p only; sora-2-pro supports 720p / 1024p / 1080p tiers

Доступные опции:
sora-2,
sora-2-pro
prompt
string
обязательно

Video generation prompt; describe scene, camera motion, style, lighting, and character actions in detail

Пример:

"A serene Japanese garden with cherry blossoms, koi pond, traditional bridge, golden hour, ultra detailed"

seconds
enum<string>
по умолчанию:4

Video duration as a string enum (not a number):

  • "4" — 4 seconds (default), ideal for short demos, single shots, fast prompt iteration
  • "8" — 8 seconds, standard short-form video, most common
  • "12" — 12 seconds, long shots and continuous action

Passing "10" / "15" or the integer 4 returns 400

Доступные опции:
4,
8,
12
size
enum<string>
по умолчанию:720x1280

Output resolution. sora-2 and sora-2-pro support different tiers:

  • sora-2 (720p only): 720x1280 (portrait, default) / 1280x720 (landscape)
  • sora-2-pro additionally supports:
    • 1024x1792 / 1792x1024 (1024p, $0.50/sec)
    • 1080x1920 / 1920x1080 (1080p, $0.70/sec)

Passing 1024p / 1080p sizes to sora-2 returns 400

Доступные опции:
720x1280,
1280x720,
1024x1792,
1792x1024,
1080x1920,
1920x1080

Ответ

Task submitted, returns video_id with queued status

id
string

Task ID for subsequent polling and download

Пример:

"video_abc123def456"

object
string

Object type, fixed video

Пример:

"video"

model
string

Model ID used for this task

Пример:

"sora-2"

status
enum<string>

Task status:

  • queued — submitted, waiting in queue
  • in_progress — generating
  • completed — done, ready to download (/v1/videos/{id}/content)
  • failed — failed (not billed), safe to retry
Доступные опции:
queued,
in_progress,
completed,
failed
Пример:

"queued"

progress
integer

Generation progress percentage (0–100), not strictly linear

Пример:

0

created_at
integer

Task creation Unix timestamp (seconds)

Пример:

1712697600

completed_at
integer

Task completion Unix timestamp (seconds), present only on completed status

Пример:

1712697900

size
string

Actual output resolution (matches the requested size)

Пример:

"1280x720"

seconds
string

Actual duration generated (matches the requested seconds)

Пример:

"8"

quality
string

Quality tier (standard for sora-2, high for sora-2-pro)

Пример:

"standard"