Обзор API Sora 2 — нейросети от OpenAI для генерации видео со звуком

API нейросети Sora 2 — идеальный инструмент для тех, кто хочет внедрить генерацию видео со звуком и по референсам прямо в свой проект: будь то бот, веб-сервис или мобильное приложение. Эта модель наряду с Veo 3 считается одной из самых мощных для запуска в 2025 году — я лично тестировал обе и вижу серьезную разницу по качеству.

Обзор API Sora 2 — нейросети от OpenAI для генерации видео со звуком

Прежде чем подключать Sora 2 к своему сервису через API, рекомендую поиграться с нейросетью в Telegram-боте @yes_ai_bot. Там можно быстро оценить ее возможности и понять, подходит ли модель под ваши задачи. Для более глубокого погружения — изучите подробную инструкцию по настройке и работе с API в этой статье. Это сэкономит время и избавит от сюрпризов при интеграции.

!!! Обратите ВНИМАНИЕ - контент категории NSFW не поддерживается — такие запросы фильтруются строго. Чтобы фильтры работали правильно при обращении к Yes Ai API, всегда указывайте параметр "customer_id". Все параметры описаны ниже.

Для работы с API понадобится персональный токен. Получить его можно по шагам из инструкции.

Sora 2 — это нейросеть, умеющая создавать видео двумя способами:

  • По текстовому описанию (любой язык подходит);
  • По описанию и изображению - референсу (картинка становится первым кадром ролика).

Внутри нейросети доступны две версии модели:

  • Базовая Sora 2: генерирует короткие видео до 10 секунд, быстро, разрешение — 720p.
  • Sora 2 Pro: работает чуть медленнее, зато поддерживает качество 720p и 1080p, ролики — 10 или 15 секунд (максимальная длительность только в 1080p).

Сейчас нейросеть работает с двумя форматами видео:

  • вертикальное (9:16)
  • горизонтальное (16:9)

Загрузите ролик в другом соотношении — система автоматически подгонит его под выбранный формат, обрежет лишнее.

Важное уточнение: если ваши герои общаются между собой, фразы для каждого персонажа обязательно пишите в кавычках — либо двойных, либо одинарных. Сам я пару раз сталкивался с непониманием, когда этим пренебрегал: генерация выдавала обычный текст или делала монолог. Четко прописывайте это клиентам, чтобы избежать недоразумений.

Есть ряд ограничений в нейросети Sora 2:

  • Контент 18+ запрещён. Даже если попытаться обойти правило в промте или в референсе — аккаунт заблокируют по customer_id, восстановить не получится.
  • Фотореалистичные изображения система не берет — борются с дипфейками.
  • Не пройдут упоминания знаменитостей (имена, внешность, узнаваемые персонажи с авторскими правами) — модерация автоматически отклонит такие заявки.
  • Иногда на видео будет водяной знак. Как от него избавиться — есть подробная инструкция по ссылке сверху документа.

Стоимость зависит от версии Sora, длины ролика и разрешения. Чтобы узнать точную цену, пишите техподдержке @yes_ai_support или спросите у бота @yes_ai_bot.

Как отправить задачу на генерацию видео по промпту и референсу через API Sora 2

Рабочий пример запроса к API нейросети Sora 2.

POST https://api.yesai.su/v2/yesvideo/aniimage/sora
headers: { Content-Type: application/json, Authorization: Bearer }

curl -X POST https://api.yesai.su/v2/yesvideo/aniimage/sora -H "Authorization: Bearer <token>" -H "Content-Type: application/json" -d '{ "version": "2.pro", "prompt": "мужчина улыбается и говорит \"представляю вам нейросеть Sora 2\"", "resolution": 1080, "dimensions": "9:16", "duration": 15, "image_url": "https://yoururl.com/image1.jpeg", "customer_id": "abcd1234" }'

Параметры:

version = '2.pro' ((string), обязательно. Указывает, какая версия нейросети используется: доступны варианты '2' и '2.pro').

prompt = ''
(строка обязательна, задание для генерации, минимум пара слов на любом языке)

