Генерация видео
Видео-модели — от 30 секунд до нескольких минут. Используйте async + SSE или webhooks, sync-режим (/run) для них почти всегда отвалится по 5-минутному таймауту.
Минимальный пример
import { fetchEventSource } from '@microsoft/fetch-event-source'
const NA_API_KEY = process.env.NA_API_KEY
const BASE = 'https://api.neuroartist.ru'
// 1. Отправить задачу
const submit = await fetch(`${BASE}/queue/wan-25-preview/text-to-video`, {
method: 'POST',
headers: {
Authorization: `Bearer ${NA_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'A cinematic shot of a snowy forest at dawn, slow camera pan',
duration: 5,
aspect_ratio: '16:9'
})
}).then(r => r.json())
// { requestId: "req_abc", status: "IN_QUEUE" }
// 2. Подписка на прогресс
await new Promise((resolve, reject) => {
fetchEventSource(
`${BASE}/queue/wan-25-preview/text-to-video/requests/${submit.requestId}/progress/stream`,
{
headers: { Authorization: `Bearer ${NA_API_KEY}` },
onmessage(msg) {
const e = JSON.parse(msg.data)
if (e.stage === 'completed') resolve(e.result)
if (e.stage === 'failed') reject(new Error(e.error?.message))
}
}
)
})Результат:
{
"video": {
"url": "https://s3.cloud.ru/neuroartist/.../result.mp4",
"content_type": "video/mp4",
"duration": 5.0
},
"seed": 42
}Популярные модели
| modelId | Назначение | Цена |
|---|---|---|
wan-25-preview/text-to-video | text-to-video, до 8 сек | 60 ₽ / 5 сек |
kling-video/v2/standard/text-to-video | text-to-video Kling | 80 ₽ / 5 сек |
kling-video/v2/standard/image-to-video | image-to-video Kling | 80 ₽ / 5 сек |
runway-gen3/turbo/image-to-video | Runway Gen-3 Turbo | 100 ₽ / 5 сек |
luma-dream-machine | Luma Dream Machine | 90 ₽ / 5 сек |
minimax/video-01-live | MiniMax video-01 | 70 ₽ / 5 сек |
Полный каталог — GET /models?category=video или /generate.
Image-to-video
Передайте URL стартового кадра в image_url:
curl -X POST https://api.neuroartist.ru/queue/kling-video/v2/standard/image-to-video \
-H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://your-cdn.example.com/keyframe.jpg",
"prompt": "slow camera dolly forward",
"duration": 5
}'Источники изображения — Загрузка файлов.
Webhook вместо SSE (для production)
Видео-генерация может занять 1–5 минут. Если ваш runtime serverless или клиент закрывает вкладку — используйте webhook:
curl -X POST 'https://api.neuroartist.ru/queue/kling-video/v2/standard/text-to-video?webhook=https://your.app/cb' \
-H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"prompt":"…","duration":5}'Готовый код приёмника с подписью — приём webhook.
Что НЕ делать
- ❌ Не используйте
POST /runдля видео — sync-таймаут 5 минут, видео часто длиннее. - ❌ Не открывайте 10 SSE-стримов сразу: лимит 5 на пользователя. Для batch — webhook.
- ❌ Не игнорируйте
failedстадию — генерация может упасть через несколько секунд после submit (например, NSFW-фильтр).
Что приходит
{
"video": {
"url": "https://s3.cloud.ru/neuroartist/.../result.mp4",
"content_type": "video/mp4",
"duration": 5.0
},
"seed": 42,
"timings": { "inference": 47.3 }
}URL ведёт в наш S3. Срок жизни — пока не удалите через /me/activity.
Стоимость
Цена считается за длительность (duration). До запуска можно посчитать:
curl -X POST https://api.neuroartist.ru/models/kling-video/v2/standard/text-to-video/estimate \
-H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"prompt":"…","duration":5}'{ "estimatedCostRub": 80, "priceUnit": "second", "quantity": 5 }Дальше
- Все video-модели — каталог с фильтрами.
- Async + SSE — детали стрима прогресса.
- Приём webhook — production-grade приёмник.
- Загрузка input-файлов — для img2vid, vid2vid.