Skip to content

Генерация медиа (видео, картинки, музыка)

NordRouter умеет генерировать изображения, видео и музыку — тем же ключом sk-nr-… и с того же баланса, что и текстовые модели. Оплата за факт, никаких токенов и пакетов.

Как это работает

Генерация асинхронная (видео и музыка занимают от секунд до пары минут):

  1. Создаёте задачуPOST /media/generate с моделью и параметрами.
  2. Ждёте результат — опрашиваете GET /media/job/:id, пока status не станет done.
  3. Забираете файл — по result_url (ссылка на nordrouter.com).

1. Создать задачу

bash
curl https://nordrouter.com/media/generate \
  -H "Authorization: Bearer sk-nr-ВАШ-КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "image/nano-banana-2",
    "input": { "prompt": "уютная хижина в зимнем лесу, акварель", "resolution": "2K" }
  }'

Ответ:

json
{ "id": "beefb531-…", "model": "image/nano-banana-2", "status": "processing",
  "poll": "https://nordrouter.com/media/job/beefb531-…" }

2. Дождаться результата

bash
curl https://nordrouter.com/media/job/beefb531-…
json
{ "id": "beefb531-…", "status": "done",
  "result_url": "https://nordrouter.com/media/file/beefb531-…",
  "cost_usd": 0.052, "error": null }

status: processingdone (или failed). Готовый файл — по result_url.

🎵 Suno генерирует два трека за задачу: первый — в result_url, второй — в result_url_2 (тот же формат ссылки). Цена — за задачу целиком, оба трека уже включены.

Вебхуки (вместо поллинга)

Не хотите опрашивать — передайте в POST /media/generate поле callback_url, и мы сами пришлём результат POST-запросом, когда задача завершится:

bash
curl https://nordrouter.com/media/generate \
  -H "Authorization: Bearer sk-nr-ВАШ-КЛЮЧ" -H "Content-Type: application/json" \
  -d '{
    "model": "image/nano-banana-2",
    "input": { "prompt": "…" },
    "callback_url": "https://ваш-сервер.com/webhooks/nordrouter",
    "callback_secret": "ваш-секрет"
  }'

Когда задача перейдёт в done/failed, на callback_url придёт POST с тем же телом, что отдаёт GET /media/job/:id, плюс поле event:

json
{ "event": "media.completed", "id": "beefb531-…", "status": "done",
  "result_url": "https://nordrouter.com/media/file/beefb531-…", "cost_usd": 0.052, "error": null }

event: media.completed или media.failed.

Проверка подписи. Если задали callback_secret, в заголовке X-NR-Signature придёт sha256=<hmac> — HMAC-SHA256 от тела запроса на вашем секрете. Сверьте, чтобы убедиться, что запрос от нас:

python
import hmac, hashlib
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
assert hmac.compare_digest(expected, request.headers["X-NR-Signature"])

Требования и надёжность:

  • callback_url — только https:// и только публичный адрес (внутренние/приватные IP отклоняются с ошибкой 400).
  • До 4 попыток доставки с нарастающей паузой; отвечайте 2xx, иначе повторим.
  • Вебхук не отменяет поллинг — можно совмещать или использовать GET /media/job/:id как запасной вариант.

Подробнее

Жизненный цикл задачи, проверка подписи с примерами и надёжность доставки — на странице Задачи и вебхуки.

3. Список моделей и цен

GET /media/models возвращает доступные модели, их параметры и оценку стоимости:

json
{ "models": [
    { "id": "image/nano-banana-2", "type": "image",
      "fields": [ {"name":"prompt","type":"textarea"}, {"name":"resolution","type":"select","options":["1K","2K","4K"]} ],
      "est_usd": 0.052 }
  ], "retention_days": 14 }

Полный справочник

Все модели с параметрами input и ценой — на странице Медиа: все модели и биллинг.

Модели

Доступно 95 моделей — полный актуальный список с параметрами и ценой всегда в GET /media/models. Основные семейства:

ТипСемействоРежимы≈ цена
🖼 КартинкиNano Banana / 2 / Pro (image/nano-banana*)текст→картинка, правка, до 4Kот $0.025
🖼Imagen 4 Fast / Ultra (image/imagen4*)текст→картинкаот $0.025
🖼GPT Image 1.5 / 2 (image/gpt-image-*)текст→картинка, правка, до 4Kот $0.025
🖼Flux 2 Pro / Flex (image/flux2-*)текст→картинка, правкаот $0.03
🖼Seedream v4 / 4.5 / 5 Lite (image/seedream-*)текст→картинка, правкаот $0.04
🖼Ideogram v3 / Character (image/ideogram-*)текст, ремикс, персонажот $0.02
🖼Qwen / Wan Image / Grok / Z-Imageтекст→картинка, правкаот $0.01
🛠 УтилитыTopaz / Recraft (image/*upscale*, image/recraft-remove-bg)апскейл до 8K, удаление фонаот $0.01
🎬 ВидеоVeo 3.1 Lite / Fast / Quality (video/veo-3.1-*)текст/фото→видеоот $0.19
🎬Kling 2.1 → 3.0 (video/kling-*)текст/фото→видео, motion, аватары, до 4K и 15сот $0.16
🎬Wan 2.2 → 2.7 (video/wan-*)текст/фото/видео→видео, speech-to-videoот $0.25
🎬Seedance 1.5 / 2 / Fast / Mini (video/seedance-*)текст/фото→видео, до 4K, звукот $0.06
🎬Hailuo 02 / 2.3 (video/hailuo-*)текст/фото→видеоот $0.08
🎬HappyHorse 1.0 / 1.1 (video/happyhorse-*)текст/фото/референс→видео, правка видеоот $0.70
🎬Grok Video / 1.5 (video/grok-*)текст/фото→видео, до 30сот $0.06
🎬Gemini Omni (video/gemini-omni)видео со звуком, до 4Kот $0.39
🗣 АватарыKling Avatar, OmniHuman, InfiniteTalk, Lip Syncфото+аудио→говорящее видеоот $0.19
🎵 МузыкаSuno V4–V5.5 (music/suno-v5)текст/стиль→2 трека~$0.08
🎙 ОзвучкаElevenLabs Turbo / Multilingual (audio/elevenlabs-*)текст→речь, изоляция голосаот $0.04 / 1000 зн.

Параметры

Параметры зависят от модели — точный список в /media/models (поле fields: имя, тип, варианты, дефолт). Общие:

  • prompt — описание (для всех генеративных моделей).
  • resolution1K/2K/4K (картинки) или 480p/720p/1080p/4k (видео). Цена зависит от разрешения.
  • aspect_ratio1:1, 16:9, 9:16 и др.
  • duration — длительность видео в секундах (у большинства 5/10, у Kling 3.0 и Wan 2.7 до 15, у Grok до 30). Видео тарифицируется посекундно.
  • sound / generate_audio — звуковая дорожка (Kling, Seedance). Со звуком дороже — оценка в /media/estimate это учитывает.
  • mode / quality / rendering_speed — уровень качества (Kling 3.0 std/pro/4K, GPT Image medium/high, Ideogram TURBO/BALANCED/QUALITY).
  • image — входная картинка (правка, фото→видео; передайте прямую ссылку или загрузите через /media/upload).
  • video_url / audio_url — входные видео/аудио (video-edit, липсинк, аватары).
  • Для музыки: title, style, instrumental, version (V4V5_5).

Точную цену конкретной конфигурации до запуска показывает POST /media/estimate с теми же model + input.

Стоимость и хранение

  • Списывается с вашего USD-баланса по фактической стоимости генерации — точную сумму видно в cost_usd после завершения.
  • Неудачные генерации (ошибка провайдера) не тарифицируются — резерв возвращается автоматически.
  • Файлы хранятся на наших серверах ограниченное время (см. retention_days в /media/models) — скачайте, чтобы сохранить.