Developer Reference

Abrevia Local REST API

Abrevia betreibt einen lokalen Express-Server direkt auf dem Rechner des Nutzers. Externe Programme, Scripts oder Webhooks können damit sicher lokal interagieren — Kunden anlegen, Rechnungen importieren, Statistiken abfragen und WHMCS synchronisieren. Über den integrierten MCP-Server lässt sich Abrevia zudem direkt mit KI-Clients wie Claude steuern (siehe unten).

Die API ist ausschließlich über 127.0.0.1 erreichbar und nur aktiv, solange Abrevia läuft. Kein Port wird nach außen geöffnet.

Base URL

http://127.0.0.1:37402

Port konfigurierbar unter Einstellungen → API

Authentication

Authorization: Bearer <API_KEY>

API-Key in Abrevia → Einstellungen → API

Jedes Unternehmen erhält einen eigenen API-Key — Multi-Unternehmen werden vollständig getrennt verwaltet.

Rate Limit

60 Anfragen / Minute

Pro IP-Adresse, Antwort 429 bei Überschreitung

Schnellstart

# API-Status prüfen
curl -H "Authorization: Bearer <API_KEY>" http://127.0.0.1:37402/api/status

# Alle Kunden abrufen
curl -H "Authorization: Bearer <API_KEY>" http://127.0.0.1:37402/api/kunden

# Jahresstatistik 2026
curl -H "Authorization: Bearer <API_KEY>" http://127.0.0.1:37402/api/statistiken/summary?year=2026

Fehlercodes

200Erfolg
400Ungültige Anfrage — Pflichtfelder fehlen
401Kein Authorization-Header vorhanden
403Ungültiger API-Key
404Ressource nicht gefunden
429Rate Limit überschritten (60 req/min)
500Interner Serverfehler
KI-Integration · Model Context Protocol

MCP-Server (Writer) — Abrevia mit Claude steuern

Sobald Abrevia läuft, startet neben der REST-API automatisch ein MCP-Server (Model Context Protocol) auf 127.0.0.1:37403/mcp. KI-Clients wie Claude bzw. Claude Code erhalten damit vollen Lese- und Schreibzugriff auf alle Funktionen — Kunden, Rechnungen, Ausgaben, Fahrtkosten & Fahrtenbuch, Produkte, Statistiken und WHMCS — direkt per natürlicher Sprache.

In Claude Code einrichten

# einfach (aktive Firma)
claude mcp add --transport http abrevia http://127.0.0.1:37403/mcp

# mit API-Key (als Passwort / Bearer)
claude mcp add --transport http abrevia http://127.0.0.1:37403/mcp \
  --header "Authorization: Bearer <API_KEY>"

Oder per .mcp.json (mit Key):

{
  "mcpServers": {
    "abrevia": {
      "type": "http",
      "url": "http://127.0.0.1:37403/mcp",
      "headers": { "Authorization": "Bearer <API_KEY>" }
    }
  }
}

Sicherheit & Authentifizierung

  • Nur über 127.0.0.1 erreichbar — kein Port wird nach außen geöffnet.
  • Aktiv ausschließlich, solange Abrevia geöffnet ist.
  • Ohne Token wird die aktive Firma verwendet; mit dem API-Key wird gezielt ein Unternehmen angesprochen. Der Key funktioniert als Bearer-Token, als Basic-Auth-Passwort oder als X-API-Key-Header.
  • Transport: Streamable HTTP (JSON-RPC 2.0).

Verfügbare MCP-Tools — alle Funktionen

abrevia_statusStatus der Instanz
list_kunden · get_kundeKunden lesen
create_kunde · delete_kundeKunden schreiben
list_rechnungen · get_rechnungRechnungen lesen
create_rechnungRechnung anlegen
list_ausgaben · get_ausgabeAusgaben lesen
create_ausgabe · delete_ausgabeAusgaben schreiben
ausgabe_from_xml · from_pdfE-Rechnung importieren
ausgabe_add_attachmentBeleg anhängen
list_fahrten · get_fahrtFahrtenbuch lesen
create_fahrt · delete_fahrtFahrten schreiben
fahrtkosten_berechnenDE/AT-konform berechnen
fahrtkosten_saetzeAktuelle Sätze
list_produkteProduktkatalog
statistik_summaryJahresauswertung
whmcs_sync_client · sync_invoiceWHMCS-Sync
whmcs_testWHMCS-Verbindung

Beispiel-Prompt in Claude

