Go 1.22+

Lix.li Go SDK

SDK oficial de Go para la API de acortamiento de URL y analítica de enlaces de Lix.li. Cero dependencias externas. Crea enlaces cortos, gestiona grupos y rastrea clics con Go idiomático usando estructuras, errores y tipos de puntero opcionales.

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
}
Características

Todo lo necesario para integraciones con API de acortamiento de URL en Go

Construido solo con la biblioteca estándar, cero dependencias externas. Go idiomático con estructuras, errores y tipos de puntero opcionales.

Gestión de enlaces

Crea, obtén, actualiza, elimina y lista enlaces cortos. CRUD completo con estructuras tipadas. Tipos de puntero opcionales para campos anulables.

Gestión de grupos

Organiza enlaces en grupos. Crea grupos rotativos para pruebas A/B de páginas de destino. CRUD completo con respuestas de estructuras.

Cuenta y API de uso

Recupera perfil de cuenta, detalles de plan y límites de uso en tiempo real para enlaces, API y enlaces masivos.

Cero dependencias

Solo biblioteca estándar. Sin dependencias externas. Huella pequeña, riesgo de cadena de suministro cero.

Errores tipados

6 tipos de errores dedicados que envuelven un LixError base. Usa errors.As() para una coincidencia precisa con datos de validación.

HTTPClient personalizado

Inyecta cualquier cliente compatible con net/http a través de la interfaz HTTPClient. Configura tiempos de espera, proxies o mocks para pruebas.

Inicio rápido

Comienza en 30 segundos

Go puro sin dependencias externas. Funciona con la biblioteca estándar desde Go 1.22+.

Go 1.22+ MIT License Stdlib Only
1
Instala el paquete

Añade el SDK a tu módulo Go con go get.

 go get github.com/lix-url/go-sdk/lix
2
Instancia el cliente

Pasa tu clave API. Opcionalmente inyecta un HTTPClient personalizado para tiempos de espera, proxies o pruebas.

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
Crea tu primer enlace

Acorta una URL y recibe un LinkShortenResult tipado con la URL corta e información de uso.

API de grupos

Organiza y rota enlaces

Los grupos ayudan a categorizar enlaces por campaña, equipo o proyecto. Los grupos rotativos habilitan pruebas A/B distribuyendo el tráfico entre múltiples enlaces.

  • Create(name, desc, rotate) Crea un grupo con nombre, puntero de descripción opcional y modo de rotación.
  • Get(id) Recupera un grupo por ID con todos sus metadatos.
  • Update(id, name, desc, rotate) Renombra, actualiza descripción o cambia el modo de rotación.
  • Delete(id) Elimina un grupo por ID.
  • List(limit, fromID) Paginación con GroupsResult tipado y 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 cuenta y uso

Cuenta y detalles de uso

Recupera tu perfil, plan y límites de uso en tiempo real: todo devuelto como estructuras anidadas con mapeo completo de etiquetas 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, nombre, email, created_datetime

User

Nombre, email, created_datetime

Plan

ID, nombre, start_datetime, end_datetime

Usage

Enlaces, API, masivos: cada uno con Limit (*int), Used (int), Remaining (*int)

Manejo de errores

6 errores tipados para Go idiomático

Captura exactamente lo que necesitas con errors.As(). Todos los errores envuelven LixError. ValidationError incluye los datos completos de errores de validación a nivel de campo en 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. Accede a Data para errores de campo.

UnauthorizedException

401 — Clave API inválida o autenticación faltante.

NotFoundException

404 — Enlace o grupo no encontrado.

RateLimitException

429 — Límite de tasa excedido.

ServerException

500 — Error del servidor inesperado.

HttpClientException

Fallo de red / transporte.

Todos los errores envuelven LixError, que implementa error. Usa errors.As() para una coincidencia segura de tipos. Captura la clase base LixError para cualquier error de SDK o apunta a tipos específicos para un manejo granular.

Ecosistema

SDKs oficiales para pilas populares

Usa la misma API de Lix.li desde PHP, JavaScript, Python o Go con SDKs adaptados a cada ecosistema.

Python SDK
Cliente Python tipado para enlaces cortos, grupos, analítica y automatización. Construido para aplicaciones modernas en Python y flujos de trabajo.
Go SDK
SDK nativo de Go con estructuras tipadas, soporte de contexto y manejo de errores idiomático para integraciones con API de acortamiento de URL.
PHP SDK
SDK moderno de PHP con DTOs tipados, modelos de solo lectura, excepciones dedicadas e instalación vía Composer.
JS SDK
SDK de JavaScript basado en Promises para entornos Node.js y navegador. Crea y gestiona enlaces cortos con una experiencia de desarrollo limpia.

¿Listo para acortar enlaces en Go?

Instala el SDK, obtén una clave API y comienza a crear enlaces cortos en menos de un minuto.