Заменяет лицо на фото, перенося его с другого изображения и стараясь сохранить естественное освещение и выражение. Цена - 2 рубля за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Этот инструмент меняет лицо на фотографии по двум входным изображениям: на одном фото находится сцена, которую нужно изменить, а на втором - лицо, которое нужно перенести. Обычно его используют для быстрых креативов, мемов, тестовых визуализаций и аккуратной подмены лица без ручного монтажа.
Типичный сценарий здесь один: вы передаёте исходное фото, куда нужно вставить лицо, и отдельное фото с лицом-источником. Каждый вызов создаёт асинхронную операцию, поэтому после запуска нужно сохранить id и отдельно проверять статус.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус.{
"tool": "face-swap",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь это всегда "face-swap".input - параметры конкретного запуска.input, без дополнительного input.input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
input_image | string (url) | Да | Внешний URL исходного фото, на котором нужно заменить лицо. Разрешены только http/https ссылки. Допустимые расширения для Public API: .jpg, .jpeg, .png, .webp. |
swap_image | string (url) | Да | Внешний URL фото с лицом-источником, которое нужно перенести на исходное изображение. Разрешены только http/https ссылки. Допустимые расширения для Public API: .jpg, .jpeg, .png, .webp. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "face-swap",
"input": {
"input_image": "https://cdn.example.com/target-photo-1.jpg",
"swap_image": "https://cdn.example.com/source-face-1.jpg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'face-swap',
input: {
input_image: 'https://cdn.example.com/target-photo-1.jpg',
swap_image: 'https://cdn.example.com/source-face-1.jpg',
},
}),
})
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': 'face-swap',
'input': {
'input_image': 'https://cdn.example.com/target-photo-1.jpg',
'swap_image': 'https://cdn.example.com/source-face-1.jpg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "face-swap",
"cost": 2,
"balance_after": 495,
"created_at": "2026-03-15T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "face-swap",
"cost": 2,
"created_at": "2026-03-15T12:00:00Z",
"completed_at": "2026-03-15T12:00:18Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/face-swap/image-1.png"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "face-swap",
"cost": 2,
"created_at": "2026-03-15T12:00:00Z",
"completed_at": "2026-03-15T13:00:00Z",
"result": null,
"error_message": "Превышено время ожидания (60 мин). Нейросеть временно недоступна."
}
После создания операции сохраните 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": "image",
"urls": [
"https://storage.bratuha.ru/results/face-swap/image-1.png"
]
}
type всегда равен "image".urls содержит ссылки на готовые изображения.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию.id.input_image и swap_image нужны внешние http/https URL. Локальные адреса, localhost и private IP не поддерживаются..jpg, .jpeg, .png, .webp.HEIC/HEIF, которые могут поддерживаться в UI-загрузке, для Public API по URL не подходят.swap_image хорошо видно, не перекрыто волосами, руками, маской или очками с сильными бликами.