Go 1.22+

Lix.li Go SDK

Официальный 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
}
Возможности

Всё необходимое для интеграции с API сокращения URL в Go

Создан только с использованием стандартной библиотеки, нулевые внешние зависимости. Идиоматичный Go со структурами, ошибками и опциональными типами указателей.

Управление ссылками

Создавайте, получайте, обновляйте, удаляйте и перечисляйте короткие ссылки. Полный CRUD с типизированными структурами. Опциональные типы указателей для nil-значений.

Управление группами

Организуйте ссылки в группы. Создавайте ротирующие группы для A/B-тестирования посадочных страниц. Полный CRUD с ответами структур.

Аккаунт и API использования

Получайте профиль аккаунта, детали плана и лимиты использования в реальном времени для ссылок, API-ссылок и массовых ссылок.

Нулевые зависимости

Только стандартная библиотека. Без внешних зависимостей. Небольшой размер, нулевой риск цепочки поставок.

Типизированные ошибки

6 выделенных типов ошибок, оборачивающих базовый LixError. Используйте errors.As() для точного сопоставления ошибок с данными валидации.

Пользовательский HTTPClient

Внедрите любой клиент, совместимый с net/http, через интерфейс HTTPClient. Устанавливайте таймауты, прокси или моки для тестирования.

Быстрый старт

Начните работу за 30 секунд

Чистый Go без внешних зависимостей. Работает со стандартной библиотекой от Go 1.22+.

Go 1.22+ MIT License Stdlib Only
1
Установите пакет

Добавьте SDK в ваш Go модуль с помощью go get.

 go get github.com/lix-url/go-sdk/lix
2
Создайте клиент

Передайте ваш 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)
3
Создайте первую ссылку

Сократите URL и получите типизированный LinkShortenResult с короткой ссылкой и информацией об использовании.

API групп

Организуйте и ротируйте ссылки

Группы помогают категоризировать ссылки по кампаниям, командам или проектам. Ротирующие группы позволяют проводить A/B-тестирование, распределяя трафик между несколькими ссылками.

  • Create(name, desc, rotate) Создайте группу с названием, опциональным указателем описания и режимом ротации.
  • Get(id) Получите группу по ID со всеми метаданными.
  • Update(id, name, desc, rotate) Переименуйте, обновите описание или переключите режим ротации.
  • Delete(id) Удалите группу по ID.
  • List(limit, fromID) Пагинация с типизированным GroupsResult и ResponseMeta.
// 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)
API аккаунта и использования

Аккаунт и детали использования

Получите ваш профиль, план и лимиты использования в реальном времени — всё возвращается как вложенные структуры с полным 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)

ClientInfo

ID, имя, email, created_datetime

User

Имя, email, created_datetime

Plan

ID, название, start_datetime, end_datetime

Usage

Ссылки, API-ссылки, массовые ссылки — каждая с Limit (*int), Used (int), Remaining (*int)

Обработка ошибок

6 типизированных ошибок для идиоматичного Go

Ловите точно то, что нужно, с помощью 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, &notFound):
        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)
    }
}
ValidationException

400 — Неверный ввод. Доступ к Data для ошибок полей.

UnauthorizedException

401 — Неверный API-ключ или отсутствующая авторизация.

NotFoundException

404 — Ссылка или группа не найдены.

RateLimitException

429 — Превышен лимит запросов.

ServerException

500 — Неожиданная серверная ошибка.

HttpClientException

Сбой сети / транспорта.

Все ошибки оборачивают LixError, который реализует error. Используйте errors.As() для типобезопасного сопоставления. Ловите базовый LixError для любой ошибки SDK или нацеливайтесь на конкретные типы для детальной обработки.

Экосистема

Официальные SDK для популярных стеков

Используйте один и тот же API Lix.li из PHP, JavaScript, Python или Go с SDK, адаптированными под каждую экосистему.

Python SDK
Типизированный Python-клиент для коротких ссылок, групп, аналитики и автоматизации. Создан для современных Python-приложений и рабочих процессов.
Go SDK
Нативный Go SDK с типизированными структурами, поддержкой контекста и идиоматичной обработкой ошибок для интеграций с API сокращения URL.
PHP SDK
Современный PHP SDK с типизированными DTO, неизменяемыми моделями, выделенными исключениями и установкой через Composer.
JS SDK
JavaScript SDK на основе Promise для Node.js и браузерных сред. Создавайте и управляйте короткими ссылками с чистым опытом разработчика.

Готовы сокращать ссылки в Go?

Установите SDK, получите API-ключ и начните создавать короткие ссылки менее чем за минуту.