Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
Sora 2 API: выключение, миграция и реальная стоимость
2026/08/25

Sora 2 API: выключение, миграция и реальная стоимость

API Sora 2 закрывается 24 сентября 2026 года без официальной замены. Как экспортировать видеотеку, переписать запросы и рассчитать затраты для каждого тарифа.

Выключение Sora 2 API произойдёт 24 сентября 2026 года, и в таблице устаревания OpenAI не указано никакой замены. В каждой строке — в самом Videos API, в sora-2, sora-2-pro и всех трёх моментальных снимках — колонка «Рекомендуемая замена» пуста[1]. Это необычно. Когда OpenAI снимал gpt-image-1, он указывал разработчикам на gpt-image-2 в той же таблице[1]. Генерация видео не получит такой помощи.

Это не просто замена модели. Это удаление endpoint, и оно ломает две вещи сразу: код, который вызывает POST /videos, и сохранённые видео, до которых можно дотянуться только через GET /videos/{video_id}/content. В этом руководстве рассказано, что на самом деле исчезает, как вытащить вашу библиотеку до того как это произойдёт, в чём именно различаются параметры при переписывании вызовов, и сколько будет стоить замена для каждого тарифа, на котором вы сейчас находитесь.

TL;DR

  • Дата выключения — 24 сентября 2026 года, объявлено 24 марта 2026 года, покрывает Videos API, sora-2, sora-2-pro, sora-2-2025-10-06, sora-2-2025-12-08 и sora-2-pro-2025-10-06[1].
  • Никакой официальной замены нет. Колонка замены пуста для всех шести строк, в отличие от всех остальных устаревании в той же таблице[1].
  • Ваши готовые видео находятся за API, который исчезает. GET /videos их перечисляет, а GET /videos/{video_id}/content их скачивает[2]. Экспортируйте до того как endpoints перестанут отвечать.
  • Если вы на sora-2 за $0.10/с, экономия скромная, но реальная. Сопоставимые ставки 720p-с-аудио работают в диапазоне $0.076–$0.11/с[3][4][9].
  • Если вы на sora-2-pro при 1080p, вы платили $0.70/с и тот же клип обойдётся в $0.111/с на veo3.1-fast-official[3][4].
  • Наблюдайте потолок длины клипа. Sora 2 делает 16 и 20 секунд[2]; Veo 3.1 ограничена 8 секундами на генерацию[4].

Что именно удаляет выключение Sora 2 API

OpenAI объявил об устаревании 24 марта 2026 года, уведомив разработчиков, использующих Videos API и алиасы Sora 2 и снимки об «их устаревании и удалении из API 24 сентября 2026 года»[1]. Руководство по генерации видео содержит то же уведомление в верхней части страницы[2].

Шесть идентификаторов закрывают доступ:

Дата выключенияМодель / системаРекомендуемая замена
2026-09-24Videos API(нет)
2026-09-24sora-2(нет)
2026-09-24sora-2-pro(нет)
2026-09-24sora-2-2025-10-06(нет)
2026-09-24sora-2-2025-12-08(нет)
2026-09-24sora-2-pro-2025-10-06(нет)

Источник: страница устаревания OpenAI[1].

Первая строка — та, которую люди недооценивают. Привязка к моментальному снимку с датой не покупает время, потому что транспорт исчезает вместе с моделями. Всё, что касается POST /videos, GET /videos/{video_id}, GET /videos/{video_id}/content, GET /videos или DELETE /videos/{video_id} нужно переписывать, а не перенаправлять[2].

Экспортируйте вашу библиотеку до того как endpoints перестанут отвечать

Ваши готовые видео не на вашем диске. Они находятся в хранилище OpenAI, и документированный способ получить видео — это GET /videos/{video_id}/content[2]. Когда этот маршрут удалят, задокументированный путь получения этих файлов удалится вместе с ним. Сделайте экспорт в первую очередь, до переписывания кода, потому что это единственная часть этой миграции с жёсткий дедлайном.

GET /videos перечисляет вашу библиотеку с постраничной навигацией и сортировкой[2]:

curl "https://api.openai.com/v1/videos?limit=20&after=video_123&order=asc" \
  -H "Authorization: Bearer $OPENAI_API_KEY" | jq .

Пройдите по каждой странице, сохраните каждый id, затем вытащите каждый файл:

import os, requests

KEY = os.environ["OPENAI_API_KEY"]
H = {"Authorization": f"Bearer {KEY}"}

def all_video_ids():
    after, ids = None, []
    while True:
        params = {"limit": 100, "order": "asc"}
        if after:
            params["after"] = after
        page = requests.get("https://api.openai.com/v1/videos",
                            headers=H, params=params, timeout=60).json()
        batch = page.get("data", [])
        if not batch:
            return ids
        ids += [v["id"] for v in batch]
        after = batch[-1]["id"]

for vid in all_video_ids():
    dest = f"export/{vid}.mp4"
    if os.path.exists(dest):
        continue
    r = requests.get(f"https://api.openai.com/v1/videos/{vid}/content",
                     headers=H, timeout=600)
    r.raise_for_status()
    os.makedirs("export", exist_ok=True)
    with open(dest, "wb") as f:
        f.write(r.content)

