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.
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).
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.
Crear un recibo
| Campo | Tipo | Notas | |
|---|---|---|---|
merchant | string | requerido | Nombre del comercio |
amount | number | requerido | Total en currency |
currency | string | opcional | ISO 4217, por defecto la divisa de tu cuenta |
date | string | requerido | Fecha ISO (AAAA-MM-DD) |
category | string | opcional | p. ej. travel, meals |
notes | string | opcional | Memo libre |
Facturas
Facturas y presupuestos que emites a tus clientes. Las cuentas Pro+ también acceden a los endpoints Factur-X / PDP / e-reporting.
Informes
Genera resúmenes listos para impuestos para cualquier rango de fechas.
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.
| Estado | Significado |
|---|---|
| 400 | Petición mal formada — parámetros faltantes o inválidos |
| 401 | Clave API / token faltante, inválido o revocado |
| 402 | Cuota del plan gratuito agotada — se requiere upgrade |
| 403 | El endpoint requiere un plan superior (p. ej. Pro+) |
| 404 | Recurso no encontrado o no perteneciente a tu cuenta |
| 429 | Demasiadas peticiones — ver límites de tasa abajo |
| 5xx | Error 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.