REST API

REST API для генерации QR-кодов — интеграция в 1С, CRM, Python

POST /qr-codes — один запрос, готовый QR. PNG, SVG, base64. Batch 1000 кодов. Webhook на каждый скан. OpenAPI 3.1. Серверы в РФ. Бесплатный старт без карты.

curl POSTPOST
curl -X POST api.qrcw.cc/qr-codes
  -H "Authorization: Bearer qrcw_..."
  -d '{
    "type": "URL",
    "content": "https://shop.ru/123",
    "dynamic": true
  }'
Ответ201 Created · 86 ms
{
  "id": "qr_8FzNb6Vk9Yp",
  "short_url": "qrcw.cc/r/abc123",
  "downloads": {
    "png": "…/qr.png",
    "svg": "…/qr.svg"
  },
  "dynamic": true
}
100 req/min на Freebatch 1 000OpenAPI 3.1

12 возможностей QR API

Полный CRUD над QR-кодами, batch до 1000, webhooks, аналитика — всё через REST с OpenAPI 3.1 документацией.

Один эндпоинт — готовый QR

POST /qr-codes c типом, контентом, дизайном — в ответе PNG, SVG, PDF и ID. Статический и динамический — один путь.

response201 OK
"short_url": "qrcw.cc/r/abc"
"downloads": { "png", "svg" }

Batch до 1 000 QR за вызов

POST /qr-codes/batch принимает массив объектов. BullMQ фоновая очередь, на выходе — ZIP + CSV-маппинг.

Webhook на скан

HMAC-SHA256 POST на ваш endpoint: время, гео, устройство, реферер. Retry 1 / 5 / 30 мин / 2 ч / 24 ч.

qr.scannedlink.clickedform.submitted

Аналитика через API

GET /qr-codes/:id/stats — агрегаты, /events — сырой поток сканов с пагинацией.

Безопасная аутентификация

qrcw_<24-nonce>. SHA-256 в БД, scope per-key, мгновенный отзыв.

Управление доменами

POST /domains — подключите свой домен через CNAME, SSL выпускаем сами.

OpenAPI 3.1

Полная спека в JSON. Импорт в Postman, Swagger UI, openapi-generator.

Серверы в России (152-ФЗ)

Latency 20–40 мс для запросов из РФ. Соответствие 152-ФЗ. Без зарубежных CDN.

SLA 99,9 / 99,99 %

Pro 99,9 %, Enterprise 99,99 %. Мониторинг 24/7, status-page.

A/B-тесты кампаний

PATCH /qr-codes/:id/destination — мгновенная смена URL.

p50 = 120 ms

PNG кэшируется на CDN — повторно за 15–30 мс. До 3 000 req/min на Business.

Swagger UI в кабинете

Тестируйте эндпоинты прямо в браузере без Postman. Ключ вводится один раз.

О REST API QRcode.website

100 req/мин
лимит на Free-тарифе
1 000
QR в batch-запросе
HMAC
подпись webhook-доставки
3 SDK
Python · Node · PHP

QR API — это программный интерфейс, который позволяет генерировать QR-коды, управлять ими и получать аналитику сканирований без ручной работы в браузере. Вместо того чтобы создавать каждый QR в веб-конструкторе, разработчик отправляет HTTP-запрос со своего сервера или из своего приложения и получает готовый QR-код в нужном формате. Это критично для систем, где QR-коды генерируются массово: интернет-магазины с уникальными QR на каждом товаре, типографии с QR на каждом тираже, event-платформы с QR на каждом билете, ERP-системы с QR на каждой накладной.

Разница между no-code конструктором и API принципиальная. Конструктор — для одного пользователя, который создаёт QR вручную. API — для системы, которая создаёт тысячи QR автоматически, без участия человека. Наш REST API работает по стандартным принципам: HTTP-запрос, JSON-тело, JSON-ответ, Bearer-токен для авторизации. Документация в формате OpenAPI 3.1 — можно импортировать в Postman, Swagger UI или любой API-клиент за секунды.

Эндпоинты: создание, управление и аналитика

