Конвертирует загруженное изображение в нужный формат: JPEG, JPG, PNG, WebP, BMP, TIFF, GIF или AVIF. Цена - 0,15 ₽ за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Конвертер пересохраняет картинку по ссылке в другой формат: JPEG, PNG, WebP, BMP, TIFF, GIF или AVIF. Размер в пикселях не меняется, сама картинка тоже - меняется только формат файла.
Где это пригодится:
Один вызов - одна картинка. Вызов создаёт асинхронную операцию: сначала вы получаете id, затем проверяете статус, пока не появится ссылка на готовый файл. Обычно конвертация занимает 15-25 секунд.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим у нейросети один: исходная картинка плюс нужный формат результата.
{
"tool": "image-converter",
"input": {
"image": "https://cdn.example.com/source-image-1.jpg",
"output_format": "png"
}
}
tool - slug нейросети, всегда "image-converter".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
image | string (url) | Да | Ссылка на исходную картинку. Одна картинка, только внешний http/https URL с расширением .jpg, .jpeg, .png или .webp. |
output_format | enum | Да | Формат готового файла. Варианты: jpeg - JPEG (файл придёт с расширением .jpg), jpg - тот же JPEG, png - PNG без потерь, webp - WebP, bmp - BMP без сжатия, tiff - TIFF, gif - GIF, avif - AVIF. Если поле не передать, будет jpeg. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "image-converter",
"input": {
"image": "https://cdn.example.com/source-image-1.jpg",
"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: 'image-converter',
input: {
image: 'https://cdn.example.com/source-image-1.jpg',
output_format: 'png',
},
}),
})
const operation = await response.json()
console.log(operation.id, operation.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'image-converter',
'input': {
'image': 'https://cdn.example.com/source-image-1.jpg',
'output_format': 'png',
},
},
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": "image-converter",
"input": {
"image": "https://cdn.example.com/banner-1.png",
"output_format": "webp"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'image-converter',
input: {
image: 'https://cdn.example.com/banner-1.png',
output_format: 'webp',
},
}),
})
const operation = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'image-converter',
'input': {
'image': 'https://cdn.example.com/banner-1.png',
'output_format': 'webp',
},
},
timeout=30,
)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "image-converter",
"cost": 0.15,
"balance_after": 495.85,
"created_at": "2026-09-30T12:42:05.884451+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "image-converter",
"cost": 0.15,
"created_at": "2026-09-30T12:42:05.884451+00:00",
"completed_at": "2026-09-30T12:42:27.935588+00:00",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/image-converter/result-1.png"
]
},
"error_message": null
}
Пока операция выполняется, status будет queued или processing, а result - null. Если конвертация не удалась, придёт status: "failed" и текст причины в error_message.
Сохраните id из ответа на создание и запрашивайте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
Пример ожидания результата на JavaScript / TypeScript:
async function waitForResult(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') return op.result.urls[0]
if (op.status === 'failed') throw new Error(op.error_message)
await new Promise((r) => setTimeout(r, 3000))
}
}
Статус одной операции можно запрашивать не чаще раза в секунду, иначе придёт 429. Для конвертера достаточно опроса раз в 3-5 секунд.
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/image-converter/result-1.png"
]
}
type - всегда "image".urls - массив ровно из одной ссылки на готовый файл.Расширение в ссылке соответствует выбранному формату: .png, .webp, .bmp, .tiff, .gif, .avif. Для jpeg и jpg файл одинаковый и приходит с расширением .jpg. Ширина и высота совпадают с исходной картинкой.
Цена фиксированная: 0,15 ₽ за одну картинку. Она не зависит ни от формата, ни от размера изображения.
| Что конвертируем | Цена |
|---|---|
| 1 картинка в любой формат | 0,15 ₽ |
| 100 картинок | 15 ₽ |
Сумма списывается при создании операции, поле cost в ответе показывает её точно.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги ещё раз. Если ответ на POST потерялся, не отправляйте тот же запрос вслепую.queued, результат забирайте через GET /api/v1/operations/{id}.image принимаются только внешние http/https ссылки с расширением .jpg, .jpeg, .png или .webp. Ссылки на localhost и внутренние адреса отклоняются с validation_error. Файл по ссылке должен открываться без авторизации.png, webp или avif.bmp и tiff дают тяжёлые файлы, для веба лучше webp или avif. AVIF открывается не во всех старых программах и браузерах.