Улучшает качество фото в одном из режимов: восстановление старых снимков, повышение резкости, шумоподавление или исправление света и цвета. Цена - 25 ₽ за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Topaz Image чинит качество фото без увеличения: убирает пыль и царапины со старых снимков, возвращает резкость смазанным кадрам, чистит шум и исправляет свет и цвет. Размер картинки не меняется - в нашей проверке фото 1600×1200 вернулось тоже 1600×1200, но заметно чётче.
Модель работает в четырёх режимах, режим выбирается параметром generation_type. В каждом режиме есть своя модель обработки, её передают в отдельном поле.
Каждый вызов создаёт асинхронную операцию. После запуска нужно отдельно проверять статус по id.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус операции.Режимы (generation_type):
restore - восстановление: пыль, царапины и мелкие дефекты на сканах и старых фото. Модель выбирается в restore_model.sharpen - резкость: смаз от движения, промах фокуса, общая нерезкость. Модель выбирается в sharpen_model.denoise - шумоподавление: цифровой шум, зерно, снимки в темноте. Модель выбирается в denoise_model.lighting - свет и цвет: экспозиция, контраст, баланс белого, раскрашивание чёрно-белых фото. Модель выбирается в lighting_model.{
"tool": "topaz-image",
"input": {
"generation_type": "restore",
"image": "https://cdn.example.com/source-image-1.jpg",
"restore_model": "Dust-Scratch V2",
"output_format": "jpeg"
}
}
tool - slug нейросети, всегда "topaz-image".input - параметры запуска. Поля передаются напрямую внутри этого объекта, без дополнительной вложенности.generation_type: "sharpen" нужен sharpen_model, при denoise - denoise_model и так далее. Поля моделей других режимов не используются, их лучше не передавать: неверное значение в любом из них всё равно вернёт validation_error.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_type | enum | Да | Режим обработки. Варианты: restore - восстановление, sharpen - резкость, denoise - шумоподавление, lighting - свет и цвет. |
image | string (url) | Да | Ссылка на фото, которое нужно обработать. Одна ссылка, только внешний http/https URL. Допустимые расширения: .png, .jpg, .jpeg. |
restore_model | enum | Да, при generation_type: "restore" | Модель восстановления. Вариант один: Dust-Scratch V2 - убирает пыль, царапины и мелкие дефекты со сканов и старых фото и бережно сохраняет детали. |
sharpen_model | enum | Да, при generation_type: "sharpen" | Модель резкости. Standard и Natural - для обычной нерезкости, Strong - для очень мягких снимков, Lens Blur V2 - если промахнулся фокус, Motion Blur - смаз от движения камеры или объекта, Refocus - лёгкая нерезкость, Portrait - лица, Wildlife - шерсть и перья животных. |
denoise_model | enum | Да, при generation_type: "denoise" | Модель шумоподавления. Normal - сбалансированная очистка, Strong - более сильная, Extreme - для очень шумных и испорченных снимков. |
lighting_model | enum | Да, при generation_type: "lighting" | Модель света и цвета. Adjust V2 - исправляет экспозицию и контраст, White Balance - баланс белого и оттенок, Colorize - раскрашивает чёрно-белое фото. |
output_format | enum | Да | Формат результата: jpeg или png. PNG тяжелее, но без потерь сжатия. |
Если поле модели для выбранного режима не передать, подставится первая модель режима: Dust-Scratch V2, Standard, Normal или Adjust V2. Если не передать output_format, результат придёт в jpeg. Надёжнее всегда указывать эти поля явно.
restore)curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "topaz-image",
"input": {
"generation_type": "restore",
"image": "https://cdn.example.com/old-photo-scan.jpg",
"restore_model": "Dust-Scratch V2",
"output_format": "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: 'topaz-image',
input: {
generation_type: 'restore',
image: 'https://cdn.example.com/old-photo-scan.jpg',
restore_model: 'Dust-Scratch V2',
output_format: 'png',
},
}),
})
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': 'topaz-image',
'input': {
'generation_type': 'restore',
'image': 'https://cdn.example.com/old-photo-scan.jpg',
'restore_model': 'Dust-Scratch V2',
'output_format': 'png',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
sharpen)curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "topaz-image",
"input": {
"generation_type": "sharpen",
"image": "https://cdn.example.com/blurry-photo.jpg",
"sharpen_model": "Motion Blur",
"output_format": "jpeg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'topaz-image',
input: {
generation_type: 'sharpen',
image: 'https://cdn.example.com/blurry-photo.jpg',
sharpen_model: 'Motion Blur',
output_format: 'jpeg',
},
}),
})
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': 'topaz-image',
'input': {
'generation_type': 'sharpen',
'image': 'https://cdn.example.com/blurry-photo.jpg',
'sharpen_model': 'Motion Blur',
'output_format': 'jpeg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
denoise)curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "topaz-image",
"input": {
"generation_type": "denoise",
"image": "https://cdn.example.com/night-photo.jpg",
"denoise_model": "Strong",
"output_format": "jpeg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'topaz-image',
input: {
generation_type: 'denoise',
image: 'https://cdn.example.com/night-photo.jpg',
denoise_model: 'Strong',
output_format: 'jpeg',
},
}),
})
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': 'topaz-image',
'input': {
'generation_type': 'denoise',
'image': 'https://cdn.example.com/night-photo.jpg',
'denoise_model': 'Strong',
'output_format': 'jpeg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
lighting)В примере чёрно-белое фото раскрашивается моделью Colorize. Для правки экспозиции используйте Adjust V2, для баланса белого - White Balance.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "topaz-image",
"input": {
"generation_type": "lighting",
"image": "https://cdn.example.com/black-and-white.png",
"lighting_model": "Colorize",
"output_format": "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: 'topaz-image',
input: {
generation_type: 'lighting',
image: 'https://cdn.example.com/black-and-white.png',
lighting_model: 'Colorize',
output_format: 'png',
},
}),
})
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': 'topaz-image',
'input': {
'generation_type': 'lighting',
'image': 'https://cdn.example.com/black-and-white.png',
'lighting_model': 'Colorize',
'output_format': 'png',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "topaz-image",
"cost": 25,
"balance_after": 475,
"created_at": "2026-09-30T12:46:50Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "topaz-image",
"cost": 25,
"created_at": "2026-09-30T12:46:50Z",
"completed_at": "2026-09-30T12:47:36Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/topaz-image/image-1.jpeg"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "topaz-image",
"cost": 25,
"created_at": "2026-09-30T12:46:50Z",
"completed_at": "2026-09-30T12:46:52Z",
"result": null,
"error_message": "Проверьте правильность введённых данных и попробуйте снова."
}
После создания операции сохраните id и проверяйте статус запросом:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const res = await fetch('https://bratuha.ru/api/v1/operations/op_uuid-123', {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await res.json()
if (operation.status === 'completed') {
console.log(operation.result.urls[0])
} else if (operation.status === 'failed') {
console.error(operation.error_message)
}
Резкость, шумоподавление и свет обычно готовы примерно за минуту, восстановление старых фото занимает дольше - в среднем 2-3 минуты. Опрашивайте статус раз в 5 секунд (не чаще раза в секунду для одной операции), пока он не станет completed или failed.
После завершения Topaz Image возвращает:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/topaz-image/image-1.jpeg"
]
}
type - всегда "image".urls - массив из одной ссылки на обработанное фото.Размер результата совпадает с исходником, формат - тот, что указан в output_format. Если фото нужно ещё и увеличить, прогоните результат через Topaz Image Upscale.
Цена фиксированная - 25 ₽ за изображение. Она одинакова для всех режимов, моделей и форматов и не зависит от размера фото.
| Режим | Цена |
|---|---|
restore | 25 ₽ |
sharpen | 25 ₽ |
denoise | 25 ₽ |
lighting | 25 ₽ |
Стоимость списывается при создании операции и возвращается в поле cost.
POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и снова списывает деньги.queued, затем проверяете статус по id.image принимает только внешние http/https ссылки с расширениями .png, .jpg, .jpeg. WebP и другие форматы здесь не принимаются - переведите файл в JPG или PNG. Ссылки на localhost и внутренние адреса сети тоже не принимаются."Lens Blur V2", а не "lens-blur-v2". Незнакомое значение вернёт ошибку validation_error.image второй.Colorize угадывает цвета по смыслу кадра и может ошибиться с цветом одежды или предметов. Для документальных и семейных архивов проверяйте результат глазами.