Saltar al contenido principal

API HTTP

uninvoice.app ofrece una API HTTP para que puedas crear entidades (clientes y proveedores), preparar y emitir facturas, descargar sus PDF y leer la configuración de tu empresa desde tus propias herramientas e integraciones. Es la misma API que utiliza la aplicación web.

Esta sección cubre la autenticación y las convenciones comunes a todos los endpoints. La lista completa está en la Referencia de endpoints. Si controlas la API desde un agente de IA, consulta el servidor MCP, que expone las mismas operaciones a través del Model Context Protocol.

URL base

La API está versionada bajo /v1:

EntornoURL base
Producciónhttps://api.uninvoice.app

Cada ruta de la referencia es relativa a esta base — por ejemplo GET /v1/invoices.

Autenticación

Todas las peticiones se autentican con un token Bearer en la cabecera Authorization:

Authorization: Bearer <token>

Se aceptan dos tipos de token, y ambos resuelven la misma identidad — un usuario actuando dentro de una empresa:

  • Tokens de API — tokens UUID de larga duración pensados para integraciones, scripts y clientes MCP. No caducan; siguen siendo válidos hasta que los eliminas. Es lo que debes usar para cualquier cosa que se ejecute fuera del navegador.
  • Tokens de sesión (JWT) — tokens de corta duración (24 h) que se emiten a la aplicación web cuando un usuario inicia sesión. Útiles para hacer scripting contra tu propia sesión, pero no pensados para integraciones permanentes.

Las peticiones sin token, con un token desconocido o con un token eliminado reciben 401 Unauthorized.

Crear un token de API

Los tokens de API se gestionan dentro de tu empresa. Con una sesión autenticada existente, crea uno con:

curl -X POST https://api.uninvoice.app/v1/companies/current/api-tokens \
-H "Authorization: Bearer <token-de-sesión>" \
-H "Content-Type: application/json" \
-d '{"description": "Integración de contabilidad"}'

La respuesta devuelve el registro del token:

{
"id": "3f2b1c9a-...-a1b2c3d4e5f6",
"description": "Integración de contabilidad",
"createdAt": "2026-07-03T10:00:00Z"
}

El id es el valor del token — envíalo como credencial Bearer en las peticiones siguientes. Guárdalo de forma segura; trátalo como una contraseña.

Lista y revoca tokens con:

  • GET /v1/companies/current/api-tokens — lista los tokens activos (solo metadatos; el valor solo se muestra una vez, al crearlo).
  • DELETE /v1/companies/current/api-tokens/{token_id} — revoca un token.

Un token está limitado a un usuario dentro de una empresa. Cada llamada que hace actúa como ese usuario en esa empresa; un token de API no puede cambiar de empresa.

Convenciones

Estas convenciones se aplican a todos los endpoints.

JSON

Las peticiones y respuestas son JSON. Los nombres de campo usan snake_case (p. ej. recipient_id, unit_price), salvo un pequeño conjunto de campos de metadatos explícitamente en camelCase (p. ej. createdAt).

Importes

Los importes monetarios son enteros en la unidad mínima de la moneda (céntimos) — nunca decimales. unit_price, subtotal, tax_amount y el total de la factura están todos en céntimos. Por ejemplo, 1.250,00 € es 125000. Las monedas son códigos ISO 4217 (currency_code, p. ej. EUR).

Fechas y horas

Las marcas de tiempo siguen RFC 3339 / ISO 8601 en UTC (p. ej. 2026-07-03T10:00:00Z).

Errores

Los errores usan códigos de estado HTTP estándar. La mayoría llevan un cuerpo de texto plano:

EstadoSignificado
400 Bad RequestLa petición es incorrecta o incumple una regla de negocio. El cuerpo describe qué corregir.
401 UnauthorizedToken ausente, inválido o revocado.
403 ForbiddenAutenticado, pero sin permiso para esta acción.
404 Not FoundEl recurso no existe o no es visible para tu empresa.
500 Internal Server ErrorError inesperado del servidor.

Algunas respuestas 403 que requieren una acción concreta devuelven un cuerpo JSON con un código error legible por máquina y un message para humanos, por ejemplo:

{
"error": "verifactu_authorization_required",
"message": "You must authorize uninvoice.app to report on your behalf before issuing invoices.",
"requiresAuthorizationUrl": "/verifactu/authorization"
}

Códigos que puedes encontrar: company_not_settled (completa antes el alta de la empresa), agreement_required (acepta antes los términos legales vigentes), verifactu_authorization_required (otorga antes el apoderamiento Veri*Factu) y not_available (la cuenta está fuera de la lista de disponibilidad actual).

Qué puede y qué no puede hacer un token

Un token de API puede leer y escribir los recursos de su empresa: entidades, facturas, proformas, impuestos, configuración de la empresa y el estado de autorización Veri*Factu. Las operaciones de cuenta y facturación propias de la aplicación web — inicio de sesión, cambio de empresa, suscripciones, recargas de puntos, aceptación legal y la función de administración «shadow user» — no forman parte de la superficie de integración y solo se documentan donde es relevante.

Continúa en la Referencia de endpoints.