Перейти к содержимому

Витрина QR · обновлено 5 октября 2026

Программный доступ: API Витрины QR

Полевое руководство

Как вести короткие ссылки, постоянные страницы и витрины товаров запросами из своей программы: токен из кабинета, адреса запросов, пределы и что API не отдаёт.

Подробнее о задаче

Программный доступ — это те же короткие ссылки, постоянные страницы и витрины товаров, но без интерфейса: запросом из вашей программы. Работает по токену, который выпускается в кабинете; токен передаётся заголовком Authorization и в любой момент отзывается.

От задачи — к результату
Пример по теме

Не больше 300 запросов в час на токен. Технические пределы общие с интерфейсом — пять страниц и две витрины: программный доступ другой способ работы, а не обход ограничений. Короткие ссылки этому пределу не подчиняются. Перед заказом серверной услуги проверьте её цену и доступный объём операций.

Пример и ограничения

Как это работает

Токен выпускается в кабинете и показывается один раз: сервер хранит только его отпечаток. Запросы идут на адреса, начинающиеся с /api/v1/, тело и ответ — JSON; единственное исключение — ручка QR, отдающая картинку. Всё, что создано по токену, сразу принадлежит вашему аккаунту и видно в кабинете.

Товароучётная программа при поступлении партии создаёт короткую ссылку на карточку товара и печатает её на этикетке. Через месяц карточка переезжает — программа меняет цель запросом, напечатанные этикетки продолжают работать.

Разбор и практические решения

Токен: выпуск, хранение, отзыв

Токен доступа — не то же самое, что вход в кабинет. Сессия браузера живёт в устройстве и гаснет при смене пароля; токен нужен программе на сервере и обязан это переживать. Поэтому он выпускается отдельно и отзывается отдельно.

При выпуске токен показывается ровно один раз. В базе остаётся только его отпечаток, поэтому «напомнить» токен сервис не может физически — утраченный отзывают и выпускают новый. Это то же правило, что и у кодов управления страницами.

Отзыв мгновенный: следующий запрос с отозванным токеном получает тот же отказ, что и запрос с выдуманным. Чужой токен отозвать нельзя, и попытка это сделать неотличима от обращения к несуществующему.

Первые три шага
  1. Войдите в кабинет и выпустите токен в разделе программного доступа — сохраните его сразу.
  2. Проверьте связь: GET /api/v1/account с заголовком Authorization: Bearer <токен> вернёт ваш тариф и пределы.
  3. Создайте первую ссылку: POST /api/v1/short-links с телом {"targetUrl": "example.ru/akciya"}.

В ответе придут короткий адрес и код управления. Код нужен, чтобы править ссылку и без API — например с телефона на посадочной странице.

Какие запросы бывают

Адреса построены единообразно: список и создание живут на общем адресе, отдельный объект — на адресе с коротким кодом. Правка принимается методом PATCH, и отсутствующее поле означает «оставить как было»: скрипт, меняющий заголовок, не сотрёт текст страницы.

Из общего правила выбивается одна ручка: GET /api/v1/qr отвечает не JSON, а картинкой — вектором SVG с заголовком image/svg+xml. Она рисует код по любому содержимому, а не только по вашим ссылкам: параметр data принимает адрес, текст, строку Wi-Fi — что угодно. Уровень коррекции задаётся параметром ec (L, M, Q, H; по умолчанию M), размер картинки — параметром size от 128 до 2048 пикселей.

Вектор выбран намеренно: он масштабируется под печать любого размера без потери чёткости, и его принимают типографии. Версия кода и выбранный уровень коррекции возвращаются заголовками x-qr-version и x-qr-ec-level — по ним видно, насколько плотным получился рисунок.

Адреса программного доступа
ЗапросЧто делаетЧто в теле
GET /api/v1/accountтариф, пределы и счётчики—
GET /api/v1/qrнарисовать QR вектором SVGпараметры data, ec, size
GET /api/v1/short-linksсписок ваших коротких ссылок—
POST /api/v1/short-linksсоздать короткую ссылкуtargetUrl, title
GET /api/v1/short-links/<код>ссылка и статистика переходов—
PATCH /api/v1/short-links/<код>сменить цель или подписьtargetUrl, title
GET /api/v1/pagesсписок ваших постоянных страниц—
POST /api/v1/pagesсоздать постоянную страницуpageType, title, textContent, links
GET /api/v1/pages/<код>страница, настройки и открытия—
PATCH /api/v1/pages/<код>правка содержимого и настроеклюбые поля страницы
GET /api/v1/catalogsсписок ваших витрин без состава—
POST /api/v1/catalogsопубликовать витринуshop, description, контакты, products
GET /api/v1/catalogs/<код>витрина целиком, открытия и источники—
PATCH /api/v1/catalogs/<код>правка цен, состава и контактовлюбые поля витрины
GET /api/v1/catalogs/<код>/ordersзаказы покупателей этой витрины—

Витрины: почему состав и заказы разведены

Витрина — самый тяжёлый объект сервиса: логотип и обложка хранятся строками data:, а товаров бывает сотня. Поэтому список витрин отдаёт только карточки — название, число товаров, открытия и заказы. Полный состав приходит по адресу конкретной витрины, и запрос за списком не превращается в мегабайты трафика.

Заказы вынесены на собственный адрес по другой причине. В них лежат имя и контакт покупателя, а такие сведения не должны приезжать заодно с ценами, когда программа синхронизирует остатки. Запрос за составом витрины персональных данных не содержит вовсе.

Правка витрины устроена как правка страницы: PATCH с одним полем меняет только его. Скрипт, обновляющий цены по выгрузке, не сотрёт контакты и описание. Каждая программная правка попадает в ту же историю версий, что и правка руками, — то есть откатывается из управления витриной.