Сохраните JSON из запроса списка тоже, не только MP4-файлы. Он содержит model, seconds, size и created_at для каждого задания[2], это метаданные, которые вы захотите, когда переделаете промпты для другой модели и вам нужно будет знать, на какой модели был отрендерен оригинал.

Переписывание вызова: где две формы расходятся

Оба API асинхронные, submit-then-poll, поэтому управление потоком выживет. Имена полей — нет.

ШагOpenAI Videos API[2]reAPI[5]
SubmitPOST /v1/videosPOST /api/v1/videos/generations
Поле моделиmodel: "sora-2"model: "<model id>"
Поле промптаpromptprompt
Разрешениеsize: "1280x720" (пара пиксель)resolution: "720p" + size: "16:9"
Длительностьseconds: "8" (строка)duration: 5 (число)
Ручка заданияid в ответеtask_id в ответе
PollGET /v1/videos/{video_id}GET /api/v1/tasks/{id}
Получить файлGET /v1/videos/{video_id}/contentуже в output.video_urls

Три из них кусаются в практике. size означает разные вещи с двух сторон: пара пиксель на одной, соотношение сторон на другой, с разрешением разбитым на собственное поле. seconds — это строка, а duration — число, так что наивное копирование значения приводит к ошибке типа, а не к ясному сообщению о валидации. И шаг загрузки совершенно исчезает, так как ответ poll уже содержит output.video_urls[5] вместо того чтобы заставлять вас вызывать третий endpoint для байтов.

Отправка, которая выглядела так:

video = openai.videos.create(model="sora-2", prompt=PROMPT,
                             size="1280x720", seconds="8")

становится:

r = requests.post("https://reapi.ai/api/v1/videos/generations",
                  headers={"Authorization": f"Bearer {REAPI_KEY}"},
                  json={"model": MODEL, "prompt": PROMPT,
                        "resolution": "720p", "size": "16:9", "duration": 8})
task_id = r.json()["task_id"]

Сколько на самом деле стоит миграция, по тарифу, на котором вы сейчас находитесь

Большинство статей об этом выключении цитируют одну заголовок-экономию. Это работает только если вы игнорируете, на каком тарифе Sora читатель на самом деле находится, и честный ответ расщепляется на два.

Опубликованные ставки Sora OpenAI, за секунду[3]:

МодельРазмерStandardBatch
sora-2720p$0.10$0.05
sora-2-pro720p$0.30$0.15
sora-2-pro1024p$0.50$0.25
sora-2-pro1080p$0.70$0.35

Против ставок 720p-с-аудио на reAPI[4][6]:

Ваш текущий тарифСтавка SoraСопоставимая ставкаИзменение
sora-2 720p$0.10/сveo3.1-fast-official 720P + аудио, $0.092/с−8%
sora-2 720p$0.10/сWan 3.0 720P, $0.076/с−24%
sora-2 720p$0.10/сKling 3.0 std 720p + аудио, $0.11/с+10%
sora-2-pro 720p$0.30/сveo3.1-fast-official 720P + аудио, $0.092/с−69%
sora-2-pro 1080p$0.70/сveo3.1-fast-official 1080P + аудио, $0.111/с−84%
sora-2-pro 1080p$0.70/сKling 3.0 pro 1080p + аудио, $0.149/с−79%
sora-2-pro 1080p$0.70/сWan 3.0 1080P, $0.151/с−78%
sora-2-pro 1080p$0.70/сSeedance 2.5 1080P, $0.462/с−34%

Если вы на простом sora-2 при 720p, базовый тариф $0.10/с был оценён конкурентно и большинство свопов приземляются в нескольких центах от него. Wan 3.0 при 720P — исключение при $0.076/с с аудиодорожкой по умолчанию[9], примерно на 24% ниже. Это реальная экономия, а не масштабный срез, который обещают некоторые статьи. Если вы запускали sora-2 через Batch API при $0.05/с[3], вы были на самом дешёвом способном аудио тарифе в этом сравнении и должны ожидать, что ваша стоимость за секунду вырастет.

Картина sora-2-pro противоположна. При 1080p вы платили $0.70/с, и та же секунда видео 1080p с аудио обойдётся в $0.111/с на veo3.1-fast-official[4]. На 20-секундном клипе это $14.00 против $2.22.

Одна деталь биллинга, которую нужно осторожно перенести: per-generation тарифы Veo 3.1 считаются за рендер, а не за секунду[4], в то время как -official варианты выше считаются за секунду. Это разные единицы. Если ваша модель затрат предполагает за-секунду везде, per-generation тарифы не будут согласованы против неё.

Проблема 20-секунды

Sora 2 поддерживает генерации 16 и 20 секунд на обоих вариантах[2]. Не каждая замена достигает этого в одном проходе, и это ограничение скорее всего заставит реальную переписывание, чем изменение конфигурации.