„Erfasse eine Fahrt von Wien zum Kunden Muster GmbH, 84 km mit dem PKW am 2. Mai — und buche sie als Betriebsausgabe."

Claude ruft create_fahrt auf, Abrevia berechnet 42,00 € (AT-Kilometergeld), legt die Fahrt im Fahrtenbuch an und bucht sie via create_ausgabe auf SKR-Konto 4660.

System

Kunden

Rechnungen

Ausgaben

Fahrtkosten & Fahrtenbuch

Produkte

Statistiken

WHMCS-Integration

Einrichtung

  1. In Abrevia: Einstellungen → API → WHMCS-URL, Identifier und Secret eintragen
  2. WHMCS API-Credentials anlegen unter: WHMCS → Setup → API Credentials
  3. Webhooks in WHMCS auf POST http://127.0.0.1:37402/api/whmcs/webhook konfigurieren
  4. Alle Anfragen via Authorization: Bearer <API_KEY>

Kunden-ID Schema

WHMCS-Kunden erhalten in Abrevia automatisch die ID whmcs_<whmcsId>. Rechnungen aus WHMCS erhalten die ID WHMCS-<invoiceId>. So lassen sich Datensätze kollisionsfrei von nativen Abrevia-Datensätzen unterscheiden.

WHMCSAPI JavaScript-Klasse

Kann direkt im Renderer oder in eigenen Node-Scripts genutzt werden.

Initialisierung

import { WHMCSAPI } from './WHMCSAPI';
const whmcs = new WHMCSAPI(
  'https://billing.example.com',
  'YOUR_API_IDENTIFIER',
  'YOUR_API_SECRET'
);

Verbindung testen

testConnection()boolean — Gibt true zurück wenn WHMCS erreichbar und Credentials gültig sind.

Kunden

getClients({ limitstart, limitnum, search })Alle Kunden abrufen. Optionale Volltextsuche und Pagination.
getClient(clientId)Einzelnen Kunden inkl. Kontostand und Status.
addClient({ firstname, lastname, email, ... })Neuen Kunden in WHMCS anlegen. Gibt whmcsId zurück.
updateClient(clientId, fields)Beliebige Felder eines Kunden aktualisieren.
deleteClient(clientId)Kunden dauerhaft löschen.

Rechnungen

getInvoices({ status, limitstart, limitnum })Rechnungen filtern nach Status: Unpaid, Paid, Cancelled, Refunded, Collections, Draft.
getInvoice(invoiceId)Einzelne Rechnung mit allen Positionen, Steuerinfo und Zahlungsstatus.
createInvoice({ clientid, date, duedate, items })Neue Rechnung in WHMCS erstellen. Gibt whmcsId und Abrevia-id zurück.
updateInvoiceStatus(invoiceId, status)Status einer Rechnung ändern (z.B. auf Paid setzen).

Bestellungen

getOrders({ status, limitstart, limitnum })Bestellungen nach Status abrufen: Pending, Active, Fraud, Cancelled.
acceptOrder(orderId)Bestellung annehmen und aktivieren.
cancelOrder(orderId)Bestellung stornieren.

Produkte & Services

getProducts({ pid, gid })Alle Produktgruppen und Tarife aus WHMCS abrufen.
getClientServices({ clientid })Alle gebuchten Dienste eines Kunden inkl. nächstem Abrechnungsdatum.

Zahlungen & Transaktionen

getTransactions({ clientid, invoiceid })Transaktionsverlauf für einen Kunden oder eine Rechnung.
addTransaction({ clientid, invoiceid, amountin, gateway, ... })Manuelle Zahlung buchen. Gibt transactionId zurück.

Support & Domains

getTickets({ clientid, status })Support-Tickets abrufen. Enthält Betreff, Priorität, letzten Reply.
getDomains({ clientid })Alle Domains eines Kunden mit Ablaufdatum und Auto-Renew-Status.

Beispiel: Monatliche Einnahmen aus WHMCS importieren

const invoices = await whmcs.getInvoices({ status: 'Paid' });
for (const inv of invoices) {
  await fetch('http://127.0.0.1:37402/api/whmcs/sync-invoice', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer <API_KEY>',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      whmcsInvoiceId: inv.whmcsId,
      clientid: inv.kundeId.replace('whmcs_', ''),
      date: inv.datum,
      total: inv.gesamtbetrag,
      status: 'Paid'
    })
  });
}

Abrevia API • Nur lokal verfügbar • Kein Cloud-Zugriff