API qrleo.ru
Обзор
API позволяет создавать короткие ссылки и QR-коды программно — без захода в интерфейс. Пригодится для интеграций с CRM, автоматической генерации ссылок для рассылок, массовой маркировки товаров QR-кодами и т. п.
API привязан к команде (общему аккаунту), а не к отдельному пользователю. Все созданные через API ссылки и QR-коды становятся командными — их видят и могут редактировать все участники команды, как и созданные вручную.
Если у вас ещё нет команды и ключа — создайте команду и получите ключ на странице «Команда» (нужна регистрация и подтверждённый email).
Аутентификация
Ключ передаётся в заголовке Authorization:
Authorization: Bearer qrleo_ваш_ключ
Также поддерживаются альтернативные способы передачи — на случай, если ваш HTTP-клиент
не умеет удобно задавать заголовок Authorization:
X-Api-Key: qrleo_ваш_ключ # или полем в теле запроса api_key=qrleo_ваш_ключ
Запросы принимаются как в формате application/x-www-form-urlencoded
(обычные POST-параметры), так и application/json — определяется по
заголовку Content-Type.
Ключ общий на всю команду и не привязан к конкретному участнику. Управление ключом — создание, перевыпуск, отзыв — доступно только владельцу команды, на странице «Команда». При перевыпуске старый ключ сразу перестаёт работать.
Ограничения
- До 60 запросов в час на каждый эндпоинт (создание ссылок и создание QR-кодов считаются отдельно), в расчёте на команду — не на отдельный ключ или IP.
- Содержимое каждого запроса проверяется по тому же чёрному списку доменов и ключевых слов, что и при создании через интерфейс.
Создание короткой ссылки
POST/api-links.php
| Параметр | Обязательный | Описание |
|---|---|---|
target_url | Да | Адрес, на который ведёт ссылка. Должен начинаться с http:// или https://. |
title | Нет | Название для себя (видно только в списке ссылок). |
expires_at | Нет | Дата окончания срока действия, формат YYYY-MM-DD. После этой даты ссылка отдаёт 410. |
Пример запроса:
curl -X POST https://qrleo.ru/api-links.php \ -H "Authorization: Bearer qrleo_ваш_ключ" \ -d "target_url=https://example.com/promo" \ -d "title=Ссылка для рассылки" \ -d "expires_at=2026-12-31"
Успешный ответ (201):
{
"success": true,
"id": 42,
"code": "aB3dE9f",
"short_url": "https://qrleo.ru/s/aB3dE9f",
"target_url": "https://example.com/promo",
"title": "Ссылка для рассылки",
"expires_at": "2026-12-31 23:59:59"
}
Создание QR-кода
POST/api-qr.php
| Параметр | Обязательный | Описание |
|---|---|---|
type | Нет | url (по умолчанию), text, vcard или wifi. |
link_mode | Нет | dynamic (по умолчанию, статистика + редактируемая ссылка) или static. |
title | Нет | Название для себя. |
| Поля содержимого | Да, зависит от type | См. таблицу ниже. |
fg_color, bg_color | Нет | Цвета в формате #rrggbb. По умолчанию чёрный на белом. |
gradient_enabled, gradient_type, fg_color2, gradient_angle | Нет | Градиент вместо сплошного цвета — те же параметры, что и в форме на сайте. |
Поля содержимого в зависимости от type:
| Тип | Поля |
|---|---|
url | url |
text | text |
vcard | first_name, last_name, phone, email, org |
wifi | ssid, wifi_password, encryption (WPA/WEP/nopass), hidden |
Пример запроса:
curl -X POST https://qrleo.ru/api-qr.php \ -H "Authorization: Bearer qrleo_ваш_ключ" \ -d "type=url" \ -d "url=https://example.com/product/42" \ -d "title=QR на упаковке" \ -d "fg_color=%23111827"
Успешный ответ (201):
{
"success": true,
"id": 108,
"code": "Xz1pQ7k",
"type": "url",
"link_mode": "dynamic",
"title": "QR на упаковке",
"png_url": "https://qrleo.ru/qr-image.php?code=Xz1pQ7k",
"svg_url": "https://qrleo.ru/qr-image.php?code=Xz1pQ7k&format=svg",
"redirect_url": "https://qrleo.ru/r/Xz1pQ7k"
}
png_url / svg_url — прямые ссылки на скачивание готового изображения
(добавьте &download=1, чтобы отдавался как файл, а не отображался в браузере).
Коды ошибок
Оба эндпоинта отвечают в формате {"success": false, "error": "код", "message": "текст"} с соответствующим HTTP-статусом:
| Статус | error | Когда |
|---|---|---|
| 401 | invalid_api_key | Ключ не передан, неверный или отозван |
| 405 | method_not_allowed | Запрос не методом POST |
| 422 | invalid_url / url_too_long / invalid_payload / invalid_expires_at | Некорректные данные запроса |
| 422 | blocked_content | Содержимое запрещено чёрным списком |
| 429 | rate_limited | Превышен лимит 60 запросов в час на команду |
| 500 | no_owner / create_failed | Внутренняя ошибка сервиса |
Вопросы по API — через форму обратной связи.