Установка через npm
Добавьте SDK в ваш проект Node.js или браузера.
npm install lix-url
Официальный JavaScript SDK для API сокращения URL Lix.li. Работает в средах Node.js и браузера. Создавайте короткие ссылки, управляйте группами и отслеживайте клики с async/await и чистыми DTO на основе классов.
// npm install lix-url const { Client } = require('lix-url'); const client = new Client('lix_live_xxx'); async function main() { const result = await client.links().create('https://example.com'); console.log(result.link.shortUrl); // https://lix.li/a3b7k2 } main();
Создан с async/await, чистыми DTO на основе классов и заменяемой функцией fetch для Node.js или браузера.
Создавайте, получайте, обновляйте, удаляйте и перечисляйте короткие ссылки. Полный CRUD с типизированными ответами классов.
Организуйте ссылки в группы. Создавайте ротирующие группы для A/B-тестирования посадочных страниц.
Получайте профиль аккаунта, детали плана и лимиты использования в реальном времени для ссылок и API-вызовов.
Каждый ответ API — это экземпляр обычного JavaScript-класса. Никаких сырых объектов — предсказуемая структура с доступом через точечную нотацию.
6 выделенных типов исключений для валидации, авторизации, ограничений скорости, серверных ошибок и сбоев транспорта.
Внедрите любую функцию, совместимую с fetch. Работает с Node.js fetch, undici или браузерным fetch из коробки.
Работает в любой среде Node.js или браузера с поддержкой fetch. Никаких тяжелых зависимостей — только чистый HTTP-клиент.
Добавьте SDK в ваш проект Node.js или браузера.
npm install lix-url
Передайте ваш API-ключ. При желании внедрите пользовательскую функцию fetch для тестирования или edge-рантаймов.
const { Client } = require('lix-url'); const client = new Client('lix_live_xxx'); // With custom fetch (e.g., for testing) const client = new Client('lix_live_xxx', myFetchFn);
Сократите URL и получите типизированный LinkShortenResult с короткой ссылкой и информацией об использовании.
const result = await client.links().create('https://example.com'); console.log(result.link.shortUrl); // https://lix.li/a3b7k2 // Links used: 42 / 100 console.log(result.usage.used, '/', result.usage.limit);
Создавайте короткие ссылки с пользовательскими алиасами, UTM-параметрами, пикселями отслеживания, защитой паролем и датами истечения. Каждая операция возвращает типизированный экземпляр класса.
// Create a basic link const result = await client.links().create('https://example.com'); // With custom alias and UTM const result = await client.links().create( 'https://example.com', 'summer-sale', // alias 'My Summer Sale', // title null, // groupId ['marketing', '2026'], // tags [], // meta { // utm source: 'newsletter', medium: 'email', campaign: 'summer-sale', }, [1, 2], // trackingPixelIds null, // activeBeforeDatetime null, // password true // isPublic ); // Password protection + expiration const result = await client.links().create( 'https://example.com', null, null, null, [], [], [], [], '2026-12-31T23:59:59Z', // activeBeforeDatetime 'secret123' // password );
Пример пагинации: $client->links()->list(limit: 100, fromId: 500) возвращает следующие 100 ссылок начиная с ID 500, с ResponseMeta, содержащим общее количество и следующий URL.
Группы помогают категоризировать ссылки по кампаниям, командам или проектам. Ротирующие группы позволяют проводить A/B-тестирование, распределяя трафик между несколькими ссылками.
// Create a regular group const group = await client.groups().create('Marketing'); console.log(group.name); // Create a rotating group for A/B testing const group = await client.groups().create( 'Landing Pages', null, true // isRotate ); // Update group const group = await client.groups().update( 10, null, 'Updated description' ); // List with pagination const response = await client.groups().list(10, 1000); for (const group of response.groups) { console.log(group.name); }
Получите ваш профиль, план и лимиты использования в реальном времени — всё возвращается как вложенные экземпляры классов с полным доступом к свойствам.
const profile = await client.profile().me(); // Account info console.log(profile.client.name, profile.client.email); console.log(profile.user.email); // Plan details console.log(profile.plan.name, profile.plan.endDatetime); // Usage limits console.log(profile.usages.links.remaining); console.log(profile.usages.apiLinks.used); console.log(profile.usages.massLinks.limit);
Метаданные организации и аккаунта.
Информация об аутентифицированном пользователе и детали аккаунта.
Текущая подписка и платежный период.
Лимиты API, квоты ссылок и оставшееся использование.
Ловите точно то, что нужно. Все исключения расширяют LixException. ValidationException включает полные данные об ошибках валидации на уровне полей в err.data.
const { ValidationException, NotFoundException, UnauthorizedException, RateLimitException, ServerException } = require('lix-url'); try { await client.links().create('invalid-url'); } catch (err) { if (err instanceof ValidationException) { // Field-level validation errors console.error('Validation:', err.data); } else if (err instanceof NotFoundException) { console.error('Not found:', err.message); } else if (err instanceof UnauthorizedException) { // Invalid API key } else if (err instanceof RateLimitException) { // Too many requests — retry after } else if (err instanceof ServerException) { // 5xx server error } else { // Generic Lix or network error console.error('Error:', err.message); } }
400 — Неверный ввод. Доступ к err.data для ошибок полей.
401 — Отсутствующие, неверные или просроченные API-учетные данные.
404 — Ссылка, группа или ресурс не найдены.
429 — Превышен лимит запросов.
500 — Неожиданная серверная ошибка.
Сбой сети / транспорта.
Все исключения расширяют LixException, который расширяет нативный Error. Ловите базовый класс для любой ошибки SDK или нацеливайтесь на конкретные классы для детальной обработки.
Используйте один и тот же API Lix.li из PHP, JavaScript, Python или Go с SDK, адаптированными под каждую экосистему.
Установите SDK, получите API-ключ и начните создавать короткие ссылки менее чем за минуту.