api генерации картинок удобно использовать не только для разовых изображений, но и для контент-плана, где к каждой теме автоматически создаётся визуал. Если темы постов уже лежат в таблице, приложение может брать строку, формировать промпт, запускать генерацию и сохранять ссылку на готовый результат. Ключ для доступа к API выдаётся после входа в разделе API; он показывается один раз.
В этой схеме важен не сам факт генерации, а правила вокруг неё: формат изображения, описание фирменного стиля, шаблон промпта и расписание запуска. Для социальных сетей это позволяет разделить подготовку контента и публикацию: утром система может получить тему из таблицы, создать изображение, а готовый URL передать следующему этапу вашего процесса.
Ниже разберём вариант, в котором один сценарий обслуживает ленту, сторис и обложки, а настройки стиля не приходится заново придумывать для каждого поста. За один запуск операции «Картинка по описанию» списывается 9 ₽.
1) Картинка к каждому посту без дизайнера: где предел
Самая простая автоматизация выглядит так: в таблице есть дата, тема, формат и, при необходимости, дополнительные требования к изображению. Скрипт читает очередную строку, собирает из неё описание и отправляет POST-запрос на /generate. После запуска задача получает идентификатор, а результат можно получить через GET /tasks/{id}.
У API есть базовый адрес https://genius-bot.ru/wp-json/genius/v1. Авторизация выполняется через заголовок Authorization: Bearer <ключ>. Поэтому ключ не нужно помещать непосредственно в текст промпта или передавать как параметр запроса.
Минимальный запуск операции можно сделать через curl. В запросе указывается название операции и описание того, что нужно получить:
curl -X POST "https://genius-bot.ru/wp-json/genius/v1/generate" \
-H "Authorization: Bearer $GENIUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"service": "image",
"prompt": "Квадратный визуал для поста о запуске нового продукта, чистая композиция, светлый фон, место для заголовка сверху, фирменная цветовая гамма бренда"
}'
Конкретные поля операции нужно сверять со списком доступных операций через GET /services. Этот маршрут также возвращает цены. В автоматизации это полезно сделать первым шагом: приложение может проверить, что операция image доступна, а затем запустить её.
Предел такого подхода определяется не количеством строк в таблице, а качеством исходных заданий. Если в каждой строке написано только «пост про скидку», генератору не хватает информации о сюжете, композиции и визуальном языке. Если же в таблице есть тема, формат, объект, настроение и правила бренда, один и тот же сценарий становится значительно предсказуемее.
Есть и технический предел по частоте: на один ключ разрешено не более 60 запросов в минуту. Для обычного контент-плана этого достаточно, но массовую обработку всё равно стоит делать с очередью, а не отправлять сотни запросов одновременно.

