Установка через pip
Добавьте SDK в ваше Python-окружение.
pip install lix-sdk
Официальный Python SDK для API сокращения URL и аналитики ссылок Lix.li. Создан с dataclasses, подсказками типов и чистыми именованными аргументами. Создавайте короткие ссылки, управляйте группами и отслеживайте клики с Pythonic простотой.
from lix_sdk import Client client = Client('lix_live_xxx') result = client.links().create('https://example.com') print(result.link.short_url) # https://lix.li/a3b7k2 print(result.usage.remaining) # 42
Создан с dataclasses, подсказками типов и чистыми именованными аргументами. Pythonic по дизайну.
Создавайте, получайте, обновляйте, удаляйте и перечисляйте короткие ссылки. Полный CRUD с именованными аргументами и опциональными значениями по умолчанию.
Организуйте ссылки в группы. Создавайте ротирующие группы для A/B-тестирования посадочных страниц. Полный CRUD с типизированными ответами dataclass.
Получайте профиль аккаунта, детали плана и лимиты использования в реальном времени для ссылок, API-ссылок и массовых ссылок.
Каждый ответ API — это @dataclass с полными подсказками типов. Чистый repr, автодополнение IDE и естественный доступ к атрибутам.
7 выделенных классов исключений, расширяющих базовый LixException. Ловите то, что нужно, получайте доступ к данным ошибок валидации в .data.
Передайте ваш собственный requests.Session для пользовательских таймаутов, повторных попыток или тестирования. Возвращается к сессии по умолчанию.
Требуется Python 3.8+ и requests. Установите через pip и сразу начните сокращать URL.
Добавьте SDK в ваше Python-окружение.
pip install lix-sdk
Передайте ваш API-ключ. При желании предоставьте пользовательский requests.Session для расширенного контроля.
from lix_sdk import Client client = Client('lix_live_xxx') # With custom session import requests session = requests.Session() session.headers.update({'X-Custom-Header': 'value'}) client = Client('lix_live_xxx', session=session)
Сократите URL и получите LinkShortenResult с короткой ссылкой и информацией об использовании.
result = client.links().create('https://example.com') print(result.link.short_url) # https://lix.li/a3b7k2 # API links used: 42 / 100 print(result.usage.used, '/', result.usage.limit)
Создавайте короткие ссылки с пользовательскими алиасами, UTM-параметрами, пикселями отслеживания, защитой паролем и датами истечения. Каждая операция возвращает типизированный dataclass.
# Create a basic link result = client.links().create('https://example.com') print(result.link.short_url) # With custom alias and UTM result = client.links().create( 'https://example.com', alias='my-link', title='My Page Title', tags=['sale', 'promo'], utm={'utm_source': 'google', 'utm_medium': 'email', 'utm_campaign': 'summer'}, tracking_pixel_ids=[1001, 1002], is_public=True, ) # Password protection + expiration result = client.links().create( 'https://example.com', password='secret123', active_before_datetime='2026-12-31T23:59:59+00:00', ) # Update a link updated = client.links().update(79697, title='New Title') print(updated.link.title)
Пример пагинации:
client.links().list(limit=20, from_id=79500)
возвращает следующие 20 ссылок с ResponseMeta, содержащим общее количество и следующий URL. Опустите оба для значений по умолчанию API.
Группы помогают категоризировать ссылки по кампаниям, командам или проектам. Ротирующие группы позволяют проводить A/B-тестирование, распределяя трафик между несколькими ссылками.
# Create a regular group group = client.groups().create('Marketing') print(group.name, group.url) # Create a rotating group for A/B testing group = client.groups().create( 'Landing Pages', description='Rotating landing pages', is_rotate=True, ) # Update group group = client.groups().update( 10, description='Updated description', ) # List with pagination page = client.groups().list(limit=10, from_id=1000) for g in page.groups: print(g.name, g.url) print(page.meta.total)
Получите ваш профиль, план и лимиты использования в реальном времени — всё возвращается как вложенные экземпляры dataclass с полным доступом к атрибутам.
profile = client.profile().me() # Account info print(profile.client.name, profile.client.email) print(profile.user.email) # Plan details print(profile.plan.name, profile.plan.end_datetime) # Usage limits print(profile.usages.links.remaining) print(profile.usages.api_links.used) print(profile.usages.mass_links.limit)
id, name, email, created_datetime
name, email, created_datetime
id, name, start_datetime, end_datetime
Ссылки, api_links, mass_links — каждая с limit, used, remaining
Ловите точно то, что нужно. Все исключения расширяют LixException. ValidationException включает полные данные об ошибках валидации на уровне полей в .data.
from lix_sdk import ( ValidationException, NotFoundException, UnauthorizedException, RateLimitException, ServerException, ) try: result = client.links().create('invalid-url') except ValidationException as e: # Field-level validation errors print('Validation:', e.data) except NotFoundException: print('Not found') except UnauthorizedException: # Invalid API key except RateLimitException: # Too many requests — retry after except ServerException: # 5xx server error except LixException as e: # Generic SDK error print('Error:', e)
400 — Неверный ввод. Доступ к e.data для ошибок полей.
401 — Неверный API-ключ или отсутствующая авторизация.
404 — Ссылка или группа не найдены.
429 — Превышен лимит запросов.
500 — Неожиданная серверная ошибка.
Сбой сети / транспорта.
Все исключения расширяют LixException, который расширяет Exception. Ловите базовый класс для любой ошибки SDK или нацеливайтесь на конкретные классы для детальной обработки.
Используйте один и тот же API Lix.li из PHP, JavaScript, Python или Go с SDK, адаптированными под каждую экосистему.
Установите SDK, получите API-ключ и начните создавать короткие ссылки менее чем за минуту.