Общая документация Public API · API-ключ можно создать в настройках аккаунта
Seedance 2.0 Mini - облегчённая версия Seedance 2.0 для роликов от 4 до 15 секунд. Она умеет оживлять картинку, строить сцену между первым и последним кадром, рисовать видео по тексту и собирать ролик по референсам: картинкам, видео и аудио. Режим с референсами удобен, когда нужно повторить героя, стиль или движение из готовых материалов.
Каждый вызов создаёт асинхронную операцию: вы получаете id, а результат забираете отдельным запросом статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Режимы, которые доступны через API:
image - оживить картинку; можно задать и конечный кадр.text - видео по тексту, при желании с поиском в интернете для уточнения деталей.references - видео по набору референсов: до 9 картинок, до 3 видео и до 3 аудио.{
"tool": "seedance-2-0-mini",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь всегда "seedance-2-0-mini".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
seedance_mini_generation_type | enum | Нет | Режим: image (если не передать), text или references. |
prompt | string | Да | Описание сцены и движения, от 3 до 20000 символов. В режиме references можно ссылаться на материалы: «как на изображении 1», «в темпе аудио 1». |
web_search | boolean | Нет | Только для text: разрешить нейросети поискать детали в интернете (например, как выглядит конкретное место). По умолчанию выключено. |
first_frame_url | string (url) | Нет | Исходная картинка. Обязательна в режиме image. Только http/https, форматы .jpg, .jpeg, .png, .webp, .bmp, .tiff, .tif, .gif. |
use_end_frame_image | boolean | Нет | Передайте true в режиме image, чтобы задать конечный кадр. |
last_frame_url | string (url) | Нет | Конечный кадр в режиме image. Работает только вместе с use_end_frame_image: true. Те же форматы. |
reference_image_urls | string[] (url) | Нет | До 9 референсных картинок для режима references. Те же форматы. |
reference_video_urls | string[] (url) | Нет | До 3 видео-референсов для режима references. Форматы .mp4, .mov. С видео-референсами секунда стоит дешевле. |
reference_audio_urls | string[] (url) | Нет | До 3 аудио-референсов для режима references. Форматы .wav, .mp3. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedance-2-0-mini",
"input": {
"seedance_mini_generation_type": "image",
"prompt": "Кот на фото потягивается, зевает и укладывается обратно, камера медленно наезжает",
"first_frame_url": "https://cdn.example.com/source-image-1.jpg",
"resolution": "720p",
"aspect_ratio": "adaptive",
"duration": 5
}
}'
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "image",
"prompt": "Кот на фото потягивается, зевает и укладывается обратно, камера медленно наезжает",
"first_frame_url": "https://cdn.example.com/source-image-1.jpg",
"resolution": "720p",
"aspect_ratio": "adaptive",
"duration": 5
}
}),
})
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "image",
"prompt": "Кот на фото потягивается, зевает и укладывается обратно, камера медленно наезжает",
"first_frame_url": "https://cdn.example.com/source-image-1.jpg",
"resolution": "720p",
"aspect_ratio": "adaptive",
"duration": 5
}
},
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "image",
"prompt": "Плавный переход: день сменяется ночью, зажигаются фонари",
"first_frame_url": "https://cdn.example.com/source-image-1.jpg",
"use_end_frame_image": true,
"last_frame_url": "https://cdn.example.com/source-image-2.jpg",
"resolution": "480p",
"duration": 6
}
}'
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "image",
"prompt": "Плавный переход: день сменяется ночью, зажигаются фонари",
"first_frame_url": "https://cdn.example.com/source-image-1.jpg",
"use_end_frame_image": true,
"last_frame_url": "https://cdn.example.com/source-image-2.jpg",
"resolution": "480p",
"duration": 6
}
}),
})
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "image",
"prompt": "Плавный переход: день сменяется ночью, зажигаются фонари",
"first_frame_url": "https://cdn.example.com/source-image-1.jpg",
"use_end_frame_image": True,
"last_frame_url": "https://cdn.example.com/source-image-2.jpg",
"resolution": "480p",
"duration": 6
}
},
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "text",
"prompt": "Поезд едет по мосту над горным ущельем в тумане, камера облетает состав, утренний свет",
"resolution": "480p",
"aspect_ratio": "16:9",
"duration": 5
}
}'
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "text",
"prompt": "Поезд едет по мосту над горным ущельем в тумане, камера облетает состав, утренний свет",
"resolution": "480p",
"aspect_ratio": "16:9",
"duration": 5
}
}),
})
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "text",
"prompt": "Поезд едет по мосту над горным ущельем в тумане, камера облетает состав, утренний свет",
"resolution": "480p",
"aspect_ratio": "16:9",
"duration": 5
}
},
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "references",
"prompt": "Персонаж с изображения 1 танцует так же, как человек на видео 1, в ритме аудио 1",
"reference_image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"reference_video_urls": [
"https://cdn.example.com/source-video-1.mp4",
"https://cdn.example.com/source-video-2.mp4"
],
"reference_audio_urls": [
"https://cdn.example.com/source-audio-1.mp3",
"https://cdn.example.com/source-audio-2.mp3"
],
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 8
}
}'
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "references",
"prompt": "Персонаж с изображения 1 танцует так же, как человек на видео 1, в ритме аудио 1",
"reference_image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"reference_video_urls": [
"https://cdn.example.com/source-video-1.mp4",
"https://cdn.example.com/source-video-2.mp4"
],
"reference_audio_urls": [
"https://cdn.example.com/source-audio-1.mp3",
"https://cdn.example.com/source-audio-2.mp3"
],
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 8
}
}),
})
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-2-0-mini",
"input": {
"seedance_mini_generation_type": "references",
"prompt": "Персонаж с изображения 1 танцует так же, как человек на видео 1, в ритме аудио 1",
"reference_image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"reference_video_urls": [
"https://cdn.example.com/source-video-1.mp4",
"https://cdn.example.com/source-video-2.mp4"
],
"reference_audio_urls": [
"https://cdn.example.com/source-audio-1.mp3",
"https://cdn.example.com/source-audio-2.mp3"
],
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 8
}
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "seedance-2-0-mini",
"cost": 40,
"balance_after": 495,
"created_at": "2026-09-17T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "seedance-2-0-mini",
"cost": 40,
"created_at": "2026-09-17T12:00:00Z",
"completed_at": "2026-09-17T12:03:10Z",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/seedance-2-0-mini/video-1.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "seedance-2-0-mini",
"cost": 40,
"created_at": "2026-09-17T12:00:00Z",
"completed_at": "2026-09-17T12:00:20Z",
"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()
Пока операция выполняется, status будет queued или processing. Опрашивайте статус раз в 5-10 секунд.
После успешного завершения result содержит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/seedance-2-0-mini/video-1.mp4"
]
}
type всегда равен "video".urls содержит одну ссылку на MP4.duration; ставка зависит от resolution и от того, есть ли в запросе видео-референсы:| Разрешение | Без видео-референсов | С видео-референсами |
|---|---|---|
480p | 8 ₽/сек | 5 ₽/сек |
720p | 15 ₽/сек | 10 ₽/сек |
720p, 5 секунд, режим image - 75 ₽; 480p, 8 секунд, режим references с видео - 40 ₽.cost ответа. Если операция завершилась с ошибкой, деньги возвращаются на баланс автоматически.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги.queued проверяйте статус по id.http/https ссылки, без localhost и приватных адресов. HEIC/HEIF принимаются только при загрузке через форму сайта, по URL в API - нет.references нужен хотя бы один референс любого типа; картинок - до 9, видео и аудио - до 3 каждого.duration: 3 вернёт validation_error.adaptive в aspect_ratio полезен для режимов с картинкой: ролик повторит пропорции исходника без обрезки.resolution | enum | Нет | Разрешение: 480p или 720p (если не передать). Влияет на цену. |
aspect_ratio | enum | Нет | Пропорции: 1:1, 4:3, 3:4, 16:9 (если не передать), 9:16, 21:9 или adaptive - подстроиться под исходные материалы. |
duration | number | Нет | Длительность в секундах, целое число от 4 до 15. Если не передать - 5. |