Основной эндпоинт создания QR-кода — POST /api/v1/qr-codes. В теле запроса вы передаёте тип контента (URL, vCard, WiFi, текст, email, телефон, событие и другие), само содержимое, параметры дизайна (цвет, логотип, форма модулей) и флаг dynamic — если true, QR будет динамическим с редактируемой ссылкой. В ответ получаете ID объекта, короткую ссылку для динамического QR и прямые URL для скачивания файлов в форматах PNG, SVG и PDF.

Для работы с существующими QR-кодами: GET /api/v1/qr-codes/:id — получить объект, PATCH /api/v1/qr-codes/:id — обновить целевую ссылку или параметры, DELETE /api/v1/qr-codes/:id — удалить. Список QR-кодов с пагинацией и фильтрацией — GET /api/v1/qr-codes с параметрами page, limit, type, dynamic.

Массовая генерация — POST /api/v1/qr-codes/batch. Принимает массив объектов (до 1000 штук за один запрос), обрабатывает их в фоновой очереди BullMQ и возвращает task_id. Статус задачи — GET /api/v1/tasks/:task_id. Когда задача завершена, по ссылке из ответа доступен ZIP-архив со всеми QR-кодами и CSV-файлом с соответствием данных и имён файлов.

Аналитика: GET /api/v1/qr-codes/:id/stats — агрегированная статистика (сканы по дням, странам, устройствам, операционным системам), GET /api/v1/qr-codes/:id/events — сырой поток событий сканирований с пагинацией. Поддерживаются фильтры по периоду, стране и устройству.

Аутентификация: API-ключи и безопасность

Все запросы к API требуют Bearer-токен в заголовке Authorization. Формат ключа: qrcw_<24-символьный nonce>, сгенерированный через nanoid. Создать ключ можно в кабинете в разделе «API» → «Создать ключ». Ключ показывается единственный раз при создании — скопируйте и сохраните в менеджере паролей или переменной окружения. В базе данных хранится только SHA-256 хэш ключа, не сам ключ — даже при утечке базы данных ключ не компрометируется.

Для каждого ключа настраивается область видимости (scope): read-only для мониторинга, write для создания QR, admin для управления аккаунтом. Можно создать несколько ключей — например, отдельный для каждого проекта или интеграции. Любой ключ можно отозвать мгновенно в один клик — это полезно при компрометации или завершении проекта.

Rate limiting работает по скользящему окну на уровне ключа. Текущие лимиты отдаются в заголовках каждого ответа: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. При превышении лимита API возвращает статус 429 Too Many Requests с заголовком Retry-After.

Интеграции: 1С, CRM и e-commerce

Интеграция с 1С — один из популярных сценариев. При формировании накладной или этикетки 1С вызывает наш API через COM-объект или встроенный HTTP-клиент, получает PNG QR-кода и встраивает его в печатную форму. Для настройки нужны: URL нашего API, API-ключ в переменной конфигурации, обработчик события «Перед печатью». Примеры кода на встроенном языке 1С — в нашей документации.

amoCRM интегрируется через виджет или Zapier. При смене стадии сделки создаётся QR-код с уникальной ссылкой для клиента и прикрепляется к карточке. Bitrix24 поддерживает интеграцию через REST API Bitrix24 (исходящие вебхуки) и через marketplace-приложение.

e-commerce платформы (CS-Cart, OpenCart, WooCommerce) генерируют QR для каждого товара или заказа через плагин или прямой вызов нашего API в хуке. Tilda подключается через Webhooks Tilda + запрос к нашему API — QR автоматически создаётся при отправке формы на сайте.

iOS и Android SDK находятся в разработке (ожидаемый релиз Q3 2026), но уже сейчас мобильные приложения интегрируются напрямую через REST: сформируйте запрос на бэкенде своего приложения, передайте готовое изображение на фронт.

Webhooks: события в реальном времени

Webhook — это HTTP-запрос от нашего сервера на ваш endpoint, который происходит мгновенно при наступлении события: QR-код отсканирован, ссылка кликнута, форма мини-сайта отправлена. Это позволяет строить реактивные системы: CRM обновляет статус клиента в момент сканирования QR на договоре, аналитическая система получает данные без поллинга.

