Фото → видео с озвучкой
Полный production pipeline: фотография → озвучка → говорящий аватар. Запросы ElevenLabs TTS, Kling Avatar и OmniHuman, котировка, статусы задач, повторы и сроки хранения результата.
Реальная цепочка клиента: фото → озвучка → говорящий аватар. Все задачи создаются асинхронно; API-ключ передавайте как Authorization: Bearer $PLUSVIBE_API_KEY. Каждый шаг сначала котируйте через POST /api/media/price, затем запускайте с тем же набором полей и полученным quote_id через POST /api/media/generate.
1. Синтез речи
Основной запрос использует публичную модель elevenlabs-v4-tts. Рабочий маршрут — Flow; поле engine принимает v4 или turbo и выбирает ElevenLabs v4 / v4 Turbo. Голоса: Rachel, Aria, Roger, Sarah, Laura, Charlie, George, Callum, River, Liam, Charlotte, Alice, Matilda, Will, Jessica, Eric, Chris, Brian, Daniel, Lily, Bill; вместо списка можно передать свой voice_id. prompt — строка 1–5000 символов. language_code: auto, ru, en, de, fr, es, it, pt, pl, uk, tr, zh, ja, ko. stability и similarity_boost — числа 0–1; output_format: mp3, mp3_hq, opus; apply_text_normalization: auto/on/off; seed — целое 0–4294967295.
{
"model": "elevenlabs-v4-tts",
"prompt": "Здравствуйте! Расскажу, что нового.",
"opts": {"engine": "turbo", "voice": "Rachel", "language_code": "ru", "stability": 0.5, "similarity_boost": 0.75, "output_format": "mp3", "apply_text_normalization": "auto", "seed": 42}
}Поля engine, voice, language_code, output_format и числовые параметры проверяются до отправки. Успешный ответ: {"ok":true,"jobId":"job_…","status":"submitting","model":"elevenlabs-v4-tts"}. Опрос GET /api/media/jobs/{jobId} возвращает submitting → processing → success или fail; после success возьмите resultUrls[0] как audio URL для следующего шага.
Цена считается пропорционально числу символов по текущему тарифу выбранного engine; перед созданием используйте quote response. Альтернативы модели tts: minimax-turbo, minimax-hd, qwen3, gemini-flash. Устаревшие варианты ElevenLabs Turbo 2.5 и Multilingual v2 на прежнем маршруте выключены.
2. Фото + аудио → говорящий аватар
Выберите kling-ai-avatar (tier std 720p или pro 1080p) либо omnihuman-v1.5 (720p/1080p). Поля image_url и audio_url обязательны; каждое принимает публичный HTTP(S), data URI или ID собственного файла из POST /v1/files. Upload ограничен 50 MiB. Разрешённый MIME и максимальную длительность определяет выбранный endpoint; общий API schema числовой лимит не задаёт, поэтому не используйте длинное аудио и предварительно проверяйте quote. Kling Avatar тарифицируется по фактической длине входного аудио; OmniHuman — по фактической длительности результата, 1080p менее 30 с и 720p менее 60 с.
{
"model": "kling-ai-avatar",
"prompt": "",
"quote_id": "mq_…",
"max_price_rub": 40,
"opts": {"tier": "std", "image_url": "https://example.com/portrait.jpg", "audio_url": "https://example.com/elevenlabs.mp3"}
}Немедленный ответ создания — HTTP 202 и JSON {"ok":true,"jobId":"job_…","status":"submitting","priceRub":12.34,"resultsExpireAt":null}. Опрос возвращает: processing — {"status":"processing","stage":"generating","resultUrls":[],"failure":null}; success — {"status":"success","stage":"completed","resultUrls":["https://plusvibeapi.ru/media/r/…/0.mp3"],"priceRub":12.34,"resultsExpireAt":"…","failure":null}; fail — {"status":"fail","stage":"failed","failReason":"provider_overloaded","failure":{"code":"provider_overloaded","advice":"retry_later","definitive":true,"charged":false}}. Первая проверка статуса может быть submitting, затем processing. Файлы хранятся 7 дней после completion; скачайте до resultsExpireAt, иначе получите 410 media_result_expired.
curl https://plusvibeapi.ru/api/media/generate -H "Authorization: Bearer $PLUSVIBE_API_KEY" -H 'Content-Type: application/json' -d '{"model":"kling-ai-avatar","prompt":"","opts":{"tier":"std","image_url":"https://example.com/portrait.jpg","audio_url":"https://example.com/tts-result.mp3"}}'Цитата цены, ожидание и повторы
POST /api/media/price возвращает {"ok":true,"priceRub":12.34,"quoteId":"mq_…","expiresAt":"…"}. Передайте тот же quote_id и max_price_rub не меньше quote. Невалидный ceiling → 400 invalid_max_price_rub; quote выше ceiling → 422 media_max_price_exceeded; недостаток средств под ceiling → 402 media_max_price_unfunded. Idempotency-Key длиной 1–255 ASCII повторяет тот же job в течение 24 часов; другой body → 422 idempotency_key_reused, одновременная отправка → 409 idempotency_key_in_progress с Retry-After: 5, плохой ключ → 400. При submission_outcome_unknown не отправляйте дубль: продолжайте polling; при definitive retry_later можно создать новую задачу после backoff. Ошибки fix_input требуют изменения входа, choose_other_route — другой модели.
SkyReels: фото и голос
Для говорящего аватара передайте либо image_url + audio_url, либо reference_image_urls (1–5 фото) + audio_url. Длительность видео — целое число 3–15, 480P/720P/1080P; video_mode — reference или extend. Для audio_url общий generate schema принимает URL/data URI/file ID. Платный SkyReels createTask в этой проверке не выполнялся.
Veo 3.1
Google называет семейство Veo 3.1 и указывает генерацию видео с нативным звуком. В этом API переключателя аудио нет; отправляем ровно разрешённые поля контракта. Точная цена по модели, тарифу и разрешению — результат POST /api/media/price, без фиксированной суммы в этом руководстве.
| Параметр | Тип | Описание |
|---|---|---|
Lite — Google Veo 3.1 Lite preview | veo3_lite | 4/6/8 с; 720p ₽18,86 / 1080p ₽22,00 / 4K ₽94,29 при FX 88; TEXT_2_VIDEO, FIRST_AND_LAST_FRAMES_2_VIDEO, REFERENCE_2_VIDEO; audio track: да (ffprobe: AAC в завершённом prod MP4) |
Fast — Google Veo 3.1 Fast | veo3_fast | 4/6/8 с; 720p ₽37,71 / 1080p ₽40,86 / 4K ₽113,14 при FX 88; TEXT_2_VIDEO, FIRST_AND_LAST_FRAMES_2_VIDEO, REFERENCE_2_VIDEO; audio track: да (Veo 3.1 family) |
Quality — Google Veo 3.1 | veo3 | 4/6/8 с; 720p ₽157,14 / 1080p ₽160,29 / 4K ₽238,86 при FX 88; TEXT_2_VIDEO и FIRST_AND_LAST_FRAMES_2_VIDEO; audio track: да (Veo 3.1 family) |
При текущем RU курсе 88 ₽/$ price function даёт для 720p: Lite — 18,86 ₽, Fast — 37,71 ₽, Quality — 157,14 ₽. Это именно quote, а не фиксированная цена: перед каждой задачей получите сумму через POST /api/media/price; US использует USD. Veo reference mode требует ровно 8 секунд; imageUrls — 1–3 URL. Дополнительные поля вроде audio, seed или watermark отклоняются. Полные ограничения см. в генерации медиа и webhook.