Разбор API Sora Images: нейросеть для генерации картинок
Сервис Yes Ai открывает разработчикам удобный API нейросети Sora Images для создания изображений прямо в своих проектах. Хотите интегрировать генерацию картинок в телеграм-бота, мобильное приложение или добавить на сайт — все возможно с помощью этого решения. Я лично интегрировал Sora Images в нескольких проектах: как для внутреннего корпоративного портала, так и для развлекательного бота в Telegram.
Для работы с API сервиса Yes Ai и нейросетью Sora Images потребуется специальный токен авторизации — его можно запросить заранее, воспользовавшись официальной инструкцией.
Прежде чем погружаться в разработку собственного программного продукта на базе нашего API, советую опробовать Telegram-бота @yes_ai_bot. Это самый быстрый способ без лишней мороки лично оценить возможности Sora Images и понять, как устроен сервис изнутри. К тому же, не поленитесь прочитать отдельную статью, где подробно разобраны фишки этой нейросети — там найдёте реальные примеры и лайфхаки, которые сэкономят кучу времени.
Основные правила использования API нейросети Sora Images
- Контент с намёками на взрослую тематику (NSFW, 18+) недопустим. Перед отправкой обращения обязательно фильтруйте все запросы и промты через список запрещённых фраз. Лучше перестраховаться, чем получить блокировку.
- Sora Images умеет создавать изображения по любым текстовым описаниям — промт на русском принимается так же, как на английском или любом другом языке.
- Хотите получить результат ближе к задуманному? Можно добавить один или несколько референсов — загружайте от 1 до 10 картинок, которые станут ориентирами для нейросети.
- Если используете референсы, обязательно напишите в промте, как именно должны быть использованы элементы с исходных изображений. Чем понятнее сформулирована задача, тем точнее будет ответ.
- Нейросеть поддерживает три варианта формата изображения: квадрат (1:1), вертикаль (2:3) и горизонталь (3:2). Учитывайте это при подготовке запроса.
- За один запрос система отдаёт от одной до четырёх картинок. Обычно их будет четыре, но иногда — меньше, всё зависит от сложности и параметров генерации.
В зависимости от выбранного тарифа количество задач в очереди ограничено:
- Demo — до 1 задачи одновременно
- Micro — до 2 задач сразу
- Start — до 3 задач
- Standard — не более 5 задач единовременно
- VIP — максимум 10 задач в очереди
Отправка запросов с промптами без референсов
Если вы создаёте изображения через Sora Images, можно отправлять промты без референсов.
Вот пример, как выглядит такой запрос:
Параметр style (style = '', '0', '1' или '2,3,4') — не обязательный, отвечает за выбор художественного направления изображения. Если вы не укажете его, система установит стиль «0», то есть картинка будет без выраженного стилистического оформления.
Можно задать стиль, выбрав подходящее число из списка:
- 0 – обычное изображение;
- 1 – случайно подобранный стиль;
- 2 – Midjourney;
- 3 – стимпанк;
- 4 – киберпанк;
- 5 – аниме;
- 6 – логотип;
- 7 – фотография;
- 8 – просто картинка;
- 9 – киношный стиль;
- 10 – иллюстрация;
- 11 – хоррор;
- 12 – с проработанными деталями;
- 13 – космос;
- 14 – готика;
- 15 – сюрреализм;
- 16 – реализм;
- 17 – фэнтези;
- 18 – научная фантастика (sci-fi);
- 19 – фэнтезийное искусство;
- 20 – комиксы;
- 21 – пиксель-арт;
- 22 – 3D-графика;
- 23 – линейный рисунок (line art);
- 24 – оригами;
- 25 – в изометрии;
- 26 – неоновый панк;
- 27 – аниме премиум;
- 28 – акварель;
- 29 – поп-арт;
- 30 – кавайный стиль;
- 31 – минимализм;
- 32 – ретрофутуризм;
- 33 – антиутопия;
- 34 – под формат рекламы;
- 35 – эпоха Возрождения;
- 36 – биомеханика;
- 37 – футуризм;
- 38 – арт-деко;
- 39 – кубизм;
- 40 – мода;
- 41 – в стилистике RPG;
- 42 – диско;
- 43 – архитектура;
- 44 – роскошь;
- 45 – кибернетика;
- 46 – ретро-кибер;
- 47 – био-кибер;
- 48 – сказка;
- 49 – пин-ап;
- 50 – блестящий стиль;
- 51 – смещение цвета.
prompt (prompt = '') — это ключевой параметр. По сути, простыми словами, вы даёте нейросети текстовое задание, инструкцию или короткое описание — как запрос в поиске. Можно писать на любом языке.
dimensions (dimensions = '2:3') — дополнительная настройка, она задаёт пропорции будущей картинки. По умолчанию стоит квадрат 1:1, но можно выбрать и вертикаль 2:3, и горизонталь 3:2.
Часто изображения, которые создаёт нейросеть Sora Images, получаются чуть тусклее, чем хотелось бы — цвета кажутся приглушёнными. У нас для этого своя фишка: стиль «Shining» (его индекс — «50»). С ним кадры сразу становятся ярче и сочнее. Рекомендую для большинства запросов ставить именно этот стиль по умолчанию. Но если вы продвинутый пользователь и любите эксперименты, «Shining» всегда можно вручную отключить в настройках, чтобы поиграться с оригинальными цветами сети.
Вот пример корректного ответа при успешной обработке задания:
Работа с референсами в запросах
Пример запроса с референсами для генерации изображений через Sora Images:
Параметры:
references_urls = [] (опциональный параметр; сюда добавляются прямые ссылки на изображения-референсы. Минимум — одна ссылка, максимум — десять).
В массиве указываются от 1 до 10 прямых ссылок на картинки в форматах jpg, jpeg либо png. Эти изображения нужны для ориентира, по ним нейросеть будет ориентироваться при генерации новых вариантов. Обязательно добавляется текстовый промт — подробное описание конечного результата, чтобы получить изображение именно таким, каким вы его задумали.
Примеры возможных ошибок:
- ['success' => false, 'message' => 'MODEL_ID_IS_EMPTY'], 400
- ['success' => false, 'message' => 'MODEL_ID_NOT_VALID'], 400
- ['success' => false, 'message' => 'ID_IS_EMPTY'], 400
- ['success' => false, 'message' => 'ID_NOT_VALID'], 400
- ['success' => false, 'message' => 'TYPE_IS_EMPTY'], 400
- ['success' => false, 'message' => 'TYPE_NOT_VALID'], 400
- ['success' => false, 'message' => 'STYLE_IS_EMPTY'], 400
- ['success' => false, 'message' => 'STYLE_NOT_VALID'], 400
- ['success' => false, 'message' => 'PROMPT_IS_EMPTY'], 400
- ['success' => false, 'message' => 'PROMPT_NOT_VALID'], 400
- ['success' => false, 'message' => 'REFERENCES_URLS_IS_EMPTY'], 400
- ['success' => false, 'message' => 'REFERENCES_URLS_NOT_VALID'], 400
- ['success' => false, 'message' => 'DIMENSIONS_IS_EMPTY'], 400
- ['success' => false, 'message' => 'DIMENSIONS_NOT_VALID'], 400
- ['success' => false, 'message' => 'UNAUTHORIZED'], 401
- ['success' => false, 'message' => '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' => 'STYLE_LIMIT_EXCEEDED'], 409
- ['success' => false, 'message' => 'TASK_LIMIT_EXCEEDED'], 409
- ['success' => false, 'message' => 'TASK_IS_NOT_COMPLETED'], 409
- ['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
- ['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500
Как забрать сгенерированные результаты
Отправив заказ через API, вы получаете уникальный идентификатор — ID родительского задания. Именно с помощью этого ID можно следить за его состоянием и скачать готовые файлы (обычно появляется одна-четыре ссылки для загрузки).
Лучше всего впервые проверить статус задачи спустя полминуты после отправки — быстрее система не справится. Потом мониторьте статус каждые 10–15 секунд: этого более чем достаточно, чтобы не нагружать сервер лишними запросами и ничего не упустить.
GET https://api.yesai.su/v2/sora/generations/{id}/batch
headers: { Content-Type: application/json, Authorization: Bearer }
Пример запроса проверьте выполнение задания, используя родительский ID:
Параметры:
{id} = 12345 (обязательно, id задания)
Успех:
['success' => true, 'message' => 'OK', 'results' => ['generations_data' => [ ... ]]], 200
Возможные ошибки:
- ['success' => false, 'message' => 'ID_IS_EMPTY'], 400
- ['success' => false, 'message' => 'ID_NOT_VALID'], 400
- ['success' => false, 'message' => 'UNAUTHORIZED'], 401
- ['success' => false, 'message' => 'ID_NOT_FOUND'], 404
- ['success' => false, 'message' => 'USER_HAS_BEEN_BANNED'], 409
- ['success' => false, 'message' => 'USER_HAS_BEEN_DELETED'], 409
- ['success' => false, 'message' => 'TOO_MANY_REQUESTS'], 429
- ['success' => false, 'message' => 'INTERNAL_SERVER_ERROR'], 500
Возможные статусы задания:
- "status": 0 — Заявка в очереди. Просто ждите, пока она дойдет до обработки.
- "status": 1 — Задание выполняется. Нужно немного подождать, процесс идет.
- "status": 2 — Выполнено. Все готово, можно переходить к анализу результатов. Если есть дочерние задачи, они появятся по одной, с задержкой в 3–10 секунд.
- "status": 3 — Отклонено из-за ошибки. Причину ищите в полях "comment_ru" и "comment_en", там подробности.
- "status": 4 — Отклонено по тайм-ауту. Ожидание затянулось, попробуйте отправить задание еще раз.
Разбор JSON-ответа от API Sora Images: как обработать статус задачи по генерации изображений
Пример JSON-ответа API при проверке статуса задачи по её родительскому идентификатору
После отправки задачи в Sora Images важно корректно обработать ответ сервиса. Вот с чем вы сталкиваетесь: проверяете статус задания по его родительскому идентификатору — и получаете JSON. В этом файле основной интерес представляют ссылки на сгенерированные изображения, которые появляются в массиве «result_url».
Что делать, если пришла только одна ссылка? Не паникуем. Сеть иногда «догружает» картинки поэтапно. Я обычно отправляю повторные запросы раз в 10–15 секунд и максимум делаю это 7 раз подряд. В 8 из 10 проектов этого хватает. Если за минуту остальные изображения так и не появились, скорее всего, генерация не удалась: Sora просто не справилась с задачей до конца. Такое поведение встречается: вместо четырех заявленных изображений сеть отдает два или три.
В статусе ответа ищите «status: 3». Это означает ошибку генерации. В рабочей практике я всегда вывожу пользователю детальное пояснение — беру текст из полей «comment_ru» (для русскоязычных клиентов) или «comment_en» (для англоязычных). Такой подход сильно снижает количество повторяющихся технических вопросов и недопониманий.
Чаще всего проблемы вызваны нарушением правил Sora Images: нельзя заказывать генерацию изображений NSFW-категории или другого запрещённого контента. Я всегда проговариваю это клиентам заранее: если игнорировать правила, API может просто закрыть им доступ. Гораздо проще предупредить, чем потом судорожно объяснять блокировку.
Обработка выолненных заданий выполненных в нейросети Sora Images в API
Когда нейросеть Sora Images генерирует изображения по вашему запросу через API Yes Ai, вы сразу получаете персональные ссылки для скачивания готовых файлов — их можно выбрать в формате PNG или JPG. Файлы будут доступны только час: изображение хранится на сервере ровно 60 минут, после чего автоматически удаляется. Так что не откладывайте скачивание, чтобы не потерять результат.
Если что-то не работает или вы столкнулись с вопросами, пишите нашей технической поддержке в Telegram: @yes_ai_support Ответим быстро, поможем разобраться.
Оригинал инструкции API Sora Images находится тут - перейти.