Тело webhook-запроса — JSON с полями: event_type (scan, click, form_submit), qr_id, short_url, timestamp, geo (страна, город), device (тип, OS, browser), referrer. Заголовок X-Webhook-Signature содержит HMAC-SHA256 подпись от тела запроса с вашим secret — проверяйте её на своей стороне для защиты от подделки. При неудачной доставке (ответ не 2xx или таймаут 5 секунд) система повторяет запрос по экспоненциальной задержке: через 1 мин, 5 мин, 30 мин, 2 ч, 24 ч. История доставки видна в кабинете.

Лимиты тарифов и производительность

Бесплатный тариф: 100 запросов в минуту, 10 000 запросов в сутки, до 50 QR-кодов в аккаунте, batch до 10 штук за раз. Pro тариф: 600 запросов в минуту, без суточного лимита, batch до 500 штук. Business: 3 000 запросов в минуту, batch до 1 000 штук. Enterprise: без ограничений, SLA 99,99%, выделенная инфраструктура, кастомные лимиты.

Время ответа API (p50): создание статического QR — 120 мс, создание динамического QR — 90 мс (не нужно рендерить изображение сразу), скачивание PNG — 200 мс для изображения 300×300 px. Генерация PNG 1000×1000 px — 450 мс. Все изображения кэшируются на CDN — повторные запросы одного и того же QR возвращаются за 15–30 мс.

Примеры кода: curl, Python, JavaScript, PHP

Для быстрого старта достаточно curl. Прочитайте OpenAPI 3.1 спецификацию по адресу /openapi.json — в ней описаны все эндпоинты, параметры и модели ответов. Импортируйте в Postman (File → Import → URL) или в VS Code с расширением REST Client. Swagger UI доступен в кабинете в разделе «API» — можно тестировать запросы прямо в браузере, не выходя из кабинета.

Примеры кода

Создание QR одним запросом — curl, Python, JavaScript

POST на /qr-codes — получите PNG, SVG и PDF одним запросом

curl — запросPOST
curl -X POST https://app.qrcode.website/api/v1/qr-codes \
  -H "Authorization: Bearer qrcw_..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "URL",
    "content": "https://example.com/product/123",
    "dynamic": true,
    "design": {
      "foreground": "#7c3aed",
      "background": "#ffffff",
      "logo": "https://cdn.example.com/logo.png"
    }
  }'
Ответ201 Created
{
  "id": "qr_8FzNb6Vk9Yp2X7Lq",
  "short_url": "https://qrcode.website/r/abc123",
  "type": "URL",
  "dynamic": true,
  "downloads": {
    "png": "https://cdn.qrcode.website/qr/qr_8Fz.../qr.png",
    "svg": "https://cdn.qrcode.website/qr/qr_8Fz.../qr.svg",
    "pdf": "https://cdn.qrcode.website/qr/qr_8Fz.../qr.pdf"
  },
  "created_at": "2026-05-15T10:23:45Z"
}
Python (httpx)3.10+
import httpx

API_KEY = "qrcw_..."
BASE_URL = "https://app.qrcode.website/api/v1"

response = httpx.post(
    f"{BASE_URL}/qr-codes",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "type": "URL",
        "content": "https://example.com",
        "dynamic": True,
    },
)
data = response.json()
print(data["downloads"]["png"])  # PNG URL
JavaScript / Node.jsES2022+
const response = await fetch("https://app.qrcode.website/api/v1/qr-codes", {
  method: "POST",
  headers: {
    "Authorization": "Bearer qrcw_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    type: "URL",
    content: "https://example.com",
    dynamic: true,
  }),
});
const data = await response.json();
console.log(data.downloads.png); // PNG URL

Полная документация — OpenAPI 3.1 на https://app.qrcode.website/api/v1/openapi.json. Интерактивный Swagger UI и Postman-коллекция доступны в кабинете в разделе «API».

8 сценариев интеграции QR API

1С, e-commerce, CRM, типографии, мобильные приложения — реальные кейсы из практики

Этикетки в 1С: QR на каждой накладной

При проведении накладной в 1С вызывается обработчик, который POST-запросом к нашему API создаёт QR-код с уникальной ссылкой на карточку товара. PNG встраивается в печатную форму этикетки. При сканировании QR кладовщик видит актуальный остаток, серийный номер и историю перемещений. Интеграция занимает 1–2 дня силами 1С-программиста.