Как выглядят отказы

Ответ всегда JSON и всегда содержит поле ok. При отказе рядом лежат короткий код ошибки для программы и объяснение по-русски для человека, который будет читать журнал.

Отдельно стоит запомнить одно решение: чужой объект отвечает «не найдено», а не «нет доступа». Разница принципиальная — иначе перебором адресов можно было бы выяснить, какие ссылки существуют у других владельцев.

Коды отказов
КодКогда приходит
api_token_requiredтокена нет, он выдуман, отозван или аккаунт заблокирован
rate_limitedбольше 300 запросов в час на этот токен
invalid_target_urlцель ссылки не http(s) или это уже наш короткий адрес
page_limit_reachedисчерпан технический предел по страницам
catalog_limit_reachedисчерпан технический предел по витринам
short_link_not_foundссылки нет или она принадлежит другому аккаунту
qr_page_not_foundстраницы нет или она принадлежит другому аккаунту
catalog_not_foundвитрины нет или она принадлежит другому аккаунту
data_requiredв запросе QR не передано содержимое кода
bad_ec_levelуровень коррекции не L, M, Q или H
payload_too_largeсодержимое не помещается в QR даже сороковой версии

Чего API не отдаёт — и почему

Статистика через API ровно та же, что в кабинете: число открытий и переходов, разбивка по дням и по источникам. Сведений о посетителях в ней нет, потому что их нет и в базе: переходы считаются без кук, без отпечатков браузера и без записи адреса перешедшего.

Это не пробел, который когда-нибудь заполнится «расширенной аналитикой». Обещание «считаем переходы, не людей» закреплено тестами сервиса, и программный доступ его не обходит: отдать через API то, чего не собираешь, невозможно.

Пилот интеграции без большого проекта

Начните с одной учебной выгрузки и одного результата: создать короткую ссылку, получить QR в SVG или опубликовать небольшой каталог. Не переносите весь ассортимент и не меняйте рабочую учётную систему до того, как этот путь воспроизводимо пройдёт на тестовых данных.

Для совместного пилота пришлите описание своей аудитории или интеграции, адрес будущего материала и критерий результата. Секретный токен, реальные заказы и клиентскую базу присылать нельзя.

Порядок подключения

Пошаговая инструкция

Порядок подключения

  1. Выпустите токен в кабинете и сохраните его
  2. Проверьте связь запросом GET /api/v1/account
  3. Создавайте ссылки и страницы запросами POST
  4. Читайте статистику запросом GET по адресу объекта
  5. Отзовите токен, если он больше не нужен или мог утечь

Перед печатью или публикацией

До боевого запуска

  • Токен хранится в переменной окружения, а не в коде
  • Программа готова к ответу rate_limited и повторяет запрос позже
  • Коды управления, пришедшие при создании, сохранены
  • Ненужные токены отозваны

Честные границы

Что сервис делает и чего не делает

  • Создавать и править короткие ссылки без интерфейса
  • Создавать и править постоянные QR-страницы
  • Публиковать витрины товаров и обновлять цены по своей выгрузке
  • Забирать заказы покупателей в свою учётную программу
  • Получать готовый QR вектором SVG — под печать любого размера
  • Читать статистику переходов и открытий по дням и источникам
  • Показать, кто открывал страницу или переходил по ссылке — таких сведений сервис не собирает
  • Выдать чужие объекты: не ваш адрес отвечает «не найдено», а не «нет доступа»
  • Обойти технические пределы по страницам и витринам
  • Вернуть утраченный токен — только отозвать и выпустить новый

Полевое руководство

Программный доступ: API Витрины QR: вопросы

7 вопросов
Как узнать условия программного доступа?

Токен выпускается в кабинете; технические пределы те же, что и в интерфейсе. Для платного предложения должны быть заранее указаны сумма, доступные операции и срок обслуживания. Введение платных услуг само по себе не меняет технический способ запроса по токену.

Что будет с объектами, если отозвать токен?

Ничего: ссылки и страницы продолжат работать и останутся в кабинете. Токен — это ключ к управлению, а не владелец объектов.

Можно ли создавать через API витрины товаров?

Да, с 6 августа 2026: витрина публикуется запросом POST /api/v1/catalogs, цены и состав правятся через PATCH, заказы забираются с адреса /orders. Текущий технический предел тот же, что в интерфейсе, — две витрины.

Придёт ли уведомление, когда покупатель оформил заказ?

Нет, о заказах сервис не пишет. Их забирает ваша программа запросом GET /api/v1/catalogs/<код>/orders — когда сама решит спросить, хоть раз в минуту. Письмом приходит только недельная сводка открытий, если вы её включили.

Есть ли готовый коннектор для ИИ-ассистентов?

Пока нет. Коннектор MCP запланирован отдельным шагом после того, как API поработает у первых пользователей и перестанет меняться. Сейчас доступен обычный REST.

Сколько живёт токен?

Пока вы его не отзовёте. Срока годности у него нет — именно поэтому его стоит держать в переменной окружения и отзывать при любом подозрении на утечку.

Как получить картинку кода запросом?

GET /api/v1/qr?data=<содержимое> отдаёт вектор SVG. Дополнительно принимаются ec — уровень коррекции, и size — размер картинки в пикселях. Растр не отдаётся: SVG печатается в любом размере без потери чёткости, а перевести его в PNG умеет почти всё.

Продолжить работу

Источники и проверка
Источники и проверка

Материал обновлён: 5 октября 2026. Дата редакции не означает новую проверку нормативных источников. Перед применением проверьте действующую редакцию по ссылке. Методика проверки.