Генерация медиа

POST /api/media/generate — асинхронная генерация изображений, видео, TTS, музыки и 3D. Параметры model, prompt, opts. Опрос через GET /api/media/jobs/{id}.

Асинхронная генерация медиа: изображения, видео, озвучка (TTS), музыка и 3D. Создаёте задачу и опрашиваете результат. Полный список моделей — в каталоге медиа-моделей; webhook, ошибки и биллинг — в разделе webhook.

POSThttps://plusvibeapi.ru/api/media/generate
GEThttps://plusvibeapi.ru/api/media/jobs/{id}

Параметры создания

ПараметрТипОписание
modelобяз.stringИмя медиа-модели, например veo-3.1 или gpt-image-2 (см. каталог).
promptобяз.stringТекстовое описание.
optsobjectДоп. параметры генерации (зависят от модели): разрешение, длительность и т. п.

Создание и опрос

Создание возвращает 202 с { ok: true, jobId, status: "processing" }. Опрашивайте GET /api/media/jobs/{jobId} до status: "success", затем заберите resultUrls.

# 1. создать задачу генерации
curl https://plusvibeapi.ru/api/media/generate \
  -H "Authorization: Bearer $PLUSVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1",
    "prompt": "кот на скейте, замедленная съёмка"
  }'
# → {"ok":true,"jobId":"...","status":"processing"}
Списание считается по фактическому объёму генерации (разрешение, длительность). Если модель недоступна или запрос отклонён, ответ приходит с ok: false без списания. Цены на сайте — ориентировочные; точная сумма списания возвращается в заголовке x-pv-cost-rub каждого ответа (в рублях, с учётом нашей маржи).

Расширенные параметры (opts)

Помимо model и prompt, в opts можно передать дополнительные параметры. Набор зависит от модели. Полный машиночитаемый контракт — через GET /api/model-capabilities (или GET /api/model-capabilities/{model} для конкретной модели).

Часто используемые расширенные параметры
ПараметрТипОписание
aspect_ratiostringСоотношение сторон: 1:1, 16:9, 9:16, 4:3, 3:4.
durationstring|numberДлительность видео в секундах (5, 10, 15).
resolutionstringРазрешение: 480p, 720p, 1080p, 4K.
image_urlstring (URL)Исходное изображение для I2V / image-to-image.
negative_promptstringЧто исключить из генерации (qwen-image, wan-2-7).
guidancenumberGuidance scale — точность следования промпту (flux-2, qwen-image, seedance).
seednumberSeed для воспроизводимого результата (flux-2).
stabilitynumberСтабильность 0–1 (hailuo, happyhorse, seedance, TTS).
camerastringДвижение камеры, напр. "pan left" (kling-3.0, hailuo).
first_frame_urlstring (URL)Первый кадр для I2V (kling-3.0, wan-2-7).
last_frame_urlstring (URL)Последний кадр для I2V (seedance, kling-3.0, wan-2-7).
reference_imagestring (URL)Референс для стиля/персонажа (happyhorse).
similarity_boostnumberСходство голоса 0–1 (ElevenLabs TTS).
speednumberСкорость речи 0.5–2 (ElevenLabs TTS).
Все параметры опциональны, если не указано иное. Неизвестный параметр игнорируется. Полный список с типами, диапазонами и примерами — в ответе GET /api/model-capabilities/{model}.

Webhook готовности (вместо опроса)

Чтобы не опрашивать задачу, зарегистрируйте в личном кабинете один адрес mediaWebhookUrl. Когда задача завершится (успехом или ошибкой), сервис выполнит до пяти попыток доставки POST с JSON-телом:

// POST на ваш mediaWebhookUrl при завершении задачи
{
  "jobId": "...",
  "status": "success",            // или "fail"
  "model": "veo-3.1",
  "kind": "video",                // image | video | audio | music | 3d
  "resultUrls": ["https://plusvibeapi.ru/api/media/file/..."],
  "failMsg": null,
  "createdAt": "2026-06-17T10:00:00.000Z"
}
Подробности доставки, коды ошибок и биллинг — в Webhook и жизненный цикл медиа-задач. Кратко: webhook без подписи, дубликаты возможны, а после пяти неудачных попыток доставка прекращается. Опрос остаётся источником состояния.

Получение файла: /api/media/file/{id}/{idx}

GEThttps://plusvibeapi.ru/api/media/file/{id}/{idx}

URL результата генерации (изображение или видео) из resultUrls. Используйте его как возвращённый сервисом URL: он открывается без API-ключа и подходит для <img>, <video> или браузер. Провайдер скрыт: upstream-адрес резолвится на сервере, клиент его не видит.

Параметры пути и запроса
ПараметрТипОписание
idобяз.string (path)ID задачи (jobId) из ответа /api/media/jobs/{id}.
idxобяз.integer (path)Индекс результата (0-базированный). Для одного результата — 0.
query-параметрыкак в resultUrlsНе конструируйте URL самостоятельно и не изменяйте параметры, возвращённые сервисом.
# Подписанный URL возвращается в resultUrls ответа /api/media/jobs/{id}
# или в теле webhook. Открывается напрямую в браузере / <img> — без ключа.
https://plusvibeapi.ru/api/media/file/JOB_ID/0?sig=HMAC_SIGNATURE
Файлы кэшируются на диске 7 дней — повторные запросы к тому же URL отдаются мгновенно, без обращений к upstream. Заголовок ответа Cache-Control разрешает браузерное кэширование на 7 дней (cache hit) или 10 минут (fresh fetch). Серверная сторона блокирует обращения к приватным/loopback-адресам (SSRF-защита).