Создавать ссылки руками нормально ровно до тех пор, пока это нормально. В момент, когда трекинговая ссылка нужна каждому заказу, реферальная — каждому пользователю, а QR-код — каждому объявлению, то же самое требуется уже программно. Для этого и существует API сокращателя ссылок — и поверхность у него настолько небольшая, что подключить его можно за одну чашку кофе.

Что можно автоматизировать

  • Ссылки под заказ или под пользователя, которые создаются ровно в тот момент, когда понадобились.
  • Пакетные ссылки для кампаний — по одной на канал, генерируются циклом из таблицы, а не руками.
  • QR-коды на лету для билетов, счетов, этикеток и накладных.
  • Данные о кликах, забранные обратно в вашу собственную панель, чтобы цифры жили там, куда команда и так смотрит.

Если вы не уверены, нужен ли вам API, честный критерий — объём и повторяемость: делаете одно и то же в браузере чаще пары раз в неделю — автоматизируйте.

Авторизация

Возьмите ключ на странице аккаунта и отправляйте его заголовком X-Api-Key в каждом запросе. Два правила, которые не обсуждаются: держите ключ на сервере — всё, что попало во фронтенд-JavaScript, публично, а утёкший ключ позволяет посторонним создавать ссылки от вашего имени — и немедленно меняйте его, если он хоть раз оказался в репозитории или в логах.

Создание ссылки

Один POST на /api/getLink.json с адресом назначения. Псевдоним, режим, срок и пароль можно передать тем же вызовом:

curl -X POST https://urlik.xyz/api/getLink.json -H "X-Api-Key: YOUR_KEY" -d "url=https://example.com/very/long/path" -d "alias=spring-sale"

В ответ приходит JSON с короткой ссылкой, адресом её QR-кода и адресом страницы статистики. Ссылки, созданные с ключом, привязаны к вашему аккаунту: они видны в панели управления, и их можно редактировать позже.

Деталь, которую стоит знать до того, как вы начнёте строить: псевдоним уникален на весь сервис. Если spring-sale уже занят, вы получите ошибку, а не молчаливую подмену, — так что либо обработайте этот случай, либо разведите псевдонимы по префиксам (acme-spring-sale).

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

GET /api/qr.json принимает данные плюс необязательные format, fg, bg, ecc и size и возвращает QR. Направляйте его на короткую ссылку, а не на сырой длинный URL: код получится чище и крепче, а адрес назначения останется редактируемым. Это тот самый паттерн динамического QR-кода, только сделанный из вашего бэкенда.

Чтение статистики

GET /api/stats.json возвращает по ссылке итоги, временной ряд, источники переходов, устройства и страны — те же цифры, что и на странице статистики, только в виде, который можно положить в свою админку.

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

Соберите так, чтобы не рвалось в три часа ночи

Эндпоинты простые; ломаются те интеграции, которые исходят из того, что ничего никогда не пойдёт не так. Четыре привычки, которые окупаются:

  • Всегда проверяйте ответ. Каждый вызов возвращает статус — прочитайте его. Классический баг: предположить успех и сохранить тело ошибки как короткую ссылку, а обнаружить это уже на отпечатанном счёте.
  • Никогда не блокируйте пользователя ссылкой. Если сокращение происходит внутри оформления заказа, медленный API превращается в медленное оформление. Уносите это в фоновую задачу или откатывайтесь на длинный URL с повтором позже. Длинный URL работает всегда — вот вам и страховка.
  • Кэшируйте то, что не меняется. Один и тот же адрес назначения не нужно сокращать дважды: сохраните короткую ссылку рядом с исходной записью и переиспользуйте. Дешевле, быстрее, и панель управления остаётся читаемой.
  • Отступайте при ошибках. Повторяйте с нарастающими паузами, а не в плотном цикле. Лимит, на который ответили штормом ретраев, так и остаётся лимитом.

Где API заканчивается

Два честных ограничения. Лимиты запросов существуют, и «щедро» не значит «бесконечно» — пакетные задачи нужно размеренно распределять, а не выстреливать разом. И ещё: API создаёт ссылки, но не решает, что в них должно быть. Размечайте ссылки UTM-метками прямо при создании (см. гид по UTM), иначе вы автоматизируете производство тысяч ссылок, которые не сможете отличить друг от друга в аналитике, — а это положение хуже, чем делать всё руками.

Коротко

Один эндпоинт на создание, один на QR, один на статистику, заголовок для авторизации. Держите ключ на сервере, проверяйте каждый ответ, уносите работу с критического пути, кэшируйте повторы и размечайте ссылки сразу при создании. Полный список параметров, коды ошибок и примеры живут в документации API; а если сначала хочется концептуальной базы, начните с того, что такое сокращатель ссылок.