2) Форматы под ленту, сторис и обложку
Одна тема может потребовать несколько визуальных вариантов. Например, для публикации нужен основной кадр, для сторис — вертикальная версия, а для обложки — композиция с более свободным пространством под заголовок. В контент-плане лучше хранить формат отдельным полем, а не зашивать его в название темы.
Условная строка таблицы может выглядеть так: дата — 25 сентября; тема — «новая коллекция»; формат — «лента»; сюжет — «предметная съёмка продукта на светлом столе»; стиль — «минималистичный, спокойный, много воздуха». Для сторис та же тема получает другое значение формата и другое композиционное требование.
Это особенно важно для картинок для соцсетей нейросеть: один и тот же текстовый запрос не должен механически использоваться для всех размещений. Если изображение предназначено для сторис, в промпте нужно явно указать вертикальную композицию и расположение главного объекта. Для обложки полезно описывать свободную область, где позднее появится заголовок.
Можно построить генератор промпта из нескольких независимых частей:
style = "минималистичный брендовый визуал, мягкий свет, чистый фон, без лишних объектов"
prompts = {
"feed": f"Горизонтальная композиция для поста. Тема: {topic}. {style}",
"story": f"Вертикальная композиция для сторис. Тема: {topic}. {style}. Главный объект крупно в центральной области",
"cover": f"Обложка публикации. Тема: {topic}. {style}. Оставить свободное место сверху под заголовок"
}
Само поле формата здесь не является магической настройкой API. Это часть вашего промпта и логики приложения. Такой подход позволяет менять правила формирования задания централизованно, не редактируя каждую строку таблицы.
Если одна тема требует три изображения, это также нужно учитывать в расчёте стоимости: операция «Картинка по описанию» стоит 9 ₽ за запуск, поэтому три отдельных запуска стоят 27 ₽. Другие операции имеют отдельные тарифы.
| Операция | Цена за запуск | Когда может пригодиться в контент-плане |
|---|---|---|
| Картинка по описанию (image) | 9 ₽ | Новый визуал для поста, сторис или обложки |
| Изменить фото по описанию (image-edit) | 35 ₽ | Изменение уже подготовленного изображения по описанию |
| Увеличить качество фото (upscale) | 50 ₽ | Подготовка существующего изображения |
| Оживить фото (photo-video) | 25 ₽ | Когда для контента нужен движущийся вариант фотографии |
| Видео по описанию (video) | 119 ₽ | Отдельный видеоконтент из текстового задания |
Цены в таблице указаны за один запуск. Для автоматизации это удобнее абонентской модели: стоимость конкретного контент-плана можно посчитать по числу фактических операций.
3) Узнаваемый стиль: как описать его один раз
Если каждый промпт начинается с нуля, стиль быстро расползается. Сегодня фон получается светлым и пустым, завтра появляется много декоративных элементов, а через неделю изменяется характер освещения. Для контент-плана лучше вынести повторяющиеся требования в отдельный блок.
Например, постоянная часть может описывать палитру, характер света, тип композиции, материалы, уровень детализации и допустимые элементы. Переменная часть отвечает только за тему конкретного поста. В результате приложение соединяет два текста перед отправкой в API.
BRAND_STYLE = """
Визуальный стиль бренда:
сдержанная предметная композиция,
мягкий рассеянный свет,
чистый фон,
минимум декоративных элементов,
натуральные материалы,
главный объект легко считывается в центре кадра,
без логотипов и текста, если они не указаны отдельно.
"""
def make_prompt(topic, format_name):
return f"""
{BRAND_STYLE}
Тема: {topic}
Формат размещения: {format_name}
Создай изображение, соответствующее теме и указанному формату.
Не добавляй элементы, которых нет в описании темы.
"""
Такой шаблон имеет ещё одно преимущество: его можно менять отдельно от расписания. Если бренд переходит от предметных сцен к более редакционным фотографиям, достаточно изменить блок BRAND_STYLE. Строки с датами и темами при этом остаются прежними.
При описании фирменного стиля полезно отделять обязательные свойства от переменных. «Мягкий рассеянный свет» может быть постоянным требованием, а «деревянный стол» — только свойством конкретной рубрики. Если смешать их, одинаковый фон начнёт появляться там, где он не нужен.
Не стоит пытаться заставить генератор одновременно решать задачу дизайнера, копирайтера и бренд-менеджера одной длинной фразой. Для автоматического контент-плана лучше иметь структуру: стиль, тема, объект, композиция, формат и ограничения. Чем стабильнее эта структура, тем проще потом найти причину неудачного результата.

4) Генерация по расписанию из таблицы тем
Для расписания удобно разделить процесс на четыре этапа. Первый — получить строки, которым уже наступило время генерации. Второй — сформировать промпт. Третий — запустить операцию и сохранить идентификатор задачи. Четвёртый — дождаться результата через /tasks/{id} или получить уведомление на callback_url.
Webhook особенно удобен, если генерация не должна блокировать весь сценарий. При запуске можно передать callback_url, а когда задача будет готова, на этот адрес придёт POST. Ваш сервер после получения уведомления может записать ссылку на результат в базу или таблицу.
Пример минимального клиента на Python с библиотекой requests выглядит так:
import os
import requests
BASE_URL = "https://genius-bot.ru/wp-json/genius/v1"
API_KEY = os.environ["GENIUS_API_KEY"]
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"service": "image",
"prompt": (
"Визуал для публикации о новой коллекции. "
"Минималистичная предметная сцена, мягкий свет, "
"чистый фон, главный объект крупно, "
"свободное пространство сверху под заголовок."
),
"callback_url": "https://example.com/hooks/image-ready",
}
response = requests.post(
f"{BASE_URL}/generate",
headers=headers,
json=payload,
timeout=30,
)
response.raise_for_status()
task = response.json()
print(task)
Здесь callback_url является адресом вашего обработчика, а не адресом сервиса API. После запуска приложение должно сохранить идентификатор задачи из ответа. Если webhook не используется, отдельный процесс может периодически запрашивать GET /tasks/{id} и проверять состояние.
В реальном планировщике я бы добавил поле status в таблицу. Значения могут быть вроде pending, running, ready и error. Это не специальный формат сервиса, а внутренняя разметка вашего приложения, которая помогает не запустить одну строку дважды.
Ещё один полезный маршрут — GET /balance. Перед большой серией генераций приложение может проверить остаток и не запускать пачку, если средств недостаточно. При выпуске первого ключа на баланс начисляется 50 ₽ для пробы, поэтому первые тестовые запросы можно использовать для проверки всей цепочки: таблица → промпт → API → задача → результат.
Для расписания также нужно учитывать ограничение 60 запросов в минуту на ключ. Если утром требуется создать 100 изображений, их нельзя отправлять одной плотной пачкой. Очередь с ограничением скорости решает эту задачу на уровне приложения.
Сам контент-план при этом может оставаться простым:
| Дата | Тема | Формат | Статус |
|---|---|---|---|
| 25.09 | Новая коллекция | feed | pending |
| 26.09 | Совет по использованию продукта | story | pending |
| 27.09 | История бренда | cover | pending |
Планировщик выбирает строки по дате и статусу, а не по порядковому номеру. Если задача завершилась успешно, он записывает результат и меняет статус. Если запрос завершился ошибкой, строку можно оставить в состоянии, которое позволит повторить запуск после проверки.
5) Текст на картинке: почему его лучше класть поверх
Для автоматической генерации есть практическая причина не поручать модели весь макет с текстом. Если в изображении должен быть точный заголовок, цена, дата или название акции, безопаснее получить фон или иллюстрацию без надписей, а текст разместить отдельным слоем уже в вашем приложении.
Так сохраняется точное написание. Важный заголовок не зависит от того, насколько удачно генератор воспроизвёл буквы, а один и тот же текст можно поставить в разные форматы. Для ленты используется один размер блока, для сторис — другой, а для обложки — третий.
Это особенно удобно для баннеров через API. Само изображение создаётся операцией image, а типографика становится отдельным этапом вашего пайплайна. Если требуется изменить только заголовок, изображение не нужно генерировать повторно.
Такой подход также помогает разделить ответственность компонентов. Генератор отвечает за визуальную сцену, ваш шаблон — за сетку и текст, а таблица — за содержание конкретной публикации. В результате изменение формулировки поста не требует нового изображения.
Для иллюстрации можно хранить в таблице отдельные поля title, subtitle и cta. В промпт попадает только описание изображения, а эти поля используются позднее при сборке финального макета.