e-commerce: QR в checkout для каждого заказа

При создании заказа интернет-магазин через API генерирует динамический QR с коротким URL на страницу заказа. QR вставляется в PDF-квитанцию и в email-подтверждение. Покупатель сканирует QR с распечатки и сразу видит статус доставки в реальном времени. При изменении статуса заказа меняется только destination динамического QR — PDF переиздавать не нужно.

CRM: QR-код для каждой сделки amoCRM

При смене стадии сделки в amoCRM срабатывает webhook, ваш бэкенд вызывает наш API и создаёт уникальный QR для клиента. Менеджер распечатывает QR на договоре или коммерческом предложении. Когда клиент сканирует — через наш webhook в CRM фиксируется событие «клиент открыл документ», сделка обновляется автоматически.

Мобильное приложение: QR-логин

Мобильное приложение запрашивает с вашего бэкенда сессионный QR для входа (аналог WhatsApp Web). Бэкенд через наш API создаёт динамический QR с временным токеном. Пользователь сканирует QR на десктопе камерой смартфона — мобильное приложение подтверждает токен и открывает сессию. Webhook от нашего API уведомляет ваш бэкенд о сканировании.

Типография: QR на упаковке тиражом 50 000

Перед запуском тиража типография или бренд формирует CSV с уникальными данными (серийный номер, партия, дата). Наш API batch-эндпоинт принимает до 1 000 кодов за один запрос — для 50 000 потребуется 50 вызовов. ZIP-архив с готовыми PNG автоматически загружается в систему предпечатной подготовки. Уникальные QR для защиты от подделок.

Корпоративные визитки: QR для каждого сотрудника

HR-система при создании нового сотрудника вызывает API и генерирует vCard QR с его данными. QR передаётся в типографию вместе с шаблоном визитки. При смене телефона или должности — один PATCH-запрос меняет данные в динамическом QR, сотрудник отдаёт те же визитки и QR ведёт на актуальный контакт.

Аналитика рекламных кампаний через webhook

Маркетолог создаёт уникальный QR для каждого рекламного канала: наружная реклама, листовки, журнал, радио (промокод). Webhook на скан отправляет события в вашу аналитику (ClickHouse, Amplitude, Яндекс Метрика через Measurement Protocol). В реальном времени видно, какой канал даёт больше сканирований и конверсий.

A/B тестирование лендингов

Создайте динамический QR. Первую неделю destination — лендинг A. Вторую неделю — лендинг B. Количество сканов одинаково (один тираж листовок), разница в конверсиях покажет, какой лендинг лучше. Смена destination через PATCH /qr-codes/:id/destination занимает один запрос без перепечатки раздаточного материала.

Как начать работу с API за 15 минут

От регистрации до первого рабочего QR-кода через API

  1. 1

    Зарегистрируйтесь и создайте API-ключ

    Создайте аккаунт на QRcode.website — это бесплатно и не требует карты. Зайдите в кабинет, откройте раздел «API» в боковом меню, нажмите «Создать ключ». Задайте название (например, «Production» или «1С-интеграция»), выберите scope (read, write, admin), нажмите создать. Ключ формата qrcw_... показывается один раз — скопируйте и сохраните в менеджере паролей или переменной окружения.

  2. 2

    Изучите документацию

    Полная OpenAPI 3.1 спецификация доступна по адресу /api/v1/openapi.json без авторизации. Импортируйте в Postman через File → Import → URL. Или откройте интерактивный Swagger UI в кабинете — все параметры с описанием и примерами прямо в браузере. Для быстрого знакомства начните с раздела QR Codes — там основные эндпоинты.

  3. 3

    Сделайте первый тестовый запрос

    Скопируйте пример curl из документации, вставьте свой ключ и выполните в терминале. Вы получите JSON с ID, короткой ссылкой и URL для скачивания PNG. Откройте PNG в браузере — это ваш первый QR-код, созданный через API. Весь процесс от регистрации до первого рабочего QR — около 5 минут.

  4. 4

    Интегрируйте в свой код

    Перенесите логику запроса в свой стек: Python (httpx/requests), Node.js (fetch/axios), PHP (Guzzle), Go (net/http), 1С (HTTPСоединение). Используйте переменные окружения для хранения API-ключа — никогда не хардкодьте ключ в коде. В production-среде мониторьте заголовки X-RateLimit-Remaining, чтобы не превысить лимиты тарифа.

  5. 5

    Подключите webhook для аналитики

    В кабинете → «API» → «Webhooks» добавьте URL вашего endpoint и secret (произвольная строка). При каждом сканировании QR мы отправим POST с JSON-данными и заголовком X-Webhook-Signature — проверяйте подпись на своей стороне (HMAC-SHA256 от тела запроса и вашего secret). Так события сканирований сразу попадают в вашу CRM или аналитику.

  6. 6

    Масштабируйтесь с batch и мониторингом

    Когда нужно создать тысячи QR-кодов, переходите на batch-эндпоинт: POST /qr-codes/batch принимает массив до 1 000 объектов. Задача уходит в очередь, вы получаете task_id и опрашиваете статус. Когда готово — скачиваете ZIP. Для мониторинга состояния вашей интеграции подпишитесь на наш status-page или подключите Uptime Robot к тестовому GET /api/v1/health.

