Генерирует короткие ролики по текстовому описанию или оживляет картинку, превращая её в видео. Стоимость от 10 до 120 рублей за генерацию - зависит от модели, разрешения и длительности.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Seedance 1.0 подходит для трёх практических сценариев: генерация видео только по тексту, оживление одного изображения и генерация видео по изображению с заданным конечным кадром. Это удобно для коротких промо-роликов, анимации иллюстраций, живых портретов и быстрых концепт-видео.
Каждый вызов создаёт асинхронную операцию. После запуска нужно сохранить id и отдельно проверять статус, пока генерация не завершится.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус.Доступные режимы:
bytedance/v1-pro-text-to-video - видео из текста, модель Pro.bytedance/v1-lite-text-to-video - видео из текста, модель Lite.bytedance/v1-pro-image-to-video - видео по изображению, модель Pro.bytedance/v1-lite-image-to-video - видео по изображению, модель Lite. Поддерживает опциональный end_image_url.bytedance/v1-pro-fast-image-to-video - видео по изображению, модель Pro Fast.{
"tool": "seedance-1-0",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь это всегда "seedance-1-0".input - параметры конкретного запуска.input, без дополнительного input.input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
seedance_generation_type | enum | Да | Режим генерации. Варианты: text - видео из текста, image - видео по изображению. Этот параметр должен соответствовать выбранной model, иначе условные поля будут валидироваться не так, как вы ожидаете. |
model | enum | Да | Конкретный режим и уровень качества. Варианты: bytedance/v1-pro-text-to-video, bytedance/v1-lite-text-to-video, bytedance/v1-pro-image-to-video, bytedance/v1-lite-image-to-video, bytedance/v1-pro-fast-image-to-video. |
prompt | string | Да | Текстовое описание будущего ролика. Лучше явно указывать действие, движение камеры, стиль, свет, фон и ограничения по композиции. |
image_url | string (url) | Да, только для seedance_generation_type = "image" | Внешний URL исходного изображения. Разрешены только http/https ссылки. Допустимые расширения для Public API: .jpg, .jpeg, .png, .webp. |
end_image_url | string (url) | Нет, только для model = "bytedance/v1-lite-image-to-video" | Внешний URL изображения, к которому ролик должен прийти в финале. Полезно, если важен конечный кадр. Разрешены только http/https ссылки. Допустимые расширения для Public API: .jpg, .jpeg, .png, .webp. |
aspect_ratio | enum | Да, только для seedance_generation_type = "text" | Соотношение сторон для text-to-video. Варианты: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, 9:21. Ограничения по моделям: 21:9 недоступен для bytedance/v1-lite-text-to-video, 9:21 недоступен для bytedance/v1-pro-text-to-video. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedance-1-0",
"input": {
"seedance_generation_type": "text",
"model": "bytedance/v1-pro-text-to-video",
"prompt": "Кинематографичный пролёт камеры над ночным городом после дождя, неоновые вывески, мокрый асфальт с отражениями, мягкий туман, реалистичный свет",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": "5",
"camera_fixed": false
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedance-1-0',
input: {
seedance_generation_type: 'text',
model: 'bytedance/v1-pro-text-to-video',
prompt:
'Кинематографичный пролёт камеры над ночным городом после дождя, неоновые вывески, мокрый асфальт с отражениями, мягкий туман, реалистичный свет',
aspect_ratio: '16:9',
resolution: '720p',
duration: '5',
camera_fixed: false,
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedance-1-0',
'input': {
'seedance_generation_type': 'text',
'model': 'bytedance/v1-pro-text-to-video',
'prompt': 'Кинематографичный пролёт камеры над ночным городом после дождя, неоновые вывески, мокрый асфальт с отражениями, мягкий туман, реалистичный свет',
'aspect_ratio': '16:9',
'resolution': '720p',
'duration': '5',
'camera_fixed': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedance-1-0",
"input": {
"seedance_generation_type": "image",
"model": "bytedance/v1-pro-image-to-video",
"prompt": "Плавный наезд камеры на девушку у окна, лёгкое движение волос от ветра, естественный свет, сохранить черты лица и композицию кадра",
"image_url": "https://cdn.example.com/source-image-1.jpg",
"resolution": "720p",
"duration": "5",
"camera_fixed": true
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedance-1-0',
input: {
seedance_generation_type: 'image',
model: 'bytedance/v1-pro-image-to-video',
prompt:
'Плавный наезд камеры на девушку у окна, лёгкое движение волос от ветра, естественный свет, сохранить черты лица и композицию кадра',
image_url: 'https://cdn.example.com/source-image-1.jpg',
resolution: '720p',
duration: '5',
camera_fixed: true,
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedance-1-0',
'input': {
'seedance_generation_type': 'image',
'model': 'bytedance/v1-pro-image-to-video',
'prompt': 'Плавный наезд камеры на девушку у окна, лёгкое движение волос от ветра, естественный свет, сохранить черты лица и композицию кадра',
'image_url': 'https://cdn.example.com/source-image-1.jpg',
'resolution': '720p',
'duration': '5',
'camera_fixed': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Этот сценарий доступен только для bytedance/v1-lite-image-to-video.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedance-1-0",
"input": {
"seedance_generation_type": "image",
"model": "bytedance/v1-lite-image-to-video",
"prompt": "Персонаж медленно поворачивает голову к камере, мягкая улыбка, плавное движение, сохранить стиль исходного изображения",
"image_url": "https://cdn.example.com/source-image-1.jpg",
"end_image_url": "https://cdn.example.com/target-image-1.jpg",
"resolution": "720p",
"duration": "5",
"camera_fixed": false
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedance-1-0',
input: {
seedance_generation_type: 'image',
model: 'bytedance/v1-lite-image-to-video',
prompt:
'Персонаж медленно поворачивает голову к камере, мягкая улыбка, плавное движение, сохранить стиль исходного изображения',
image_url: 'https://cdn.example.com/source-image-1.jpg',
end_image_url: 'https://cdn.example.com/target-image-1.jpg',
resolution: '720p',
duration: '5',
camera_fixed: false,
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedance-1-0',
'input': {
'seedance_generation_type': 'image',
'model': 'bytedance/v1-lite-image-to-video',
'prompt': 'Персонаж медленно поворачивает голову к камере, мягкая улыбка, плавное движение, сохранить стиль исходного изображения',
'image_url': 'https://cdn.example.com/source-image-1.jpg',
'end_image_url': 'https://cdn.example.com/target-image-1.jpg',
'resolution': '720p',
'duration': '5',
'camera_fixed': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "seedance-1-0",
"cost": 30,
"balance_after": 470,
"created_at": "2026-03-15T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "seedance-1-0",
"cost": 30,
"created_at": "2026-03-15T12:00:00Z",
"completed_at": "2026-03-15T12:01:48Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/seedance-1-0/result.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "seedance-1-0",
"cost": 15,
"created_at": "2026-03-15T12:00:00Z",
"completed_at": "2026-03-15T12:00:08Z",
"result": null,
"error_message": "Ваш запрос не прошел модерацию."
}
После создания операции сохраните id и проверяйте её статус запросом:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const response = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
}
)
const data = await response.json()
После успешного завершения result возвращает готовое видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/seedance-1-0/result.mp4"
]
}
type всегда равен "video".urls содержит ссылки на готовые mp4-файлы.Базовая цена зависит от трёх параметров:
modelresolutiondurationМинимальная цена - 10 ₽ за генерацию.
| Модель | 480p / 5 сек | 480p / 10 сек | 720p / 5 сек | 720p / 10 сек | 1080p / 5 сек | 1080p / 10 сек |
|---|---|---|---|---|---|---|
bytedance/v1-pro-text-to-video | 15 ₽ | 30 ₽ | 30 ₽ | 60 ₽ | 60 ₽ | 120 ₽ |
bytedance/v1-lite-text-to-video | 10 ₽ | 20 ₽ | 20 ₽ | 40 ₽ | 50 ₽ | 100 ₽ |
| Модель | 480p / 5 сек | 480p / 10 сек | 720p / 5 сек | 720p / 10 сек | 1080p / 5 сек | 1080p / 10 сек |
|---|---|---|---|---|---|---|
bytedance/v1-pro-image-to-video | 15 ₽ | 30 ₽ | 30 ₽ | 60 ₽ | 60 ₽ | 120 ₽ |
bytedance/v1-lite-image-to-video | 10 ₽ | 20 ₽ | 20 ₽ | 40 ₽ | 50 ₽ | 100 ₽ |
bytedance/v1-pro-fast-image-to-video | недоступно | недоступно | 20 ₽ | 40 ₽ | 30 ₽ | 60 ₽ |
Что влияет на итоговую цену:
bytedance/v1-pro-fast-image-to-video нет режима 480p, поэтому минимальная цена для него выше, чем у Lite image-to-video.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию.id.image_url и end_image_url подходят только внешние http/https URL..jpg, .jpeg, .png, .webp.HEIC/HEIF можно встретить в UI-загрузке, но по URL в Public API они не принимаются.seedance_generation_type и model должна совпадать по режиму: text-модели используйте с seedance_generation_type = "text", image-модели - с seedance_generation_type = "image".aspect_ratio нужен только для text-to-video и не используется в image-to-video.end_image_url работает только с bytedance/v1-lite-image-to-video.camera_fixed недоступен для bytedance/v1-pro-fast-image-to-video.prompt описаны движение, темп, ракурс и ограничения по композиции, тем стабильнее результат.resolution |
enum |
| Да |
Разрешение итогового видео. Варианты: 480p, 720p, 1080p. Для bytedance/v1-pro-fast-image-to-video вариант 480p недоступен. |
duration | enum | Да | Длительность ролика. Варианты: 5 - 5 секунд, 10 - 10 секунд. |
camera_fixed | boolean | Нет | Если true, модель старается делать движение камеры спокойнее и стабильнее. Поле недоступно для bytedance/v1-pro-fast-image-to-video. |