SnapCost SnapCost API

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.

Behandeln Sie Schlüssel wie Passwörter. Niemals in die Versionskontrolle einchecken oder in browserseitigem Code offenlegen. Sofort rotieren, wenn ein Schlüssel geleakt sein könnte.

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).

GET/api/keysIhre Schlüssel auflisten
POST/api/keysNeuen Schlüssel erstellen
DELETE/api/keys/:idSchlüssel widerrufen

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.

GET/api/receiptsBelege auflisten
GET/api/receipts/:idEinen Beleg abrufen
POST/api/receiptsEinen Beleg erstellen
PUT/api/receipts/:idEinen Beleg aktualisieren
DELETE/api/receipts/:idEinen Beleg löschen

Einen Beleg erstellen

FeldTypHinweise
merchantstringerforderlichHändlername
amountnumbererforderlichGesamt in currency
currencystringoptionalISO 4217, Standardwert: Konto-Währung
datestringerforderlichISO-Datum (JJJJ-MM-TT)
categorystringoptionalz. B. travel, meals
notesstringoptionalFreier Text-Memo

Rechnungen

Rechnungen und Angebote, die Sie an Kunden ausstellen. Pro+-Konten erhalten zusätzlich Zugriff auf Factur-X / PDP / E-Reporting-Endpunkte.

GET/api/invoicesRechnungen & Angebote auflisten
POST/api/invoicesRechnung oder Angebot erstellen
GET/api/invoices/:idEines abrufen
PUT/api/invoices/:idAktualisieren
DELETE/api/invoices/:idLöschen
GET/api/invoices/:id/facturx-pdfFactur-X-PDF herunterladen (Pro+)
POST/api/invoices/:id/pdp/sendAn PDP übermitteln (Pro+)

Berichte

Steuerfertige Übersichten für jeden Datumsbereich generieren.

GET/api/reportsGespeicherte Berichte auflisten
POST/api/reportsBericht generieren
GET/api/reports/:idBericht abrufen

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.

StatusBedeutung
400Fehlerhafte Anfrage — fehlende oder ungültige Parameter
401Fehlender, ungültiger oder widerrufener API-Schlüssel / Token
402Free-Plan-Kontingent erschöpft — Upgrade erforderlich
403Endpunkt erfordert einen höheren Tarif (z. B. Pro+)
404Ressource nicht gefunden oder nicht in Ihrem Konto
429Zu viele Anfragen — siehe Rate-Limits unten
5xxVorü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.