API генератора QR‑кодов

Этот документ описывает, как программно создавать PNG, SVG или PDF‑файлы с QR‑кодами через HTTP‑энд‑пойнт /api/gen.php.

1. Обзор

Внимание: сервис не хранит сгенерированые QR коды, более подробно описано в FAQ

URL энд‑пойнта: https://qr.uralst.ru/api/gen.php
Доступные методы: GET, POST — генерация, OPTIONS — интроспекция.
Ответ: JSON с прямой ссылкой на файл или сам файл (при download=1). Для OPTIONS возвращается JSON‑список поддерживаемых параметров.

2. Быстрый старт

# PNG‑код
curl "https://qr.uralst.ru/api/gen.php?apikey=demo123&text=Hello%20World&size=400&format=png"

JSON‑ответ:

{
  "status": "success",
  "file"  : "https://qr.uralst.ru/qrcodes/qr_abcd1234.png",
  "size"  : 400,
  "ecc"   : "Q",
  "format": "png"
}

2.1 Интроспекция параметров

curl -X OPTIONS https://qr.uralst.ru/api/gen.php | jq

Получите объект со всеми параметрами, их типами и значениями по умолчанию — пригодно для автогенерации UI и CORS‑preflight.

3. Параметры запроса

Параметр Тип / диапазон По умолчанию Описание
apikey string — (обяз.) Ключ доступа к API (если включена проверка).
data / text string — (обяз.) Текст/URL для кодирования.
data64 / text64 base64‑string Альтернатива data (передача спецсимволов без URL‑кодирования).
format png | svg | pdf png Формат выходного файла.
size 50 – 3000 px 700 Ширина/высота QR‑кода.
margin 0 – 100 модулей 4 Белая рамка вокруг кода.
level L | M | Q | H Q Уровень коррекции ошибок.
frontcolor #RRGGBB #000000 Цвет «пикселей».
backcolor #RRGGBB #FFFFFF Цвет фона.
transparent 0 | 1 0 1 — фон будет прозрачным.
marker_out finder, plus, dot, dots, 9-dots, 9-dots-fat, rounded, sun, pulse, flurry, leaf, flower, elastic, vortex, sparkle_dot, 3-corners, frame dot Стиль внешних угловых маркеров.
marker_in default, plus, dot, dots, 9-dots, 9-dots-fat, rounded, sun, pulse, flurry, leaf, flower, elastic, vortex, sparkle_dot, 3-corners, frame default Стиль внутренних маркеров.
marker_out_color #RRGGBB frontcolor Цвет внешних маркеров.
marker_in_color #RRGGBB frontcolor Цвет внутренних маркеров.
font DejaVuSans, DejaVuSansCondensed, DejaVuSerif, DejaVuSerifCondensed, DejaVuSansMono DejaVuSans Шрифт для PDF (лежит в /pdf/fonts/).
paper A4, A6, Letter … A4 Размер листа при PDF.
download 0 | 1 0 1 — вместо JSON вернётся готовый файл.
embed 0 | 1 0 1 — добавить поле data (Base64) в ответ.

Полный перечень поддерживаемых стилей маркеров и шрифтов доступен на главной странице.

4. Примеры

4.1 PNG с пользовательскими маркерами

curl "https://qr.uralst.ru/api/gen.php?apikey=demo123&text=Hello+PNG&format=png&marker_out=dot&marker_in=plus&marker_out_color=FF0000&marker_in_color=00FF00" -o qr.png

4.2 SVG c base64‑данными

curl "https://qr.uralst.ru/api/gen.php?apikey=demo123&data64=$(echo -n 'Секрет 👍'|base64)&format=svg" -o qr.svg

4.3 PDF‑наклейка

curl -X POST https://qr.uralst.ru/api/gen.php \
     -d "apikey=demo123&text64=$(base64 -w0 <<< 'SN:XPTO-2025-0001')&format=pdf&size=450&paper=A6&font=DejaVuSerifCondensed&download=1" \
     -o label.pdf

4.4 Получить описание параметров

curl -X OPTIONS https://qr.uralst.ru/api/gen.php | jq .marker_in.values

5. Формат ответа

Ключ Описание
status success | error
file URL готового файла (нет при download=1)
mime MIME‑тип (image/png, image/svg+xml, application/pdf)
data Base64‑контент (при embed=1 или OPTIONS)
size Размер в пикселях
ecc Уровень ECC
format png | svg | pdf
message Текст ошибки (при error)

6. Коды ошибок

HTTP message Причина
400 parameter "data" required Нет входных данных
400 invalid format Неверное значение format
422 backend missing Серверу не хватает Imagick / rsvg‑convert / Dompdf / mPDF
500 internal error Необработанное исключение

7. Расширенные возможности

8. FAQ

Ошибка «missing or invalid apikey»

Вы не передали apikey или он недействителен. Уточните его у администратора сервиса.

Почему сервис не хранит QR коды

Сервис не хранит QR коды для экономии места, они стираются раз в час. Время хранения можно увеличить или сделать постоянным.

PNG выглядит размытым

Увеличьте size или используйте SVG/PDF.

Как сделать фон прозрачным?

transparent=1 или backcolor=#FFFFFF00.

Нужен логотип в центре

Сгенерируйте PNG и наложите логотип средствами GD/Imagick.


Base64 encode/decode API


1. Обзор

2. Аутентификация

СпособПример
ЗаголовокX-API-Key: demo123
Bearer‑токенAuthorization: Bearer demo123
Параметр?apikey=demo123 или в теле формы

При отсутствии/ошибке ключа будет 403 и ошибка missing or invalid apikey.

3. Параметры

ИмяТипОбяз.Описание
datastringСтрока UTF‑8 для кодирования/декодирования
actionstringencode (по умолч.) или decode

4. Примеры запросов

4.1 Кодирование (GET)

curl "https://qr.uralst.ru/api/base64.php?apikey=demo123&data=Hello%20World&action=encode"

4.2 Кодирование (POST / JSON)

curl -X POST https://qr.uralst.ru/api/base64.php \
     -H "Content-Type: application/json" \
     -H "X-API-Key: demo123" \
     -d '{
           "data": "Привет мир",
           "action": "encode"
         }'

4.3 Декодирование (POST / Bearer)

curl -X POST https://qr.uralst.ru/api/base64.php \
     -H "Authorization: Bearer demo123" \
     -H "Content-Type: application/json" \
     -d '{
           "data": "SGVsbG8gV29ybGQ=",
           "action": "decode"
         }'

5. Формат ответа

{
  "status": true,
  "action" : "encode",
  "input"  : "Hello World",
  "result" : "SGVsbG8gV29ybGQ="
}

6. Ошибки

HTTPerrorПричина
400Parameter "data" is required.Нет строки
400Invalid base64 string.Некорректная Base64 при decode
403missing or invalid apikeyКлюч отсутствует / неверен