Увеличивает разрешение изображения и аккуратно добавляет детали, чтобы картинка выглядела чётче и “чище”. Цена зависит от целевого разрешения: 1-4 МП - 10 ₽, 5-8 МП - 20 ₽, 9-16 МП - 40 ₽, 17-25 МП - 80 ₽, 26-50 МП - 160 ₽, 51-100 МП - 320 ₽, 101-200 МП - 640 ₽ за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Clarity AI Crystal Upscaler увеличивает изображение до нужного числа мегапикселей и аккуратно добавляет детали, чтобы картинка выглядела чистой и резкой. Модель бережно обращается с исходником и почти не меняет лица и форму предметов. Подходит для фото с телефона, портретов, товарных снимков и подготовки картинок к печати.
Вместо коэффициента «2x» или «4x» вы задаёте итоговый размер в мегапикселях - от 1 до 200. Модель сама подбирает масштаб: в нашей проверке фото 640×480 при target_megapixels: 4 превратилось в 2308×1732, то есть ровно в 4 МП с теми же пропорциями.
Каждый вызов создаёт асинхронную операцию. После запуска нужно отдельно проверять статус по id.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус операции.Режимов у модели нет: запрос всегда состоит из ссылки на изображение, креативности и целевого размера.
{
"tool": "clarity-crystal-upscaler",
"input": {
"image": "https://cdn.example.com/source-image-1.jpg",
"creativity": 0,
"target_megapixels": 4
}
}
tool - slug нейросети, всегда "clarity-crystal-upscaler".input - параметры запуска. Поля передаются напрямую внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
image | string (url) | Да | Ссылка на изображение, которое нужно увеличить. Одна ссылка, только внешний http/https URL. Допустимые расширения: .jpg, .jpeg, .png, .webp. |
creativity | number | Да | Насколько свободно модель дорисовывает детали. Целое число от 0 до 10: 0 - максимально близко к исходнику, 10 - смелее. На практике модель и на 10 остаётся довольно сдержанной. |
target_megapixels | number | Да | Размер результата в мегапикселях. Целое число от 1 до 200. Пропорции исходника сохраняются. От этого параметра зависит цена. |
Если не передать creativity, подставится 0, если не передать target_megapixels - 4. Надёжнее всегда указывать оба поля явно.
Ориентиры для target_megapixels: 2 МП - это примерно 1920×1080, 4 МП - 2560×1600, 8 МП - 3840×2160 (4K), 12 МП - 4000×3000, 24 МП - 6000×4000.
Самый дешёвый вариант, подходит для экранов, соцсетей и сайтов.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "clarity-crystal-upscaler",
"input": {
"image": "https://cdn.example.com/source-image-1.jpg",
"creativity": 0,
"target_megapixels": 4
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'clarity-crystal-upscaler',
input: {
image: 'https://cdn.example.com/source-image-1.jpg',
creativity: 0,
target_megapixels: 4,
},
}),
})
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': 'clarity-crystal-upscaler',
'input': {
'image': 'https://cdn.example.com/source-image-1.jpg',
'creativity': 0,
'target_megapixels': 4,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "clarity-crystal-upscaler",
"input": {
"image": "https://cdn.example.com/product-photo.png",
"creativity": 3,
"target_megapixels": 25
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'clarity-crystal-upscaler',
input: {
image: 'https://cdn.example.com/product-photo.png',
creativity: 3,
target_megapixels: 25,
},
}),
})
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': 'clarity-crystal-upscaler',
'input': {
'image': 'https://cdn.example.com/product-photo.png',
'creativity': 3,
'target_megapixels': 25,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "clarity-crystal-upscaler",
"cost": 10,
"balance_after": 490,
"created_at": "2026-09-30T12:46:50Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "clarity-crystal-upscaler",
"cost": 10,
"created_at": "2026-09-30T12:46:50Z",
"completed_at": "2026-09-30T12:47:14Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/clarity-crystal-upscaler/image-1.png"
]
},
"error_message": null
}
После создания операции сохраните 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)
}
До 25 МП операция обычно готова за 30-45 секунд, 50 МП - около минуты, 100 МП - около двух минут. Опрашивайте статус раз в 5 секунд (не чаще раза в секунду для одной операции), пока он не станет completed или failed.
После завершения Clarity AI Crystal Upscaler возвращает:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/clarity-crystal-upscaler/image-1.png"
]
}
type - всегда "image".urls - массив из одной ссылки на увеличенное изображение.Результат приходит в PNG, даже если на входе был JPG, поэтому файлы получаются тяжёлыми: 4 МП в нашей проверке весили 5,7 МБ, а файлы на десятки мегапикселей весят в разы больше. Если нужен JPG, перекодируйте результат у себя.
Цена зависит только от target_megapixels - от размера результата, а не исходника. creativity, формат и размер входного файла на цену не влияют.
target_megapixels | Цена за изображение |
|---|---|
| 1-4 | 10 ₽ |
| 5-8 | 20 ₽ |
| 9-16 | 40 ₽ |
| 17-25 | 80 ₽ |
| 26-50 | 160 ₽ |
| 51-100 | 320 ₽ |
| 101-200 | 640 ₽ |
Внутри диапазона цена одинаковая, поэтому выгоднее брать его верхнюю границу: 4 МП стоят столько же, сколько 1 МП, а 8 МП - столько же, сколько 5 МП.
Стоимость списывается при создании операции и возвращается в поле cost.
POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и снова списывает деньги.queued, затем проверяете статус по id.image принимает только внешние http/https ссылки с расширениями .jpg, .jpeg, .png, .webp. Ссылки на localhost и внутренние адреса сети не принимаются. Фото в других форматах сначала переведите в JPG или PNG.target_megapixels и creativity передавайте целыми числами. Значения вне диапазонов 1-200 и 0-10 вернут ошибку validation_error.target_megapixels больше, чем размер исходника: модель предназначена для увеличения, а платите вы за итоговый размер.creativity: 0. Более высокие значения помогают на очень мягких и мелких картинках, но разница с нулём обычно небольшая.