6) Сколько стоит месяц контента
Расходы проще всего считать от количества запусков. Если публиковать один визуал в день в течение 30 дней и на каждый пост делать один запуск операции «Картинка по описанию», получится 30 × 9 ₽ = 270 ₽.
Если для каждого дня нужны две версии — например, отдельные изображения для ленты и сторис, — получится 60 запусков, или 540 ₽. Три варианта на каждый из 30 дней дадут 90 запусков и 810 ₽.
| Визуалов в день | Запусков за 30 дней | Стоимость при 9 ₽ за запуск |
|---|---|---|
| 1 | 30 | 270 ₽ |
| 2 | 60 | 540 ₽ |
| 3 | 90 | 810 ₽ |
| 5 | 150 | 1 350 ₽ |
Это расчёт только для операции «Картинка по описанию». Если часть материалов проходит через другие операции, их нужно считать отдельно. Например, изменение фотографии по описанию стоит 35 ₽ за запуск, увеличение качества — 50 ₽, а оживление фотографии — 25 ₽.
Оплата идёт за запуск, без абонентской платы и без минимального платежа. Поэтому в автоматизации нет необходимости заранее покупать фиксированный пакет генераций: расходы можно привязать к фактическому числу строк контент-плана и вариантов на каждую строку.
Для контроля бюджета достаточно хранить в таблице или базе четыре значения: операцию, количество запусков, цену операции и итоговую сумму. Цены можно получить через GET /services, а текущий остаток — через GET /balance. Это позволяет не держать тарифы в нескольких местах приложения.
Если нужен не только генератор изображений, а ещё и текстовый этап, сервис поддерживает совместимый с OpenAI формат для POST /chat/completions и GET /models. В клиентской библиотеке достаточно изменить base_url и ключ. Для чата указана цена 40 ₽ за миллион токенов запроса и 400 ₽ за миллион токенов ответа, но эти расходы относятся к текстовым операциям и не входят в расчёт изображений выше.
Частые вопросы
Какой маршрут использовать для запуска генерации изображения?
Для запуска используется POST https://genius-bot.ru/wp-json/genius/v1/generate. Запрос авторизуется заголовком Authorization: Bearer <ключ>. Ключ выдаётся в разделе API после входа и показывается один раз.
Как получить результат, если генерация выполняется не сразу?
После запуска нужно сохранить идентификатор задачи и проверять её состояние через GET /tasks/{id}. Альтернативный вариант — передать callback_url: когда задача будет готова, на указанный адрес придёт POST.
Можно ли запускать генерацию по расписанию?
Да, расписание можно реализовать на стороне вашего приложения: планировщик выбирает готовые строки таблицы и отправляет запросы в API. Само расписание не является отдельной операцией API; оно относится к логике вашего сценария автоматизации.
Сколько стоит одна картинка?
Операция «Картинка по описанию» стоит 9 ₽ за один запуск. Если для одного поста нужны три отдельных изображения, расчёт составляет 27 ₽, если каждый вариант запускается отдельной операцией.
Есть ли ограничение на число запросов?
На один ключ разрешено не более 60 запросов в минуту. При массовой генерации стоит использовать очередь или другой механизм ограничения скорости.
Где взять ключ и посмотреть информацию об API?
Ключ выдаётся после входа в разделе доступа к API и документации. Там же можно начать настройку подключения. Ключ показывается один раз, поэтому его стоит сохранить в переменной окружения или другом защищённом хранилище, а не прописывать непосредственно в коде.
