Livegest API
    v1 · REST · JSON

    API Pública

    Integra sistemas externos con tu cuenta Livegest. Toda la API es REST, acepta y devuelve JSON, y está autenticada con una clave por empresa (Bearer token).

    Especificación OpenAPI 3.1

    Descarga el archivo OpenAPI para generar automáticamente clientes (openapi-generator, Kiota, Orval, etc.) o impórtalo directamente en Postman, Insomnia o Swagger UI.

    OpenAPI v1

    Atual
    Publicado 2026-07

    Versión estable. Endpoints de clientes, artículos, documentos, cobros y series.

    openapi-generator-cli generate -i https://livegest.pt/openapi/v1.json -g typescript-fetch -o ./livegest-client-v1

    Seguro

    Autenticación por clave, aislada por empresa. Puedes revocarla en cualquier momento.

    Rápido

    Endpoints paginados. Límite de 120 peticiones por minuto por clave.

    Simple

    Una única URL base, una cabecera, JSON en el cuerpo.

    Empezar en 3 pasos

    1. Entra en tu cuenta → elige la empresa → menú Claves de APIGenerar clave. Copia y guarda el valor mostrado (solo aparece una vez).
    2. Guarda la clave en una variable de entorno de tu sistema (p. ej.: LIVEGEST_API_KEY). Nunca la pongas en código front-end.
    3. Envía peticiones con la cabecera Authorization: Bearer <clave> a la URL base:
    https://hocaajprcfuwuehakgom.supabase.co/functions/v1/public-api

    Autenticación

    Envía siempre la cabecera:

    Authorization: Bearer lg_live_xxxxxxxxxxxxxxxxxxxxxxxx
    • Las claves no válidas o revocadas devuelven 401 unauthorized.
    • El exceso de peticiones (120/min por clave) devuelve 429 rate_limited.
    • Puedes gestionar y revocar claves en Claves de API en el área de la empresa.

    Ejemplos

    curl -X GET "https://hocaajprcfuwuehakgom.supabase.co/functions/v1/public-api/v1/customers?limit=20" \
      -H "Authorization: Bearer lg_live_xxxxxxxxxxxxxxxxxxxxxxxx"

    Endpoints

    Meta

    GET/v1/me

    Devuelve la empresa asociada a la clave y los scopes.

    Clientes

    GET/v1/customers?limit=50&offset=0&search=

    Lista clientes (paginado).

    POST/v1/customers

    Crea cliente.

    Request
    { "name": "Empresa X, Lda.", "tax_id": "500000000", "email": "geral@x.pt" }
    GET/v1/customers/:id

    Obtiene cliente por id.

    PATCH/v1/customers/:id

    Actualiza campos del cliente.

    Request
    { "email": "nuevo@x.es" }
    DELETE/v1/customers/:id

    Elimina cliente.

    Artículos

    GET/v1/products?limit=50&offset=0&search=

    Lista artículos.

    POST/v1/products

    Crea artículo.

    Request
    { "name": "Consultoria", "unit_price_net": 100, "tax_rate": 23, "unit": "un" }
    GET/v1/products/:id

    Obtiene artículo por id.

    PATCH/v1/products/:id

    Actualiza campos del artículo.

    DELETE/v1/products/:id

    Elimina artículo.

    Documentos

    GET/v1/documents?doc_type=FT&status=issued&from=2026-01-01&to=2026-12-31

    Lista documentos, con filtros por tipo, estado y fecha.

    POST/v1/documents

    Crea documento (borrador o emitido si `issue: true`).

    Request
    {
      "doc_type": "FT",
      "series_id": "<uuid de la serie>",
      "issue_date": "2026-07-17",
      "customer_id": "<uuid del cliente>",
      "issue": true,
      "lines": [
        { "description": "Consultoria", "qty": 2, "unit_price_net": 100, "tax_rate": 23 }
      ]
    }
    GET/v1/documents/:id

    Obtiene documento con líneas y pagos.

    POST/v1/documents/:id/issue

    Emite un documento en borrador (asigna número, Veri*Factu, hash).

    POST/v1/documents/:id/cancel

    Anula un documento emitido.

    Pagos

    GET/v1/payments?document_id=

    Lista pagos (opcionalmente filtrados por documento).

    POST/v1/documents/:id/payments

    Registra un pago para el documento.

    Request
    { "amount": 123.00, "method_code": "MB", "payment_date": "2026-07-17" }

    Códigos de error

    400
    Datos no válidos o incompletos.
    401
    Clave ausente, no válida o revocada.
    403
    Falta el scope necesario en la clave.
    404
    Recurso no encontrado.
    429
    Límite de 120 peticiones/minuto superado.
    500
    Error interno.
    { "error": { "code": "unauthorized", "message": "Invalid API key" } }