SnapCost API
Eine saubere REST-API für Belege, Rechnungen und steuerfertige Berichte. JSON rein, JSON raus. Bearer-Token-Auth. Gebaut für Buchhalter, ERP-Integrationen und eigene Automatisierungen.
Basis-URL
https://snapcost.app/api
Format
JSON-Request- und Response-Bodies, UTF-8.
Authentifizierung
HTTP Bearer mit einem API-Schlüssel.
Tarif
API-Zugriff erfordert den Business-Tarif.
Authentifizierung
Jede Anfrage muss einen Authorization-Header mit Ihrem API-Schlüssel enthalten.
Authorization: Bearer sk_live_••••••••••••••••••••••••••••••••
API-Schlüssel sind an ein einzelnes SnapCost-Konto gebunden und erben dessen Berechtigungen und Tariflimits. Sie verhalten sich identisch zu einer eingeloggten User-Session — es gibt heute kein separates Scope-System.
API-Schlüssel verwalten
Schlüssel generieren, auflisten und widerrufen Sie über das SnapCost-Dashboard oder die Verwaltungsendpunkte unten (diese benötigen ein eingeloggtes JWT, keinen API-Schlüssel, um Privilege Escalation zu verhindern).
Schlüssel erstellen
POST /api/keys
Content-Type: application/json
{ "name": "Zapier production" }
Antwort
{
"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."
}
Der vollständige Klartext-Schlüssel wird nur einmal — bei der Erstellung — zurückgegeben. SnapCost speichert einen SHA-256-Hash und kann den Originalwert nicht wiederherstellen. Limit: 10 aktive Schlüssel pro Konto.
Schnellstart
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"]
Belege
Belege sind gescannte oder manuell eingetragene Ausgabendatensätze.
Einen Beleg erstellen
| Feld | Typ | Hinweise | |
|---|---|---|---|
merchant | string | erforderlich | Händlername |
amount | number | erforderlich | Gesamt in currency |
currency | string | optional | ISO 4217, Standardwert: Konto-Währung |
date | string | erforderlich | ISO-Datum (JJJJ-MM-TT) |
category | string | optional | z. B. travel, meals |
notes | string | optional | Freier Text-Memo |
Rechnungen
Rechnungen und Angebote, die Sie an Kunden ausstellen. Pro+-Konten erhalten zusätzlich Zugriff auf Factur-X / PDP / E-Reporting-Endpunkte.
Berichte
Steuerfertige Übersichten für jeden Datumsbereich generieren.
Fehler
SnapCost verwendet Standard-HTTP-Statuscodes. Fehler liefern immer JSON mit einem error-Feld, manchmal einer message, und gelegentlich einer upgradeUrl, wenn ein bezahlter Tarif erforderlich ist.
| Status | Bedeutung |
|---|---|
| 400 | Fehlerhafte Anfrage — fehlende oder ungültige Parameter |
| 401 | Fehlender, ungültiger oder widerrufener API-Schlüssel / Token |
| 402 | Free-Plan-Kontingent erschöpft — Upgrade erforderlich |
| 403 | Endpunkt erfordert einen höheren Tarif (z. B. Pro+) |
| 404 | Ressource nicht gefunden oder nicht in Ihrem Konto |
| 429 | Zu viele Anfragen — siehe Rate-Limits unten |
| 5xx | Vorübergehender Server-Fehler — sicher mit Backoff erneut versuchen |
Rate-Limits
Standard-Limit: 100 Anfragen pro Minute pro IP, angewendet auf alle /api/*-Endpunkte. Auth-Endpunkte sind strenger. Bei höherem Bedarf kontaktieren Sie den Support mit Ihrem Use Case.
Versionierung
Die API ist heute unversioniert und streng additiv — wir fügen Felder und Endpunkte hinzu, ohne bestehende Clients zu brechen. Breaking Changes erscheinen unter einem neuen /api/v2/…-Präfix mit mindestens 6 Monaten Deprecation-Zeitraum.