Введение
KADR принимает изображения, делает несколько WebP-версий и возвращает готовые ссылки. Входные данные можно передать HTTPS-ссылками или файлами через multipart/form-data.
https://img.bergelsonb.ru/api/v1Авторизация
Каждый запрос должен содержать API-ключ в заголовке Authorization. Ключи создаются в личном кабинете и относятся к конкретному проекту.
Authorization: Bearer kdr_live_••••••••••••••••Храните ключ на сервере или в переменных окружения. Не добавляйте его в клиентский JavaScript и публичные репозитории.
Первый запрос
Передайте массив images и до шести вариантов в presets. До 20 изображений можно отправить одним запросом.
curl -X POST https://img.bergelsonb.ru/api/v1/images \
-H "Authorization: Bearer $KADR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"images": ["https://example.com/item-01.heic"],
"presets": [
{ "name": "thumb", "width": 240, "height": 240, "fit": "cover" },
{ "name": "large", "width": 1600, "fit": "inside" }
]
}'Ответ
После обработки API отвечает кодом 201 и возвращает ссылки на WebP-файлы.
{
"job_id": "job_8f21b7d9",
"status": "done",
"input_bytes": 5242880,
"output_bytes": 481230,
"saved_percent": 90.8,
"results": [{
"preset": "large",
"url": "/api/results/job_8f21b7d9/photo-large.webp"
}]
}Входные данные
JSON принимает только публичные HTTPS-ссылки. Локальные и приватные адреса блокируются. Для файлов используйте поле images в multipart/form-data.
Размер и обрезка
Укажите ширину, высоту или оба значения. fit определяет размещение изображения.
coverЗаполняет область и обрезает лишнееcontainСохраняет изображение целикомinsideУмещает внутрь без увеличенияconst response = await fetch("https://img.bergelsonb.ru/api/v1/images", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KADR_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
images: ["https://example.com/photo.heic"],
presets: [{ name: "large", width: 1600, fit: "inside" }]
})
});Результат
Все варианты возвращаются в WebP. Ссылки приватные и доступны владельцу задачи после входа или с API-ключом.
Очередь и хранение
Одновременно сервер обрабатывает две задачи, остальные ждут свободный слот. Оригинал удаляется сразу после конвертации, результаты — автоматически через 24 часа.
POST /api/v1/images
Поддерживает JSON со ссылками и multipart/form-data с файлами. Максимум 20 входных изображений и шесть пресетов.
Ошибки
Ошибки возвращаются в формате application/problem+json с полями title, status и detail.
Лимиты
По умолчанию один файл — до 25 МБ, максимум 20 файлов на запрос и до 80 мегапикселей на изображение.