Генерация QR-кодов

Генерация QR-кодов одним GET-запросом: PNG, SVG или base64 в JSON. Настраиваются размер до 1024 px, поля, уровень коррекции ошибок и цвета. Удобно вставлять прямо в тег <img>. Бесплатно, без регистрации и ключей.

5 запросов/мин с IP PNG + SVG + base64 До 1024 px

Демо

QR-код вернётся как обычное PNG-изображение — его можно вставлять в <img>, письма и документы.

// ссылка на изображение появится здесь

Адреса запросов

GET https://apipark.ru/qr/png?text={текст} — PNG-изображение
GET https://apipark.ru/qr/svg?text={текст} — SVG-изображение
GET https://apipark.ru/qr/json?text={текст} — JSON с data-URL (base64)

Параметры

ПараметрПо умолчаниюОписание
textСодержимое QR-кода (URL-encoded), до 2000 символов. Обязателен
size300Размер изображения в пикселях, 64–1024
margin2Поле вокруг кода в модулях, 0–16
eccMУровень коррекции ошибок: L (7%), M (15%), Q (25%), H (30%)
dark000000Цвет модулей, 6-значный hex без #
lightffffffЦвет фона, 6-значный hex без #
keyключ платного тарифа (опционально)

Примеры

# PNG 400x400 с высокой коррекцией ошибок
curl -o qr.png "https://apipark.ru/qr/png?text=https://apipark.ru&size=400&ecc=H"

# SVG в фирменных цветах
curl -o qr.svg "https://apipark.ru/qr/svg?text=hello&dark=1a1a2e&light=f0f0f0"

# HTML — прямо в тег img
<img src="https://apipark.ru/qr/png?text=https%3A%2F%2Fexample.com&size=200" alt="QR">

# JavaScript — base64 для встраивания без второго запроса
const res = await fetch('https://apipark.ru/qr/json?text=' + encodeURIComponent(url));
const { dataUrl } = await res.json();
img.src = dataUrl;

# Python
import requests
png = requests.get('https://apipark.ru/qr/png', params={'text': 'https://apipark.ru', 'size': 400}).content
open('qr.png', 'wb').write(png)

Советы

Для печати и наклеек выбирайте уровень коррекции ecc=H — код останется читаемым при повреждении до 30% площади. Контраст между dark и light должен оставаться высоким, иначе сканеры не распознают код. PNG-ответы кэшируются браузером на сутки.

Лимиты

5 запросов в минуту с одного IP-адреса. При превышении вернётся HTTP 429. Заголовки: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.