Обзор API Sora 2 — нейросети от OpenAI для генерации видео со звуком
API нейросети Sora 2 — идеальный инструмент для тех, кто хочет внедрить генерацию видео со звуком и по референсам прямо в свой проект: будь то бот, веб-сервис или мобильное приложение. Эта модель наряду с Veo 3 считается одной из самых мощных для запуска в 2025 году — я лично тестировал обе и вижу серьезную разницу по качеству.
Прежде чем подключать 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 }
Параметры:
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:
Параметры:
{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, когда задание на генерацию успешно завершено:
Как работает обработка задач в 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 деньги с вашего счёта не спишет.