МодельСамый длинный одиночный выход
sora-2 / sora-2-pro20 с[2]
Seedance 2.530 с[6]
Wan 3.030 с[9]
Kling 3.015 с[7]
MiniMax H315 с[8]
Veo 3.18 с[4]

20-секундный снимок Sora становится три рендера Veo 3.1 плюс шов. Если ваш пайплайн выдаёт одиночные длинные дубли, две модели здесь пробиваются через потолок Sora сами: Seedance 2.5 при 4 до 30 секунд с синхронизированным аудио[6] и Wan 3.0 при 2 до 30 секунд с аудиодорожкой по умолчанию[9]. Проверьте это до того как вы бенчмарка качество. Модель, которая не может произвести длину вашего снимка, — не кандидат независимо от того, как она набирает.

FAQ

Когда именно Sora 2 API перестанет работать?

24 сентября 2026 года. OpenAI уведомил затронутых разработчиков 24 марта 2026 года[1].

Рекомендует ли OpenAI модель замены?

Нет. Колонка «Рекомендуемая замена» пуста для Videos API и всех пяти идентификаторов Sora 2[1].

Могу ли я продолжить использовать пиннированный снимок, как sora-2-2025-10-06?

Нет. Моментальные снимки с датой указаны на том же 24 сентября как алиасы, и Videos API, который их служит, тоже устаревший[1].

Что происходит с видео, которые я уже сгенерировал?

Они получаются через GET /videos/{video_id}/content, часть устаревшего Videos API[2]. Как только этот endpoint удалится, не будет задокументированного маршрута API к этим файлам, так что экспортируйте до даты.

Будет ли миграция снижать мой счёт?

Это зависит от вашего тарифа. От sora-2-pro при 1080p ($0.70/с), да, существенно. От простого sora-2 при $0.10/с, примерно безубыточно. От sora-2 на Batch при $0.05/с, ожидайте увеличение[3].

Генерируют ли замены аудио, как Sora 2?

Некоторые, и это часто отдельный ценовой тариф. Kling 3.0 и Veo 3.1 оба перечисляют отдельные с-аудио и без-аудио ставки[4][7], в то время как Seedance 2.5 генерирует речь, звуковые эффекты и музыку с аудио по умолчанию[6] и Wan 3.0 поставляет аудиодорожку по умолчанию[9].

Сколько моего кода нужно изменить?

Асинхронная структура submit-then-poll переносится. Что меняется, так это имена полей, раздел size на resolution плюс соотношение сторон, seconds как строка против duration как число, и отмена отдельного вызова загрузки контента[2][5].

Одинаковы ли ограничения контента Sora 2 везде?

Не обязательно. Sora 2 отклоняет реальных людей, включая общественные личности, защищённые авторским правом персонажи и музику, и входные изображения, содержащие человеческие лица[2]. Другие модели проводят эти линии по-другому, поэтому переиспытайте промпты, которые не прошли на Sora, могут пройти в другом месте и наоборот.

Последовательность работ до даты

Экспортируйте сначала. Это единственный шаг с дедлайном, который не может переместиться, и ему нужны только API ключ и место на диске. Затем выберите модель против ваших жёстких ограничений в этом порядке: длина клипа, затем аудио, затем разрешение, затем ставка. Длина исключает кандидатов быстрее, и ставка — это самая простая вещь изменить позже.

Переписывание вызовов — это меньшая работа, чем кажется, потому что форма submit-poll выживает и шаг загрузки файла уходит. Частью, на которой стоит замедлиться, является модель затрат. Если вы приходите с sora-2-pro, экономия реальна и велика; если вы приходите с sora-2 при $0.10/с или Batch при $0.05/с, план для плоской до более высокой стоимости за-секунду и выберите по возможности. В любом случае выключение Sora 2 API даёт вам фиксированную дату для работы назад, и экспорт — это частью, которая перестаёт быть возможной после этого.

References

  1. OpenAI. Deprecations: Sora 2 video generation models and Videos API. Retrieved August 2026 from developers.openai.com/api/docs/deprecations
  2. OpenAI. Video generation with Sora: Videos API guide. Retrieved August 2026 from developers.openai.com/api/docs/guides/video-generation
  3. OpenAI. Pricing: video generation models, standard and batch per-second rates. Retrieved August 2026 from developers.openai.com/api/docs/pricing
  4. reAPI. Veo 3.1: model page and per-tier pricing. Retrieved August 2026 from reapi.ai/models/veo3-1
  5. reAPI. Seedance 2.5 API: request shape, task polling and output fields. Retrieved August 2026 from reapi.ai/docs/seedance-2-5
  6. reAPI. Seedance 2.5: model page, duration range and per-resolution pricing. Retrieved August 2026 from reapi.ai/models/seedance-2-5
  7. reAPI. Kling 3.0: model page, audio tiers and per-second pricing. Retrieved August 2026 from reapi.ai/models/kling-3-0
  8. reAPI. MiniMax H3: model page, duration range and per-second pricing. Retrieved August 2026 from reapi.ai/models/minimax-h3
  9. reAPI. Wan 3.0: model page, duration range and per-resolution pricing. Retrieved August 2026 from reapi.ai/models/wan-3-0