Примеряет одежду с фото товара на фотографии человека и показывает, как вещь может смотреться в жизни. Цена - 12 ₽ за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Нейросеть примеряет вещь с фото товара на фотографию человека. На вход нужны две картинки: снимок человека и снимок одежды, на выходе - одно изображение того же человека уже в этой вещи. Подходит для карточек маркетплейса, виртуальной примерочной в интернет-магазине и быстрых проверок, как товар смотрится на модели, без отдельной фотосъёмки.
Сценарий один: человек + одежда. Текстового задания нет, модель сама определяет, какую часть образа заменить.
Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус операции, пока она не завершится.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.{
"tool": "google-virtual-try-on",
"input": {
"person_image_url": "https://cdn.example.com/person.jpg",
"product_image_url": "https://cdn.example.com/dress.png"
}
}
tool - slug нейросети, всегда "google-virtual-try-on".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
person_image_url | string (url) | Да | Ссылка на фото человека, на которого примеряют вещь. Одна картинка. Форматы: jpg, jpeg, png, webp. |
product_image_url | string (url) | Да | Ссылка на фото одежды или товара. Одна картинка. Форматы: jpg, jpeg, png, webp. |
Обе ссылки должны быть внешними http/https URL, доступными без авторизации. Расширение в ссылке должно совпадать с одним из допустимых форматов, иначе API вернёт validation_error.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "google-virtual-try-on",
"input": {
"person_image_url": "https://cdn.example.com/person.jpg",
"product_image_url": "https://cdn.example.com/dress.png"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'google-virtual-try-on',
input: {
person_image_url: 'https://cdn.example.com/person.jpg',
product_image_url: 'https://cdn.example.com/dress.png',
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'google-virtual-try-on',
'input': {
'person_image_url': 'https://cdn.example.com/person.jpg',
'product_image_url': 'https://cdn.example.com/dress.png',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "google-virtual-try-on",
"cost": 12,
"balance_after": 488,
"created_at": "2026-09-30T12:45:54.724309+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "google-virtual-try-on",
"cost": 12,
"created_at": "2026-09-30T12:45:54.724309+00:00",
"completed_at": "2026-09-30T12:46:18.810169+00:00",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/google-virtual-try-on/try-on-1.png"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "google-virtual-try-on",
"cost": 12,
"created_at": "2026-09-30T12:45:54.724309+00:00",
"completed_at": "2026-09-30T12:46:10.000000+00:00",
"result": null,
"error_message": "Не удалось создать пример с выбранным человеком и товаром. Пожалуйста, попробуйте загрузить другие изображения."
}
Сохраните id из ответа на создание и запрашивайте операцию, пока status не станет completed или failed:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForOperation(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' || op.status === 'failed') return op
await new Promise((resolve) => setTimeout(resolve, 5000))
}
}
Обычно примерка готова за 15-30 секунд. Опрашивать одну операцию можно не чаще раза в секунду, иначе API ответит 429.
После завершения в поле result приходит одно изображение:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/google-virtual-try-on/try-on-1.png"
]
}
type - всегда "image".urls - массив ссылок на готовые изображения. Для этой нейросети в нём одна ссылка на PNG.Результат - фото того же человека в новой вещи, поза и фон сохраняются. Размер картинки близок к исходному фото человека, в пробном запуске получилось 1792×2400.
Если операция завершилась с ошибкой, result будет null, а причина придёт в error_message.
Цена фиксированная: 12 ₽ за одну примерку. Она не зависит от размера и формата картинок. Сумма списывается при создании операции и видна в поле cost. Если операция завершилась ошибкой, деньги возвращаются на баланс, а cost в ответе остаётся суммой запуска.
| Что запускаете | Цена |
|---|---|
| Одна примерка (человек + одежда) | 12 ₽ |
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги заново.queued, результат забираете по id.http/https URL с расширениями jpg, jpeg, png, webp. Локальные адреса и приватные сети не принимаются.