SnapCost SnapCost API

API de SnapCost

Una API REST clara para recibos, facturas e informes listos para impuestos. JSON de entrada, JSON de salida. Auth con token Bearer. Diseñada para contables, integraciones ERP y tus propias automatizaciones.

URL base

https://snapcost.app/api

Formato

Cuerpos de petición y respuesta en JSON, UTF-8.

Autenticación

HTTP Bearer con una clave API.

Plan

El acceso a la API requiere el plan Business.

Autenticación

Cada petición debe incluir una cabecera Authorization con tu clave API.

Authorization: Bearer sk_live_••••••••••••••••••••••••••••••••

Las claves API están vinculadas a una única cuenta SnapCost y heredan los permisos y límites de esa cuenta. Se comportan idénticamente a una sesión de usuario autenticado — hoy no existe un sistema de scopes separado.

Trata las claves como contraseñas. Nunca las subas a control de versiones ni las expongas en código del navegador. Rótalas de inmediato si una clave puede haberse filtrado.

Gestión de claves API

Genera, lista y revoca claves desde el panel de SnapCost, o usa los endpoints de gestión de abajo (requieren un JWT autenticado, no una clave API, para evitar escaladas de privilegios).

GET/api/keysListar tus claves
POST/api/keysCrear una nueva clave
DELETE/api/keys/:idRevocar una clave

Crear una clave

POST /api/keys
Content-Type: application/json

{ "name": "Zapier production" }

Respuesta

{
  "id":        "9c1f…",
  "name":      "Zapier production",
  "prefix":    "sk_live_AbC",
  "plaintext": "sk_live_AbCDeFGhIJKlMnOPqRsTUVwxYZ0123456789…",
  "createdAt": "2026-04-21T10:42:18.000Z",
  "note":      "Store this key now — the full value will not be shown again."
}

La clave completa en texto plano se devuelve sólo una vez, en la creación. SnapCost almacena un hash SHA-256 y no puede recuperar el valor original. Límite: 10 claves activas por cuenta.

Inicio rápido

curl https://snapcost.app/api/receipts \
  -H "Authorization: Bearer $SNAPCOST_API_KEY"
const res = await fetch('https://snapcost.app/api/receipts', {
  headers: { Authorization: `Bearer ${process.env.SNAPCOST_API_KEY}` },
});
const { receipts } = await res.json();
import os, requests

r = requests.get(
    "https://snapcost.app/api/receipts",
    headers={"Authorization": f"Bearer {os.environ['SNAPCOST_API_KEY']}"},
)
receipts = r.json()["receipts"]

Recibos

Los recibos son gastos escaneados o introducidos manualmente.

GET/api/receiptsListar recibos
GET/api/receipts/:idObtener un recibo
POST/api/receiptsCrear un recibo
PUT/api/receipts/:idActualizar un recibo
DELETE/api/receipts/:idEliminar un recibo

Crear un recibo

CampoTipoNotas
merchantstringrequeridoNombre del comercio
amountnumberrequeridoTotal en currency
currencystringopcionalISO 4217, por defecto la divisa de tu cuenta
datestringrequeridoFecha ISO (AAAA-MM-DD)
categorystringopcionalp. ej. travel, meals
notesstringopcionalMemo libre

Facturas

Facturas y presupuestos que emites a tus clientes. Las cuentas Pro+ también acceden a los endpoints Factur-X / PDP / e-reporting.

GET/api/invoicesListar facturas y presupuestos
POST/api/invoicesCrear una factura o presupuesto
GET/api/invoices/:idObtener una
PUT/api/invoices/:idActualizar
DELETE/api/invoices/:idEliminar
GET/api/invoices/:id/facturx-pdfDescargar PDF Factur-X (Pro+)
POST/api/invoices/:id/pdp/sendEnviar a PDP (Pro+)

Informes

Genera resúmenes listos para impuestos para cualquier rango de fechas.

GET/api/reportsListar informes guardados
POST/api/reportsGenerar un informe
GET/api/reports/:idObtener un informe

Errores

SnapCost usa códigos HTTP estándar. Los fallos siempre devuelven JSON con un campo error, a veces un message, y ocasionalmente un upgradeUrl cuando se requiere un plan de pago.

EstadoSignificado
400Petición mal formada — parámetros faltantes o inválidos
401Clave API / token faltante, inválido o revocado
402Cuota del plan gratuito agotada — se requiere upgrade
403El endpoint requiere un plan superior (p. ej. Pro+)
404Recurso no encontrado o no perteneciente a tu cuenta
429Demasiadas peticiones — ver límites de tasa abajo
5xxError transitorio del servidor — seguro reintentar con backoff

Límites de tasa

Límite por defecto: 100 peticiones por minuto por IP, aplicado en todos los endpoints /api/*. Los endpoints de auth son más estrictos. Si necesitas más, contacta soporte con tu caso de uso.

Versionado

La API hoy no tiene versión y es estrictamente aditiva — añadimos campos y endpoints sin romper clientes existentes. Cualquier cambio incompatible saldrá bajo un nuevo prefijo /api/v2/… con una ventana de depreciación de al menos 6 meses.