b. buchkram.de Developers

REST-API v1

Base-URL: https://buchkram.de/api/v1

Authentifizierung

Bearer-Token im Authorization-Header. Token erzeugst du im Dashboard unter Einstellungen → API-Tokens.

Authorization: Bearer 42|YourPlainTextTokenHere

Antwort-Format

Alle Endpoints liefern JSON. Listen kommen paginiert in einem data-Array mit Metadata:

{
  "data": [...],
  "links": { "first": "...", "last": "...", "next": "...", "prev": null },
  "meta": { "current_page": 1, "per_page": 25, "total": 142 }
}

Rate Limits

60 Requests pro Minute pro Token. Bei Überschreitung kommt HTTP 429 mit Retry-After-Header.

Endpoints

Auth & Profile

GET /me User + Tenant + Token-Info

Kunden / Lieferanten

GET /customers?type=customer&q=acme
POST /customers
GET /customers/{id}
PATCH /customers/{id}
DELETE /customers/{id}
POST /api/v1/customers
{
  "type": "customer",
  "company_name": "Acme GmbH",
  "email": "max@acme.example",
  "address_line1": "Hauptstr. 5",
  "postal_code": "10115",
  "city": "Berlin",
  "country": "DE",
  "vat_id": "DE123456789"
}

Rechnungen

GET /invoices?status=issued&customer_id=...
POST /invoices
GET /invoices/{id}
DELETE /invoices/{id} nur Drafts
POST /api/v1/invoices
{
  "customer_id": "uuid",
  "invoice_date": "2026-05-15",
  "due_date": "2026-05-29",
  "subject": "Mai-Beratung",
  "currency": "EUR",
  "status": "issued",
  "items": [
    {"title": "Beratung", "quantity": 8, "unit": "h", "unit_price_net": 120, "vat_rate": 19},
    {"title": "Reisekosten", "quantity": 1, "unit": "Pauschal", "unit_price_net": 85, "vat_rate": 19}
  ]
}

Belege

GET /receipts?status=draft
POST /receipts
GET /receipts/{id}
DELETE /receipts/{id}

Projekte

GET /projects?status=active
POST /projects
GET /projects/{id}
PATCH /projects/{id}
DELETE /projects/{id}

Zeit-Einträge

GET /time-entries?from=2026-05-01&to=2026-05-31
POST /time-entries
GET /time-entries/{id}
DELETE /time-entries/{id}

Bank

GET /bank-transactions?match_status=unmatched
GET /bank-transactions/{id}

Fehler-Codes