Свой код vs QRcode.website API

ПараметрСвой код / библиотекаQRcode.website API
Время разработки интеграцииЧасы / дниЧасы (OpenAPI → codegen)
Batch-генерацияРучная загрузка CSV1 HTTP-запрос → 1000 QR
Webhook на каждый сканНетHMAC-подписанный POST
Аналитика через APIТолько в UIREST + фильтры + экспорт
Изменение ссылки без перепечаткиНевозможноPATCH /qr-codes/:id за 100 мс
Rate limit100 req/min (Free)3 000 req/min (Business)
Серверы в РФ (152-ФЗ)Зависит от сервиса
OpenAPI 3.1 спецификацияНет / устаревшая

Частые вопросы

Есть ли бесплатный API для генерации QR-кодов?

Да. Бесплатный тариф QRcode.website предоставляет полный доступ к REST API без ограничений по функциональности. На бесплатном тарифе доступны все эндпоинты: создание статических и динамических QR-кодов, массовая генерация (batch до 10 QR за запрос), аналитика, управление доменами, webhook. Ограничения бесплатного тарифа только количественные: 100 запросов в минуту, 10 000 запросов в сутки, максимум 50 QR-кодов в аккаунте. Регистрация занимает 30 секунд, карта не требуется. Это даёт возможность полноценно протестировать интеграцию перед переходом на платный тариф. В отличие от многих конкурентов, мы не ограничиваем batch-функциональность на бесплатном тарифе — можно проверить всю логику массовой генерации в реальных условиях.

Как сгенерировать QR-код через API?

Один HTTP-запрос — один QR-код. Сделайте POST-запрос на /api/v1/qr-codes с заголовком Authorization: Bearer qrcw_<ваш_ключ> и телом в JSON: поле type (URL, VCARD, WIFI, TEXT, EMAIL, PHONE, EVENT и другие), поле content с содержимым (например, URL), опциональное поле dynamic: true для динамического QR, опциональное поле design с параметрами дизайна (foreground, background, logo, shape). В ответе — объект с id, short_url (для динамических), и объект downloads со ссылками на PNG, SVG и PDF. PNG можно скачать напрямую или получить в base64, добавив параметр format=base64 к URL скачивания. Полный пример curl, Python, JavaScript и PHP — в разделе документации «Быстрый старт».

Как интегрировать QR-коды в 1С?

Интеграция 1С с нашим API занимает 1–2 дня разработки. Основной инструмент — объект HTTPСоединение встроенного языка 1С (доступен с версии 8.3.6). Алгоритм: в обработчике события (например, ПередПечатью накладной или ПриЗаписи объекта) создаёте HTTP-соединение с нашим сервером, формируете тело запроса в JSON, выполняете POST-запрос с заголовком Authorization: Bearer qrcw_..., разбираете JSON-ответ и извлекаете URL изображения PNG из поля downloads.png. Полученный PNG можно встроить в макет печатной формы через объект ПолеКартинка. Для хранения API-ключа используйте Константу или Параметр сеанса, не хардкодьте в коде модуля. Если 1С работает в облаке с ограниченным доступом к интернету — используйте наш IP-whitelist (статический IP для исходящих запросов предоставляется по запросу на Enterprise-тарифе). Полный пример кода на встроенном языке 1С — в нашей документации.