resolution = 1080 ((целое число), обязательно указывайте разрешение видео: возможные значения зависят от версии нейросети. Для версии "2" доступно только 720, для "2.pro" можно выбрать 720 или 1080.

dimensions = '9:16' ((строка), обязательно, отвечает за соотношение сторон видео. Возможные значения: '9:16', '16:9'.

duration = 15
((целое число), обязательный параметр, указывает, сколько секунд длится анимация картинки. Для разных версий нейросети доступны такие варианты:
- для ‘2’ — только 10,
- для ‘2.pro’ — можно выбрать либо 10, либо 15 секунд.

image_url = 'https://yoururl.com/image1.jpeg'
(строка, не обязательно — указываете прямую ссылку на картинку. Если переменная image_url отсутствует, то изображение генерируется только по описанию, без использования внешнего референса).

customer_id = 'abcd1234' — (строка, обязательный параметр) уникальный идентификатор клиента в вашей системе. С его помощью вы определяете пользователя и можете оперативно заблокировать доступ при нарушении правил. Каждый ID уникален и соответствует только одному клиенту.

Обратите внимание: переменная "customer_id" обязательна к заполнению — это уникальный идентификатор пользователя, оформившего заявку через вашу систему. В этом поле можно указать либо Telegram ID, если заказ пришёл через бота в Telegram, либо собственный внутренний номер клиента из вашей базы данных.

Если пользователь нарушит правила работы с нейросетями, его идентификатор временно попадёт в чёрный список. Сам же API-токен Yes Ai при этом продолжит работать штатно. Система блокирует только конкретного клиента, а не весь доступ к сервису в целом.

Возможные ошибки:

['success' => false, 'message' => 'PROMPT_IS_EMPTY'], 400
['success' => false, 'message' => 'PROMPT_NOT_VALID'], 400
['success' => false, 'message' => 'IMAGE_URL_IS_EMPTY'], 400
['success' => false, 'message' => 'IMAGE_URL_NOT_VALID'], 400
['success' => false, 'message' => 'IMAGE_FILE_SIZE_NOT_VALID'], 400
['success' => false, 'message' => 'IMAGE_MIME_TYPE_NOT_VALID'], 400
['success' => false, 'message' => 'VERSION_IS_EMPTY'], 400
['success' => false, 'message' => 'VERSION_NOT_VALID'], 400
['success' => false, 'message' => 'RESOLUTION_IS_EMPTY'], 400
['success' => false, 'message' => 'RESOLUTION_NOT_VALID'], 400
['success' => false, 'message' => 'DIMENSIONS_IS_EMPTY'], 400
['success' => false, 'message' => 'DIMENSIONS_NOT_VALID'], 400
['success' => false, 'message' => 'DURATION_IS_EMPTY'], 400
['success' => false, 'message' => 'DURATION_NOT_VALID'], 400
['success' => false, 'message' => 'EFFECT_ID_IS_EMPTY'], 400
['success' => false, 'message' => 'EFFECT_ID_NOT_VALID'], 400
['success' => false, 'message' => 'UNAUTHORIZED'], 401
['success' => false, 'message' => 'IMAGE_NOT_FOUND'], 404
['success' => false, 'message' => 'VERSION_NOT_FOUND'], 404
['success' => false, 'message' => 'RESOLUTION_NOT_FOUND'], 404
['success' => false, 'message' => 'DIMENSIONS_NOT_FOUND'], 404
['success' => false, 'message' => 'DURATION_NOT_FOUND'], 404
['success' => false, 'message' => 'EFFECT_ID_NOT_FOUND'], 404
['success' => false, 'message' => 'USER_HAS_BEEN_BANNED'], 409
['success' => false, 'message' => 'USER_HAS_BEEN_DELETED'], 409
['success' => false, 'message' => 'NOT_ENOUGH_RPOINTS'], 409
['success' => false, 'message' => 'PROMPT_NSFW_WORDS'], 409
['success' => false, 'message' => 'PROMPT_EN_NSFW_WORDS'], 409
['success' => false, 'message' => 'PROMPT_FAILED_TO_TRANSLATE'], 409
['success' => false, 'message' => 'PARAMETERS_IS_NOT_ALLOWED'], 409
['success' => false, 'message' => 'TASK_LIMIT_EXCEEDED'], 409
['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500

Успешная отправка запроса к Sora 2 через API ответ:

['success' => true, 'message' => 'OK', 'results' => ['animation_data' => [ ... ]]], 200

Как узнать, на какой стадии сейчас ваша задача через API Sora 2

GET https://api.yesai.su/v2/yesvideo/animations/{id}
headers: { Content-Type: application/json, Authorization: Bearer }

Пример, как выглядит запрос, чтобы узнать статус задания в нейронке Sora 2:

curl -X GET https://api.yesai.su/v2/yesvideo/animations/{id} -H "Authorization: Bearer <token>" -H "Content-Type: application/json"

Параметры:

{id} = 12345 (обязательно, id задания)

Возможные ошибки при проверке статуса:

['success' => false, 'message' => 'ID_IS_EMPTY'], 400
['success' => false, 'message' => 'ID_NOT_VALID'], 400
['success' => false, 'message' => 'ID_NOT_FOUND'], 404
['success' => false, 'message' => 'UNAUTHORIZED'], 401
['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500

Возможные статусы задания:

  • "status": 0 ("status_description":"in queue") — Задание стоит в очереди. Терпеливо ждём своей очереди.
  • "status": 1 ("status_description":"in progress") — Процесс запущен, идёт выполнение. Остаётся только немного подождать.
  • "status": 2 ("status_description":"completed") — Всё готово, задача успешно завершена. Можно брать результат и работать дальше.
  • "status": 3 ("status_description":"rejected with error") — Возникла ошибка, задание не прошло проверку. Детали причины указаны в полях "comment_ru" и "comment_en", советую обязательно просматривать их для уточнения.
  • "status": 4 ("status_description":"rejected due to timeout") — Время ожидания истекло, сервис отклонил задачу. Попробуйте запустить её повторно.

Обратите внимание: если получен статус с ошибкой (`"status": 3`), Yes Ai возвращает развёрнутые комментарии сразу на русском и английском. Эти сообщения помогают разобраться, что пошло не так, например, нарушение правил сервиса или несовместимый контент. Показывайте эти подробные сведения пользователю — это экономит время на поиск причин и ускоряет обработку типовых ошибок.

JSON-ответ API при проверке статуса выполнения задания

Вот как может выглядеть пример ответа, который возвращает нейросеть Sora через API Yes Ai, когда задание на генерацию успешно завершено:

{ "success": true, // данные успешно получены "message": "OK", "results": { "animation_data": { "id": 67500, // уникальный ID задания в системе Yes Ai Video "user_id": 1234567890, // ID пользователя, который подал задание "tariff_id": 30, // тарифный план пользователя (0 - Demo, 5 - Micro, 10 - Start, 20 - Standard, 30 - VIP) "type": 23, "styles": [], "settings": { "sora_dimensions": "9:16", "sora_duration": 10, "sora_effect_id": 0, "sora_resolution": 720, "sora_version": 2 }, "child_ids": [], "parent_id": 0, "photo_url": "", "image_url": "https://yourdomain.com/tests/photo1.jpeg", // ссылка на референс, который отправил клиент "audio_url": "", "video_url": "", "final_frame_url": "", "result_url": "https://yourdomain.com/files/yesvideo/animations/1234567890_1760512973824949.mp4", // результат генерации видео в формате MP4, его необходимо скачать на свой сервер и отправить заказчику "result_type": "video", "result_data": { "video_fps": 30, "video_width": 704, // ширина видео в пикселях, которое является результатом выполнения задания "video_height": 1280, // высота видео в пикселях, которое является результатом выполнения задания "video_duration": 10, // длительность видео в секундах "video_durrange": 0 }, "comment_ru": "", // комментарий к заданию на русском языке, он заполняется только в том случае, если задание не удалось выполнить "comment_en": "", // комментарий к заданию на английском языке, он заполняется только в том случае, если задание не удалось выполнить "accounting": { "total_cost": 50, // итоговая стоимость выполнения задания в условных единицах "spent_points": 0, "spent_rpoints": 50, // количество 🔅 монет, которые были сняты с баланса за выполнение задания "spent_repost_points": 0, "spent_regenerating_rpoints": 0, // количество восстанавливаемых 🔅 монет в тарифе, которые были сняты с баланса за выполнение задания, используются только в том случае, если они есть на восстанавливаемом балансе "spent_balance": 0, "spent_rbalance": 0, "remaining_points": 1820, "remaining_rpoints": 2984.2445787, // остаток средств на балансе 🔅 монет после выполнения задания "remaining_repost_points": 0, "remaining_regenerating_rpoints": 0, // остаток средств на восстанавливаемом балансе 🔅 монет после выполнения задания "remaining_balance": 0, "remaining_rbalance": 747.57006 }, "language": "", "prompt": "мужчина улыбается и говорит \"приветствую, дамы и господа, представляю вам нейросеть Sora 2, способную генерировать видео по промту и референсу\". мужчина находится на оживленной улице в париже. на фоне находится кафе с посетителями. яркий солнечный день", // оригинальный текст промта, отправленного клиентом "prompt_en": "A man smiles and says, \"Greetings, ladies and gentlemen, I present to you the Sora 2 neural network, capable of generating video based on prompts and reference data\" The man is on a busy street in Paris. In the background is a cafe with customers on a bright sunny day.", // текст промта на английском языке - система Yes Ai производит автоматический перевод промтов, если это необходимо для нейросети. В Sora 2 переведенный текст не применяется для генераций "prompt_language": "source", "status": 2, // статус задания, где 2 - успешное завершение "status_description": "completed", // текстовое пояснение у статусу задания, где completed означает успешное завершение "start_at": 1760512694, // unixtime, время начала выполнения задания "finish_at": 1760512974, // unixtime, время завершения выполнения задания "created_at": 1760512687, // unixtime, время подачи задания клиентом "updated_at": 1760512974, // unixtime, время последнего обновления статуса задания "deleted_at": 0 } } }

Как работает обработка задач в Sora 2 (API Yes Ai)

Когда задание успешно выполнено, вы получаете индивидуальную ссылку на скачивание ролика в формате MP4. Видео хранится на нашем сервере ровно 60 минут.

Чтобы не потерять результат, сразу после завершения загрузите файл на свой сервер. После этого можете отправить готовое видео клиенту.

Ограничения на подачу и проверку статусов заданий

Через API сервиса Yes Ai можно создавать задания и отслеживать их выполнение — есть чёткие лимиты и требования.

Что нужно знать о работе с изображениями:

  • Если загружаете картинку референс для анимации, то размер файла — не больше 5 МБ, максимальное разрешение — 2000 пикселей по длинной стороне.
  • Принимаются форматы: jpeg, jpg, png.

Создавая новое задание через POST-запрос, учитывайте ограничение по частоте: не получится отправлять их чаще одного раза в секунду.

Обратите внимание. Скорость работы и максимальное количество задач напрямую связаны с вашим тарифом. Вот как распределены лимиты для очереди API Sora 2:

  • Demo — одновременно только 1 задача.
  • Тариф Micro — не больше 2 задач в очереди.
  • Start — до 3 активных заданий.
  • Standard — максимум 5.
  • Для VIP-аккаунта не больше 10.

Если в процессе работы с API Sora 2 у вас появились вопросы или нужно увеличить лимиты — напишите в поддержку @yes_ai_support в Telegram.

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

Обратите Внимание:

Для проверки статусов отправленных заданий используйте GET-запросы не чаще одного раза в секунду. Не начинайте проверять статус сразу после отправки задачи: для версии «2» первую проверку планируйте не раньше, чем через минуту, а для тарифа «2.pro» — через пять минут. Алгоритмы Sora 2 физически не выполняют генерацию быстрее этого времени.

Дальше проверяйте статус с интервалом в 20 секунд. Максимум — 60 попыток на одно задание. Если за отведённое количество попыток статус «готово» (2) или «ошибка» (3) вы так и не увидели — отклоняйте задание у себя, чтобы не грузить API лишними запросами. За те задачи, которые не были сгенерированы, Yes Ai деньги с вашего счёта не спишет.

2
Начать дискуссию