Создаёт 3D‑модель по 1-5 изображениям (с текстурами), а промпт можно оставить пустым - он сформируется по картинкам. Цена - 70 ₽ за одну генерацию.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Hyper3D Rodin v2 превращает фотографии предмета или персонажа в 3D-модель с текстурами. Достаточно одного снимка, а 2-5 ракурсов одного объекта помогают точнее восстановить стороны, которых не видно на главном фото. Результат - один файл в формате GLB, USDZ, FBX, OBJ или STL: для игрового движка, AR, 3D-печати или доработки в Blender.
Текстовое задание необязательно: если его не передать, описание составится по картинкам. Каждый вызов создаёт асинхронную операцию: сразу приходит её id, готовая модель забирается отдельным запросом через 1-4 минуты. Цена фиксированная - 70 ₽ за модель.
POST /api/v1/operationsAuthorization: Bearer brth_...id и статус queued. Результат забирается по id.Сценарии:
{
"tool": "hyper3d-rodin-v2",
"input": {
"input_image_urls": [
"https://cdn.example.com/figurine-front-1.jpg",
"https://cdn.example.com/figurine-back-1.jpg"
],
"quality_mesh_option": "500K Triangle",
"material": "All",
"geometry_file_format": "glb",
"use_advanced": false
}
}
tool - slug нейросети, всегда "hyper3d-rodin-v2".input - параметры запуска. Поля передаются прямо внутри input, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
input_image_urls | string[] (url) | Да | От 1 до 5 фото одного объекта. JPG, JPEG, PNG или WebP. Лучше всего подходят снимки на простом фоне, где объект целиком в кадре. |
prompt | string | Нет | Уточнение до 2000 символов: материал, стиль, что важно сохранить. Можно не передавать или передать пустую строку - описание составится по изображениям. |
quality_mesh_option | string | Да | Плотность и тип сетки: 4K Quad, 8K Quad, 18K Quad, 50K Quad, 2K Triangle, 20K Triangle, 150K Triangle, 500K Triangle. Число - количество граней. Quad даёт гладкую сетку из четырёхугольников, удобную для доработки, Triangle - детальную треугольную. |
material | string | Да | Материалы: PBR - реалистичные материалы для рендера и движков, Shaded - упрощённая текстура с запечённым светом, All - оба варианта. |
geometry_file_format | string | Да | Формат файла: glb, usdz, fbx, obj, stl. Для модели с текстурами берите glb или usdz, для 3D-печати - stl. |
use_advanced | boolean | Нет | true - применить дополнительные настройки use_original_alpha, preview_render и TAPose. При false они не учитываются, даже если переданы. |
use_original_alpha | boolean | Нет | Работает при use_advanced: true. Учитывать прозрачность исходных PNG: полезно, если объект уже вырезан из фона. |
preview_render | boolean | Нет | Работает при use_advanced: true. Просит модель сделать превью-рендер. В ответ API превью не входит, приходит только файл модели. |
TAPose | boolean | Нет | Работает при use_advanced: true. Поставить персонажа в T- или A-позу. Удобно, если модель потом будут риггить и анимировать. |
Минимальный запрос: одно фото, GLB с обоими вариантами материалов.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "hyper3d-rodin-v2",
"input": {
"input_image_urls": [
"https://cdn.example.com/figurine-front-1.jpg"
],
"quality_mesh_option": "500K Triangle",
"material": "All",
"geometry_file_format": "glb",
"use_advanced": 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: 'hyper3d-rodin-v2',
input: {
input_image_urls: ['https://cdn.example.com/figurine-front-1.jpg'],
quality_mesh_option: '500K Triangle',
material: 'All',
geometry_file_format: 'glb',
use_advanced: false,
},
}),
})
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': 'hyper3d-rodin-v2',
'input': {
'input_image_urls': ['https://cdn.example.com/figurine-front-1.jpg'],
'quality_mesh_option': '500K Triangle',
'material': 'All',
'geometry_file_format': 'glb',
'use_advanced': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Три ракурса одного персонажа, уточнение текстом, T-поза для риггинга и квадовая сетка. Исходники - PNG без фона, поэтому включена прозрачность. Результат - FBX.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "hyper3d-rodin-v2",
"input": {
"prompt": "Cartoon fox character in a green scarf, soft matte materials",
"input_image_urls": [
"https://cdn.example.com/fox-front-1.png",
"https://cdn.example.com/fox-side-1.png",
"https://cdn.example.com/fox-back-1.png"
],
"quality_mesh_option": "50K Quad",
"material": "PBR",
"geometry_file_format": "fbx",
"use_advanced": true,
"use_original_alpha": true,
"preview_render": false,
"TAPose": 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: 'hyper3d-rodin-v2',
input: {
prompt: 'Cartoon fox character in a green scarf, soft matte materials',
input_image_urls: [
'https://cdn.example.com/fox-front-1.png',
'https://cdn.example.com/fox-side-1.png',
'https://cdn.example.com/fox-back-1.png',
],
quality_mesh_option: '50K Quad',
material: 'PBR',
geometry_file_format: 'fbx',
use_advanced: true,
use_original_alpha: true,
preview_render: false,
TAPose: true,
},
}),
})
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': 'hyper3d-rodin-v2',
'input': {
'prompt': 'Cartoon fox character in a green scarf, soft matte materials',
'input_image_urls': [
'https://cdn.example.com/fox-front-1.png',
'https://cdn.example.com/fox-side-1.png',
'https://cdn.example.com/fox-back-1.png',
],
'quality_mesh_option': '50K Quad',
'material': 'PBR',
'geometry_file_format': 'fbx',
'use_advanced': True,
'use_original_alpha': True,
'preview_render': False,
'TAPose': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "hyper3d-rodin-v2",
"cost": 70,
"balance_after": 430,
"created_at": "2026-09-30T21:31:26.045691+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "hyper3d-rodin-v2",
"cost": 70,
"created_at": "2026-09-30T21:31:26.045691+00:00",
"completed_at": "2026-09-30T21:32:48.56755+00:00",
"result": {
"type": "file",
"files": [
{
"url": "https://storage.bratuha.ru/results/hyper3d-rodin-v2/figurine-front-1.glb",
"name": "result"
}
]
},
"error_message": null
}
Если модель временно недоступна или не смогла обработать запрос, операция завершается статусом failed, result равен null, а причина лежит в error_message:
{
"id": "op_uuid-123",
"status": "failed",
"tool": "hyper3d-rodin-v2",
"cost": 70,
"created_at": "2026-09-30T21:31:26.045691+00:00",
"completed_at": "2026-09-30T21:31:40.118204+00:00",
"result": null,
"error_message": "Произошла ошибка, сервис временно недоступен. Попробуйте повторить запрос позже."
}
Сохраните id из ответа на создание и проверяйте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForModel(id) {
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.files[0].url
if (op.status === 'failed') throw new Error(op.error_message)
await new Promise((r) => setTimeout(r, 10000))
}
}
Статус одной операции можно запрашивать не чаще раза в секунду, иначе придёт 429 rate_limit_exceeded. Модель строится минуты, поэтому хватает опроса раз в 10-15 секунд.
После завершения в result приходит один файл модели:
{
"type": "file",
"files": [
{
"url": "https://storage.bratuha.ru/results/hyper3d-rodin-v2/figurine-front-1.glb",
"name": "result"
}
]
}
type - всегда "file".files - массив из одного элемента. url - ссылка на файл модели, name - служебное имя "result". Расширение совпадает с geometry_file_format: .glb, .usdz, .fbx, .obj или .stl.20K Triangle файл весит около 4 МБ, с 500K Triangle - заметно больше.glb или usdz, а obj и stl используйте для геометрии.Скачайте файл к себе после завершения операции, если он нужен надолго.
Цена фиксированная - 70 ₽ за одну модель.
| Что меняется | Влияет на цену |
|---|---|
| Число фото (1-5) | Нет |
prompt | Нет |
quality_mesh_option | Нет |
material и geometry_file_format | Нет |
Дополнительные настройки (use_advanced и остальные) | Нет |
Сумма списывается при создании операции и приходит в поле cost, остаток баланса - в balance_after. Если операция завершилась ошибкой, деньги возвращаются на баланс, а cost в ответе остаётся суммой запуска.
POST /api/v1/operations не идемпотентен: каждый запрос создаёт новую операцию и списывает деньги. Если ответ не дошёл из-за обрыва сети, не повторяйте запрос автоматически - сначала проверьте баланс или историю в аккаунте.queued, дальше статус проверяется по id. Обычно модель готова через 1,5-4 минуты.http/https. Адреса localhost, loopback и частные IP не принимаются. Ссылка должна открываться без авторизации и cookies, файл - до 128 МБ..jpg, .jpeg, .png, .webp, иначе API сразу вернёт 400 validation_error и деньги не спишутся. Больше 5 фото передать нельзя.input_image_urls должны показывать один и тот же объект с разных сторон. Разные предметы на разных фото смешаются в одну модель.use_advanced: true и use_original_alpha: true.prompt описывает внешний вид модели. Просьбы вроде «оживи картинку» или «пусть двигается» модель не выполняет - анимации в результате нет.hyper3d-rodin-v2-5).