Установите пакет
Добавьте SDK в ваш Go модуль с помощью go get.
go get github.com/lix-url/go-sdk/lix
Официальный Go SDK для API сокращения URL и аналитики ссылок Lix.li. Нулевые внешние зависимости. Создавайте короткие ссылки, управляйте группами и отслеживайте клики с идиоматичным Go с использованием структур, ошибок и опциональных типов указателей.
package main import ( "fmt" "log" "github.com/lix-url/go-sdk/lix" ) func main() { client := lix.NewClient("lix_live_xxx") result, err := client.Links().Create("https://example.com", nil) if err != nil { log.Fatal(err) } fmt.Println(result.Link.ShortURL) // https://lix.li/a3b7k2 fmt.Println(result.Usage.Remaining) // 42 }
Создан только с использованием стандартной библиотеки, нулевые внешние зависимости. Идиоматичный Go со структурами, ошибками и опциональными типами указателей.
Создавайте, получайте, обновляйте, удаляйте и перечисляйте короткие ссылки. Полный CRUD с типизированными структурами. Опциональные типы указателей для nil-значений.
Организуйте ссылки в группы. Создавайте ротирующие группы для A/B-тестирования посадочных страниц. Полный CRUD с ответами структур.
Получайте профиль аккаунта, детали плана и лимиты использования в реальном времени для ссылок, API-ссылок и массовых ссылок.
Только стандартная библиотека. Без внешних зависимостей. Небольшой размер, нулевой риск цепочки поставок.
6 выделенных типов ошибок, оборачивающих базовый LixError. Используйте errors.As() для точного сопоставления ошибок с данными валидации.
Внедрите любой клиент, совместимый с net/http, через интерфейс HTTPClient. Устанавливайте таймауты, прокси или моки для тестирования.
Чистый Go без внешних зависимостей. Работает со стандартной библиотекой от Go 1.22+.
Добавьте SDK в ваш Go модуль с помощью go get.
go get github.com/lix-url/go-sdk/lix
Передайте ваш API-ключ. При желании внедрите пользовательский HTTPClient для таймаутов, прокси или тестирования.
import "github.com/lix-url/go-sdk/lix" client := lix.NewClient("lix_live_xxx") // With custom HTTPClient httpClient := &http.Client{Timeout: 10 * time.Second} client := lix.NewClient("lix_live_xxx", httpClient)
Сократите URL и получите типизированный LinkShortenResult с короткой ссылкой и информацией об использовании.
Создавайте короткие ссылки с пользовательскими алиасами, UTM-параметрами, пикселями отслеживания, защитой паролем и датами истечения. Каждая операция возвращает типизированную структуру.
// Create a basic link result, err := client.Links().Create("https://example.com", nil) fmt.Println(result.Link.ShortURL) // With custom alias and UTM opts := lix.NewCreateLinkOptions() opts.Alias = strPtr("my-link") opts.Title = strPtr("My Page Title") opts.Tags = []string{"sale", "promo"} opts.UTM = map[string]string{ "utm_source": "google", "utm_medium": "email", "utm_campaign": "summer", } opts.TrackingPixelIDs = []int{1001, 1002} opts.IsPublic = true result, err := client.Links().Create("https://example.com", opts) // Password protection + expiration opts := lix.NewCreateLinkOptions() opts.Password = strPtr("secret123") opts.ActiveBeforeDatetime = strPtr("2026-12-31T23:59:59+00:00") result, err := client.Links().Create("https://example.com", opts) func strPtr(s string) *string { return &s }
Пример пагинации:
client.Links().List(&limit, &fromID)
возвращает следующую партию с ResponseMeta, содержащим общее количество и следующий URL. Передайте nil для значений по умолчанию API.
Группы помогают категоризировать ссылки по кампаниям, командам или проектам. Ротирующие группы позволяют проводить A/B-тестирование, распределяя трафик между несколькими ссылками.
// Create a regular group group, err := client.Groups().Create("Marketing", nil, false) fmt.Println(group.Name, group.URL) // Create a rotating group for A/B testing group, err := client.Groups().Create( "Landing Pages", strPtr("Rotating pages"), true, ) // Update group group, err := client.Groups().Update( 10, nil, strPtr("Updated description"), false, ) // List with pagination limit := 10 page, err := client.Groups().List(&limit, nil) for _, g := range page.Groups { fmt.Println(g.Name, g.URL) } fmt.Println(page.Meta.Total)
Получите ваш профиль, план и лимиты использования в реальном времени — всё возвращается как вложенные структуры с полным JSON tag mapping.
profile, err := client.Profile().Me() if err != nil { log.Fatal(err) } // Account info fmt.Println(profile.Client.Name, profile.Client.Email) fmt.Println(profile.User.Email) // Plan details fmt.Println(profile.Plan.Name, profile.Plan.EndDatetime) // Usage limits if profile.Usages.Links.Remaining != nil { fmt.Println(*profile.Usages.Links.Remaining) } fmt.Println(profile.Usages.APILinks.Used) fmt.Println(profile.Usages.MassLinks.Limit)
ID, имя, email, created_datetime
Имя, email, created_datetime
ID, название, start_datetime, end_datetime
Ссылки, API-ссылки, массовые ссылки — каждая с Limit (*int), Used (int), Remaining (*int)
Ловите точно то, что нужно, с помощью errors.As(). Все ошибки оборачивают LixError. ValidationError включает полные данные об ошибках валидации на уровне полей в Data.
import "errors" result, err := client.Links().Create("invalid-url", nil) if err != nil { var ve *lix.ValidationError var notFound *lix.NotFoundException var unauth *lix.UnauthorizedError var rateLimit *lix.RateLimitError var server *lix.ServerError switch { case errors.As(err, &ve): // Field-level validation errors fmt.Println("Validation:", ve.Data) case errors.As(err, ¬Found): fmt.Println("Not found") case errors.As(err, &unauth): // Invalid API key case errors.As(err, &rateLimit): // Too many requests case errors.As(err, &server): // 5xx server error default: // Generic Lix or network error log.Fatal(err) } }
400 — Неверный ввод. Доступ к Data для ошибок полей.
401 — Неверный API-ключ или отсутствующая авторизация.
404 — Ссылка или группа не найдены.
429 — Превышен лимит запросов.
500 — Неожиданная серверная ошибка.
Сбой сети / транспорта.
Все ошибки оборачивают LixError, который реализует error. Используйте errors.As() для типобезопасного сопоставления. Ловите базовый LixError для любой ошибки SDK или нацеливайтесь на конкретные типы для детальной обработки.
Используйте один и тот же API Lix.li из PHP, JavaScript, Python или Go с SDK, адаптированными под каждую экосистему.
Установите SDK, получите API-ключ и начните создавать короткие ссылки менее чем за минуту.