Как использовать QR API в Python?

Установите httpx или requests, добавьте API-ключ в переменную окружения (например, QRCW_API_KEY). Пример с httpx: import httpx; client = httpx.Client(headers={'Authorization': f'Bearer {api_key}'}); resp = client.post('https://app.qrcode.website/api/v1/qr-codes', json={'type': 'URL', 'content': 'https://example.com', 'dynamic': True}); data = resp.json(); png_url = data['downloads']['png']. Для скачивания самого PNG: image_bytes = httpx.get(png_url).content и сохраните через open('qr.png', 'wb').write(image_bytes). Для массовой генерации используйте /qr-codes/batch — передайте список объектов. Ответ будет содержать task_id; опрашивайте GET /tasks/:id до status == 'done', затем скачивайте ZIP по ссылке из ответа. Пример с asyncio и httpx.AsyncClient ускорит параллельную обработку больших батчей. Полный Jupyter Notebook с примерами — в нашей документации на GitHub.

Какие форматы возвращает QR API — PNG, SVG или base64?

По умолчанию API возвращает в ответе три URL для скачивания файлов: PNG (растровый, подходит для большинства задач), SVG (векторный, масштабируется без потери качества до любого размера — рекомендуем для типографской печати), PDF (PDF-файл с векторным QR, удобен для встраивания в документы). Все три формата доступны сразу в ответе на POST /qr-codes в объекте downloads. Также поддерживается base64-режим: добавьте параметр include_base64: true в тело запроса — ответ дополнится полем base64_png со строкой вида data:image/png;base64,.... Размер PNG настраивается параметром size (от 100 до 2000 пикселей по умолчанию 300). Коррекция ошибок контролируется параметром error_correction (L/M/Q/H, по умолчанию M — оптимальный баланс между размером модуля и надёжностью считывания).

Сколько стоит QR API?

Тарификация построена по аккаунтам, не по количеству сгенерированных QR. Бесплатный тариф: 0 рублей, 100 req/min, 10 000 req/сутки, до 50 QR-кодов. Pro: от 499 рублей в месяц, 600 req/min, без суточного лимита, до 5 000 QR-кодов, webhook, кастомный домен. Business: от 1 990 рублей в месяц, 3 000 req/min, batch до 1 000, без лимита QR-кодов, SLA 99,9%. Enterprise: индивидуально, без ограничений, выделенная инфраструктура, SLA 99,99%, интеграция с 1С под ключ, поддержка 24/7. Оплата в рублях через ЮKassa (карты РФ, СБП, ЮMoney). Сравнение тарифов с полным списком возможностей — на странице /pricing.

Есть ли лимиты на запросы к API?

Да, rate limiting работает по скользящему окну в 60 секунд на уровне API-ключа. Текущие лимиты: Бесплатный — 100 req/min и 10 000 req/сутки. Pro — 600 req/min, без суточного ограничения. Business — 3 000 req/min. Enterprise — без ограничений (или кастомные лимиты по договору). Текущее состояние лимитов возвращается в заголовках каждого ответа: X-RateLimit-Limit (максимум в окне), X-RateLimit-Remaining (осталось), X-RateLimit-Reset (Unix-timestamp сброса окна). При превышении лимита API возвращает HTTP 429 Too Many Requests с заголовком Retry-After в секундах. Рекомендуем добавить обработку 429 с экспоненциальной задержкой в вашем клиенте. Batch-эндпоинт потребляет 1 единицу лимита за вызов, независимо от количества QR в батче.

Как работают webhooks и как их настроить?

Webhook — это HTTP POST-запрос от нашего сервера на ваш endpoint при наступлении события. Поддерживаемые события: qr.scanned (QR-код отсканирован), link.clicked (клик по короткой ссылке), form.submitted (отправка формы мини-сайта). Настройка: в кабинете → API → Webhooks → добавьте URL вашего endpoint (должен отвечать на POST и возвращать 2xx в течение 5 секунд) и секрет (произвольная строка). Формат тела запроса: JSON с полями event, data (зависит от типа события) и timestamp. Подпись в заголовке X-Webhook-Signature — это HMAC-SHA256 от raw-тела запроса с вашим секретом. Проверка на Python: hmac.compare_digest(expected_sig, received_sig). При неудаче (не 2xx или таймаут) повторная попытка через 1 мин, 5 мин, 30 мин, 2 часа, 24 часа. История попыток доставки видна в кабинете. Для тестирования используйте RequestBin или webhook.site — вставьте временный URL и посмотрите структуру реального события.

