KADRAPI
КабинетПолучить ключ
Начало работы

Введение

KADR принимает изображения, делает несколько WebP-версий и возвращает готовые ссылки. Входные данные можно передать HTTPS-ссылками или файлами через multipart/form-data.

Базовый URLhttps://img.bergelsonb.ru/api/v1

Авторизация

Каждый запрос должен содержать API-ключ в заголовке Authorization. Ключи создаются в личном кабинете и относятся к конкретному проекту.

HTTP
Authorization: Bearer kdr_live_••••••••••••••••
Не публикуйте ключи

Храните ключ на сервере или в переменных окружения. Не добавляйте его в клиентский JavaScript и публичные репозитории.

Первый запрос

Передайте массив images и до шести вариантов в presets. До 20 изображений можно отправить одним запросом.

BASH
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-файлы.

JSON
{
  "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Умещает внутрь без увеличения
JAVASCRIPT
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 мегапикселей на изображение.