Удаляет фон на видео, чтобы вы могли заменить его на другой цвет, картинку или ролик. Цена: Обычная - 5 ₽/сек, Fast - 2 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
VEED Удалитель фона вырезает человека или предмет из видео и убирает всё вокруг. Результат можно положить поверх другой картинки или ролика: сделать говорящую голову для презентации, поставить блогера на фон студии, собрать рекламный ролик из нескольких съёмок.
Есть три режима:
standard - основной режим для обычных съёмок, самые аккуратные края;fast - в 2,5 раза дешевле, подходит для черновиков и простых сцен;green_screen - для роликов, снятых на зелёном фоне (хромакей), дополнительно убирает зелёные отсветы на объекте.Прежде чем встраивать нейросеть, прочитайте раздел «Формат результата»: прозрачность по умолчанию приходит в WebM, а его понимают не все редакторы. Вызов создаёт асинхронную операцию: сразу приходит id, готовое видео забирается проверкой статуса. Пятисекундный ролик обрабатывается примерно за полминуты.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим выбирается полем model_variant: standard, fast или green_screen. От режима зависит цена за секунду и набор дополнительных настроек.
{
"tool": "veed-video-background-removal",
"input": {
"model_variant": "standard",
"video_url": "https://cdn.example.com/source-video-1.mp4"
}
}
tool - slug нейросети, всегда "veed-video-background-removal".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.Дополнительные настройки (output_codec, refine_foreground_edges, subject_is_person, spill_suppression_strength) передавайте вместе с use_advanced: true.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
model_variant | enum | Да | Режим: standard - обычная обработка; fast - быстрее и дешевле, края чуть грубее; green_screen - для съёмки на зелёном фоне. Если поле не передать, будет standard. |
video_url | string (url) | Да | Ссылка на исходное видео. Один файл, внешний http/https URL с расширением .mp4, .mov или .webm. Длительность от 1 секунды до 10 минут (600 секунд), файл до 128 МБ, ссылка должна открываться без авторизации. |
use_advanced | boolean | Нет | Включает дополнительные настройки ниже. Без него действуют значения по умолчанию: WebM с прозрачностью, улучшение краёв включено, в кадре человек. |
output_codec | enum | Нет | Формат результата, при use_advanced: true. vp9 - один WebM с прозрачным фоном; h264 - два MP4: цветное видео и чёрно-белая маска. Подробнее - в «Формате результата». Если поле не передать, будет vp9. |
refine_foreground_edges | boolean | Нет | Дополнительно уточнять края объекта (волосы, пальцы, контур одежды). Только в режимах standard и fast, при use_advanced: true. По умолчанию true. |
subject_is_person | boolean | Нет | В кадре человек. Передайте false, если вырезаете предмет, товар или животное. Только в режимах standard и fast, при use_advanced: true. По умолчанию true. |
spill_suppression_strength | number | Нет | Сила подавления зелёных отсветов, от 0 до 1. Увеличьте, если на объекте остаются зелёные пятна; уменьшите, если меняется его цвет. Только в режиме green_screen, при use_advanced: true. По умолчанию . |
Длительность вы не передаёте: сервер сам определяет её по файлу и по ней считает цену.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "veed-video-background-removal",
"input": {
"model_variant": "standard",
"video_url": "https://cdn.example.com/source-video-1.mp4"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'veed-video-background-removal',
input: {
model_variant: 'standard',
video_url: 'https://cdn.example.com/source-video-1.mp4',
},
}),
})
const operation = await response.json()
console.log(operation.id, operation.cost)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'veed-video-background-removal',
'input': {
'model_variant': 'standard',
'video_url': 'https://cdn.example.com/source-video-1.mp4',
},
},
timeout=60,
)
print(response.status_code)
print(response.json())
Товар на столе, два MP4 для монтажа: цветное видео и маска.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "veed-video-background-removal",
"input": {
"model_variant": "fast",
"video_url": "https://cdn.example.com/product-video-1.mov",
"use_advanced": true,
"output_codec": "h264",
"refine_foreground_edges": true,
"subject_is_person": 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: 'veed-video-background-removal',
input: {
model_variant: 'fast',
video_url: 'https://cdn.example.com/product-video-1.mov',
use_advanced: true,
output_codec: 'h264',
refine_foreground_edges: true,
subject_is_person: false,
},
}),
})
const operation = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'veed-video-background-removal',
'input': {
'model_variant': 'fast',
'video_url': 'https://cdn.example.com/product-video-1.mov',
'use_advanced': True,
'output_codec': 'h264',
'refine_foreground_edges': True,
'subject_is_person': False,
},
},
timeout=60,
)
print(response.json())
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "veed-video-background-removal",
"input": {
"model_variant": "green_screen",
"video_url": "https://cdn.example.com/greenscreen-video-1.mp4",
"use_advanced": true,
"output_codec": "vp9",
"spill_suppression_strength": 0.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: 'veed-video-background-removal',
input: {
model_variant: 'green_screen',
video_url: 'https://cdn.example.com/greenscreen-video-1.mp4',
use_advanced: true,
output_codec: 'vp9',
spill_suppression_strength: 0.6,
},
}),
})
const operation = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'veed-video-background-removal',
'input': {
'model_variant': 'green_screen',
'video_url': 'https://cdn.example.com/greenscreen-video-1.mp4',
'use_advanced': True,
'output_codec': 'vp9',
'spill_suppression_strength': 0.6,
},
},
timeout=60,
)
print(response.json())
Для ролика длиной 5 секунд в режиме fast:
{
"id": "op_uuid-123",
"status": "queued",
"tool": "veed-video-background-removal",
"cost": 10,
"balance_after": 490,
"created_at": "2026-09-30T21:33:41.456248+00:00"
}
С output_codec: "vp9" (по умолчанию):
{
"id": "op_uuid-123",
"status": "completed",
"tool": "veed-video-background-removal",
"cost": 10,
"created_at": "2026-09-30T21:33:41.456248+00:00",
"completed_at": "2026-09-30T21:34:07.767331+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/veed-video-background-removal/video-1.webm"
]
},
"error_message": null
}
С output_codec: "h264" в urls будут две ссылки:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/veed-video-background-removal/video-1.mp4",
"https://storage.bratuha.ru/results/veed-video-background-removal/video-2.mp4"
]
}
Пока видео обрабатывается, status будет queued или processing, а result - null. При ошибке придёт status: "failed", result: null и текст причины в error_message, деньги вернутся на баланс.
Сохраните id из ответа на создание и запрашивайте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
Пример ожидания результата на JavaScript / TypeScript:
async function waitForVideo(id: string) {
while (true) {
const res = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const op = await res.json()
if (op.status === 'completed') return op.result.urls
if (op.status === 'failed') throw new Error(op.error_message)
await new Promise((r) => setTimeout(r, 10000))
}
}
Одну операцию можно опрашивать не чаще раза в секунду, иначе придёт 429. Для видео хватит запроса раз в 10 секунд.
type - всегда "video". Размер кадра, длительность и частота кадров совпадают с исходником. Что лежит в urls, зависит от output_codec.
vp9 (по умолчанию) - одна ссылка на WebM с кодеком VP9 и настоящим альфа-каналом: пиксели фона прозрачные. Такой файл удобен для веба, но его прозрачность понимают не все программы:
<video> показывает прозрачность, но под видео видна страница - на тёмной теме фон выглядит чёрным;-c:v libvpx-vp9 перед -i.Если результат нужен в CapCut или другом редакторе без поддержки прозрачного WebM, проще всего подложить зелёный фон и убрать его там хромакеем:
ffmpeg -c:v libvpx-vp9 -i result.webm \
-filter_complex "[0:v]split[a][b];[a]drawbox=c=0x00FF00:t=fill[bg];[bg][b]overlay=format=auto,format=yuv420p" \
-c:v libx264 -c:a copy result-green.mp4
h264 - две ссылки на MP4 (H.264) без прозрачности: первая - цветное видео объекта, вторая - чёрно-белая маска, где белое - объект, чёрное - фон. Этот вариант лучше передаёт цвет и открывается в любом редакторе. В монтажной программе положите маску над цветным видео и назначьте её подложкой-маской (Track Matte / Luma Matte) - фон станет прозрачным.
Цена считается за каждую секунду видео и зависит от model_variant. Длительность берётся из самого файла в целых секундах с округлением вверх. Дополнительные настройки и формат результата на цену не влияют. Сумма списывается при создании операции и приходит в поле cost.
model_variant | За секунду | 5 секунд | 1 минута | 10 минут (максимум) |
|---|---|---|---|---|
standard | 5 ₽ | 25 ₽ | 300 ₽ | 3 000 ₽ |
fast | 2 ₽ | 10 ₽ | 120 ₽ | 1 200 ₽ |
green_screen | 5 ₽ | 25 ₽ | 300 ₽ | 3 000 ₽ |
Если model_variant не передан, считается по standard.
POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и списывает деньги ещё раз. Если ответ на POST потерялся, не повторяйте его вслепую.queued, результат забирайте через GET /api/v1/operations/{id}.video_url принимаются только внешние http/https ссылки на .mp4, .mov или .webm, доступные без авторизации. Ссылки на localhost и внутренние адреса отклоняются.400 validation_error, операция не создастся и деньги не спишутся.use_advanced: true, иначе выключатели refine_foreground_edges и subject_is_person останутся включёнными.refine_foreground_edges и subject_is_person в режиме green_screen не используются, а spill_suppression_strength работает только в нём.fast оставляет по краю объекта заметную кайму от старого фона. Для финального ролика берите standard, для проб и превью - fast.h264 или перекрашивайте фон в зелёный по рецепту выше: прозрачный WebM там превратится в чёрный фон.0.8