Go 1.22+

Lix.li Go SDK

SDK oficial de Go para a API de encurtamento de URL e análise de links do Lix.li. Zero dependências externas. Crie links curtos, gerencie grupos e rastreie cliques com Go idiomático usando estruturas, erros e tipos de ponteiro opcionais.

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
}
Recursos

Tudo que você precisa para integrações com API de encurtamento de URL em Go

Construído apenas com a biblioteca padrão, zero dependências externas. Go idiomático com estruturas, erros e tipos de ponteiro opcionais.

Gerenciamento de links

Crie, obtenha, atualize, exclua e liste links curtos. CRUD completo com estruturas tipadas. Tipos de ponteiro opcionais para campos anuláveis.

Gerenciamento de grupos

Organize links em grupos. Crie grupos rotativos para testes A/B de páginas de destino. CRUD completo com respostas de estruturas.

Conta e API de uso

Recupere perfil de conta, detalhes de plano e limites de uso em tempo real para links, API e links massivos.

Zero dependências

Apenas biblioteca padrão. Sem dependências externas. Pegada pequena, risco de cadeia de suprimento zero.

Erros tipados

6 tipos de erros dedicados que envolvem um LixError base. Use errors.As() para uma correspondência precisa com dados de validação.

HTTPClient personalizado

Injete qualquer cliente compatível com net/http através da interface HTTPClient. Configure timeouts, proxies ou mocks para testes.

Início rápido

Comece em 30 segundos

Go puro sem dependências externas. Funciona com a biblioteca padrão a partir do Go 1.22+.

Go 1.22+ MIT License Stdlib Only
1
Instale o pacote

Adicione o SDK ao seu módulo Go com go get.

 go get github.com/lix-url/go-sdk/lix
2
Instancie o cliente

Passe sua chave de API. Opcionalmente injete um HTTPClient personalizado para timeouts, proxies ou testes.

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
Crie seu primeiro link

Encurte uma URL e receba um LinkShortenResult tipado com a URL curta e informações de uso.

API de grupos

Organize e rotacione links

Os grupos ajudam a categorizar links por campanha, equipe ou projeto. Grupos rotativos habilitam testes A/B distribuindo o tráfego entre vários links.

  • Create(name, desc, rotate) Crie um grupo com nome, ponteiro de descrição opcional e modo de rotação.
  • Get(id) Recupere um grupo por ID com todos os seus metadados.
  • Update(id, name, desc, rotate) Renomeie, atualize descrição ou altere o modo de rotação.
  • Delete(id) Exclua um grupo por ID.
  • List(limit, fromID) Paginação com GroupsResult tipado e 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 de conta e uso

Conta e detalhes de uso

Recupere seu perfil, plano e limites de uso em tempo real: tudo retornado como estruturas aninhadas com mapeamento completo de tags JSON.

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, nome, email, created_datetime

User

Nome, email, created_datetime

Plano

ID, nome, start_datetime, end_datetime

Uso

Links, API, massivos — cada um com Limit (*int), Used (int), Remaining (*int)

Tratamento de erros

6 erros tipados para Go idiomático

Capture exatamente o que você precisa com errors.As(). Todos os erros envolvem LixError. ValidationError inclui os dados completos de erros de validação a nível de campo em 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 — Entrada inválida. Acesse Data para erros de campo.

UnauthorizedException

401 — Chave de API inválida ou autenticação ausente.

NotFoundException

404 — Link ou grupo não encontrado.

RateLimitException

429 — Limite de taxa excedido.

ServerException

500 — Erro de servidor inesperado.

HttpClientException

Falha de rede / transporte.

Todos os erros envolvem LixError, que implementa error. Use errors.As() para uma correspondência segura de tipos. Capture a classe base LixError para qualquer erro de SDK ou aponte para tipos específicos para tratamento granular.

Ecossistema

SDKs oficiais para pilhas populares

Use a mesma API do Lix.li do PHP, JavaScript, Python ou Go com SDKs adaptados a cada ecossistema.

Python SDK
Cliente Python tipado para links curtos, grupos, análise e automação. Construído para aplicações Python modernas e fluxos de trabalho.
Go SDK
SDK nativo de Go com estruturas tipadas, suporte de contexto e tratamento de erros idiomático para integrações com API de encurtamento de URL.
PHP SDK
SDK moderno de PHP com DTOs tipados, modelos somente leitura, exceções dedicadas e instalação via Composer.
JS SDK
SDK de JavaScript baseado em Promises para ambientes Node.js e navegador. Crie e gerencie links curtos com uma experiência de desenvolvimento limpa.

Pronto para encurtar links em Go?

Instale o SDK, obtenha uma chave de API e comece a criar links curtos em menos de um minuto.