Поддерживается ли интеграция с amoCRM и Bitrix24?

Да. amoCRM интегрируется через исходящие webhooks amoCRM: при смене стадии сделки amoCRM шлёт запрос на ваш сервер, который вызывает наш API и прикрепляет QR к сделке. Готовое решение — виджет в marketplace amoCRM (в разработке, ожидается Q3 2026). До выхода виджета — интеграция через Make (Integromat) или n8n: триггер amoCRM → HTTP-запрос к нашему API → обновление поля в amoCRM. Bitrix24 интегрируется аналогично через исходящие события Bitrix24 (webhook). Marketplace-приложение Bitrix24 — в роадмапе Q4 2026. Для обоих CRM работает схема через Zapier или Make без программирования: примеры в нашей документации. Для корпоративных инсталляций Bitrix24 On-Premise — прямая интеграция через REST API (наш и Bitrix24) силами разработчика, подробные примеры кода в документации.

Можно ли менять содержимое QR-кода после создания?

Да, но только для динамических QR-кодов. При создании QR с флагом dynamic: true изображение кода зашивает короткую ссылку вида qrcode.website/r/abc123 — это неизменная часть. Целевой URL за этой ссылкой можно менять в любой момент: PATCH /api/v1/qr-codes/:id/destination с телом {'destination': 'https://новый-url.com'} — изменение применяется немедленно, все уже распечатанные QR начинают вести на новый адрес. Это ключевое преимущество динамических QR: печатный тираж не нужно переиздавать при смене лендинга, меню, акции или контактных данных. Дизайн самого QR-кода (изображение) также можно обновить через PATCH — но это изменит только файл в CDN, физически распечатанные коды останутся прежними и продолжат работать (они ведут на короткую ссылку, а не хранят конечный URL).

Где хранятся данные — есть ли соответствие 152-ФЗ?

Инфраструктура QRcode.website полностью размещена на российских серверах в датацентрах на территории РФ. Персональные данные пользователей (имя, email, платёжные данные) обрабатываются и хранятся в России в соответствии с требованиями 152-ФЗ. Данные аналитики сканирований (IP-адрес усечённый, гео на уровне города, тип устройства) также хранятся на российских серверах. Мы не передаём данные третьим лицам и не используем зарубежные CDN для хранения пользовательских данных. Оплата обрабатывается через ЮKassa (российский агрегатор). Для Enterprise-клиентов доступна отдельная инсталляция с полной изоляцией данных. По запросу предоставляем DPA (соглашение об обработке данных) и заключаем договор на обработку персональных данных.

Есть ли SDK для Node.js, Python или PHP?

Официальные SDK в активной разработке. Ожидаемые релизы: Node.js SDK — Q3 2026, Python SDK — Q3 2026, PHP SDK — Q4 2026, Go SDK — Q1 2027. До выхода официальных SDK рекомендуем два подхода. Первый — сгенерировать клиент из нашей OpenAPI 3.1 спецификации с помощью openapi-generator-cli (поддерживает 50+ языков, включая Python, PHP, Java, Swift, Kotlin, Rust) или Speakeasy (генерирует типизированные SDK с retry-логикой и pagination). Команда: openapi-generator-cli generate -i https://app.qrcode.website/api/v1/openapi.json -g python -o ./qrcw-client. Второй — использовать обёртку на httpx/requests/axios с базовой логикой авторизации и retry — примеры есть в нашей документации на GitHub. Postman-коллекция с полным набором запросов доступна в кабинете для импорта одной кнопкой.

Получите тестовый API-ключ за 30 секунд

Бесплатный тариф: 100 запросов в минуту, до 50 QR-кодов, batch, webhook, аналитика. Карта не нужна. OpenAPI 3.1 документация открыта.