Создаёт изображения по текстовому описанию и меняет загруженные картинки по инструкции, можно опереться на 1–5 референсов. Цена — 4 ₽ за изображение 1K или 2K, 5 ₽ за 4K.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Hunyuan Image 3.5 рисует изображения по текстовому заданию и меняет готовые картинки по инструкции, опираясь на 1-5 референсов. Через API её удобно запускать для:
Режим определяется составом запроса: без image_urls - генерация по тексту, со ссылками - работа по референсам. Пропорции и разрешение задаются в обоих режимах. Каждый вызов создаёт асинхронную операцию: в ответ сразу приходят id и стартовый статус, а ссылку на готовую картинку вы забираете запросом проверки статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id, стартовый статус и стоимость.Сценарии:
prompt, size, resolution;prompt и одна ссылка в image_urls;prompt и 2-5 ссылок в image_urls.Базовая форма запроса:
{
"tool": "hunyuan-image-3-5",
"input": {
"...": "..."
}
}
tool - slug нейросети, для этой модели всегда "hunyuan-image-3-5".input - параметры запуска. Поля передаются прямо внутри input, без дополнительной вложенности.image_urls добавляйте только когда есть референсы.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Описание картинки или инструкция, что изменить. От 3 до 10000 символов. С несколькими изображениями прямо напишите, что взять с каждого: «человек с первого изображения, интерьер со второго». |
image_urls | string[] (url) | Нет | Референсы, до 5 ссылок. Только внешние http/https URL. Расширения: .jpg, .jpeg, .png, .webp. Без этого поля запускается генерация по тексту. |
size | enum | Нет | Соотношение сторон: auto, 1:1, 16:9, 9:16, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 21:9. auto - модель подберёт пропорции по заданию. Если не передать, используется auto. |
resolution | enum | Нет | Разрешение: 1K (короткая сторона до 1024 px), 2K (до 2048 px) или 4K (больше 2048 px). Если не передать, используется 2K. Влияет на цену. |
use_negative_prompt | boolean | Нет | true - учитывать negative_prompt. Без этого флага negative_prompt не отправляется в модель. |
negative_prompt | string | Нет | Что не должно появиться на изображении: «размытие, надписи, водяные знаки». До 2000 символов. Работает только вместе с use_negative_prompt = true. |
Нужна только текстовая подсказка, пропорции и разрешение.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "hunyuan-image-3-5",
"input": {
"prompt": "Минималистичный туристический постер приморского города на закате, тёплые цвета, крупная надпись «ЛЕТО У МОРЯ» сверху",
"size": "2:3",
"resolution": "2K"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'hunyuan-image-3-5',
input: {
prompt:
'Минималистичный туристический постер приморского города на закате, тёплые цвета, крупная надпись «ЛЕТО У МОРЯ» сверху',
size: '2:3',
resolution: '2K',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "hunyuan-image-3-5",
"input": {
"prompt": "Минималистичный туристический постер приморского города на закате, тёплые цвета, крупная надпись «ЛЕТО У МОРЯ» сверху",
"size": "2:3",
"resolution": "2K",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Передайте одну ссылку в image_urls и опишите, что изменить и что оставить как есть. Пример с негативным промптом и разрешением 4K.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "hunyuan-image-3-5",
"input": {
"prompt": "Та же женщина с фото, черты лица не меняй. Она стоит у окна в светлом платье с букетом пионов, мягкий утренний свет, портрет по пояс",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg"
],
"size": "9:16",
"resolution": "4K",
"use_negative_prompt": true,
"negative_prompt": "размытие, надписи, лишние пальцы"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'hunyuan-image-3-5',
input: {
prompt:
'Та же женщина с фото, черты лица не меняй. Она стоит у окна в светлом платье с букетом пионов, мягкий утренний свет, портрет по пояс',
image_urls: ['https://cdn.example.com/source-image-1.jpg'],
size: '9:16',
resolution: '4K',
use_negative_prompt: true,
negative_prompt: 'размытие, надписи, лишние пальцы',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "hunyuan-image-3-5",
"input": {
"prompt": "Та же женщина с фото, черты лица не меняй. Она стоит у окна в светлом платье с букетом пионов, мягкий утренний свет, портрет по пояс",
"image_urls": ["https://cdn.example.com/source-image-1.jpg"],
"size": "9:16",
"resolution": "4K",
"use_negative_prompt": True,
"negative_prompt": "размытие, надписи, лишние пальцы",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Передайте от 2 до 5 ссылок. Главный исходник ставьте первым и в prompt объясните, что взять с каждой картинки.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "hunyuan-image-3-5",
"input": {
"prompt": "Мужчина с первого изображения сидит в кресле со второго изображения в уютной гостиной, вечерний свет торшера, лицо и одежду мужчины сохрани",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.png"
],
"size": "4:5",
"resolution": "2K"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'hunyuan-image-3-5',
input: {
prompt:
'Мужчина с первого изображения сидит в кресле со второго изображения в уютной гостиной, вечерний свет торшера, лицо и одежду мужчины сохрани',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.png',
],
size: '4:5',
resolution: '2K',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "hunyuan-image-3-5",
"input": {
"prompt": "Мужчина с первого изображения сидит в кресле со второго изображения в уютной гостиной, вечерний свет торшера, лицо и одежду мужчины сохрани",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.png",
],
"size": "4:5",
"resolution": "2K",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "7c1e4b92-5a3d-4f08-b6e2-9d4a1c8f2e57",
"status": "queued",
"tool": "hunyuan-image-3-5",
"cost": 4,
"balance_after": 496,
"created_at": "2026-10-22T08:00:00.000Z"
}
{
"id": "7c1e4b92-5a3d-4f08-b6e2-9d4a1c8f2e57",
"status": "completed",
"tool": "hunyuan-image-3-5",
"cost": 4,
"created_at": "2026-10-22T08:00:00.000Z",
"completed_at": "2026-10-22T08:00:52.000Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/hunyuan-image-3-5/image-1.png"
]
},
"error_message": null
}
{
"id": "7c1e4b92-5a3d-4f08-b6e2-9d4a1c8f2e57",
"status": "failed",
"tool": "hunyuan-image-3-5",
"cost": 4,
"created_at": "2026-10-22T08:00:00.000Z",
"completed_at": "2026-10-22T08:00:20.000Z",
"result": null,
"error_message": "Не удалось выполнить операцию"
}
Статус проверяется по id, который пришёл в ответ на создание операции. Сохраните его - без id результат конкретного запуска не получить. Опрашивать удобно раз в 3-5 секунд, пока статус не станет completed или failed.
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/7c1e4b92-5a3d-4f08-b6e2-9d4a1c8f2e57
const operationId = '7c1e4b92-5a3d-4f08-b6e2-9d4a1c8f2e57'
const response = await fetch(
`https://bratuha.ru/api/v1/operations/${operationId}`,
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const operation = await response.json()
console.log(operation)
После успешного выполнения в result приходит объект изображения:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/hunyuan-image-3-5/image-1.png"
]
}
urls - массив ссылок. Один запуск создаёт одно изображение, поэтому ссылка в массиве одна.
Цена зависит только от разрешения. Пропорции, число референсов и негативный промпт цену не меняют.
| Разрешение | Цена |
|---|---|
1K | 4 ₽ |
2K | 4 ₽ |
4K | 5 ₽ |
Примеры:
resolution = 2K - 4 ₽;image_urls, resolution = 4K - 5 ₽;image_urls, resolution = 1K - 4 ₽.POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и снова списывает стоимость.POST нет, используйте GET /api/v1/operations/{id}.image_urls нужны внешние http/https URL, доступные из интернета. Локальные пути, localhost, blob: и data: не подходят.image_urls. Подходят .jpg, .jpeg, .png и .webp, лучше до 7 МБ на файл.