API-Referenz

Die vollständige API-Referenz, direkt aus der OpenAPI-Spezifikation generiert. Alle Endpunkte, Request-/Response-Schemata und Felder. Read-only — für den interaktiven Zugang mit eigenem Test-Key siehe die Entwickler-Plattform.

OpenAPI-Spezifikation herunterladen (YAML) — für die Generierung eigener Clients & SDKs (OpenAPI 3.0)

Über die API

Backend contract for the invoicing application. This service owns business logic, validation, totals/VAT calculation, persistence, and schema. Money and quantity values are transmitted as DECIMAL STRINGS (e.g. "9542.50", "86.75") to preserve exact precision. Totals are ALWAYS computed server-side; any totals supplied in a request body are ignored. The model is aligned with EN 16931 / ZUGFeRD concepts so a compliant export can be added later. v1 exposes only a subset.

What this base URL accepts

The published base URL authenticates programmatic API keys (Authorization: Bearer sk_live_… / sk_test_…). Present a key on every request; an access token issued to a signed-in person is not accepted here and is refused before the request reaches the application. That is why a large part of this reference is marked as requiring a signed-in session rather than a key: account and administration work — team and membership changes, company master data, key and webhook management, billing and the archive — is performed in the web dashboard, and those operations are documented here so the behaviour they implement is inspectable, not because they are callable from this base URL. If an operation is documented as requiring a signed-in session, reach for the dashboard rather than a key. Issuing, sending and retrieving documents — the surface an integration actually automates — is fully available with a key.

Rate limiting

A refused request returns 429 with the rate_limited error code, a Retry-After header and the X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset trio. Honour Retry-After, and treat the headers as the authoritative budget for the current window. Any request budget we state is a FLOOR — the number we guarantee to accept — and never a ceiling. Observing more being accepted than the stated figure is not a promise that it will continue, so do not calibrate a client against what it happens to get away with. No figure is published yet; it will be stated only once it has been measured against real traffic. Each API key has its own request budget: traffic on one key never uses up another key's budget, even when both come from the same address.

Request size

A JSON request body may be at most 1 MiB, and any other body (for example the XML document sent to POST /validate) at most 10 MiB. A larger body is refused with 413 and the payload_too_large error code. An invoice, offer or subscription carries at most 1000 line items; more is a 400 validation_error naming lineItems.

Idempotency

An Idempotency-Key is scoped to the mode of the request (test or live) and to the company it acts for. Reusing one value — say, your order id — first with a test key and then with a live key runs two separate requests; it never replays the test result as the live one.

Basis-URL https://api.fortlauf.de/v1 · OpenAPI 3.0.3 · 13 Ressourcengruppen · 189 Operationen

Ressourcengruppen

  1. Rechnungen

    25 Operationen

    Rechnungen und Gutschriften anlegen, ausstellen, versenden und als PDF oder XML abrufen – inklusive Validierung.

  2. Angebote

    14 Operationen

    Angebote erstellen, versenden, annehmen oder ablehnen und in Rechnungen umwandeln.

  3. Kunden & Artikel

    13 Operationen

    Kundenstamm und den wiederverwendbaren Positionskatalog mit Kundenpreisen verwalten.

  4. Abonnements

    9 Operationen

    Wiederkehrende Rechnungen: Abonnement-Vorlagen, ihre Einstellungen und die daraus erzeugten Rechnungen.

  5. Mahnwesen

    10 Operationen

    Überfällige Rechnungen verfolgen, Mahnregeln festlegen und Zahlungserinnerungen versenden.

  6. Zahlungsabgleich

    18 Operationen

    Zahlungseingänge empfangen und automatisch den passenden Rechnungen zuordnen.

  7. Archiv & Export

    11 Operationen

    Das GoBD-Archiv lesen und Exporte erzeugen – DATEV und GoBD-Exportpakete.

  8. Einstellungen

    20 Operationen

    Unternehmensprofil, DATEV-Zuordnung und E-Mail-Versand (SMTP) konfigurieren.

  9. Team & Zugriff

    24 Operationen

    Unternehmen, Mitgliedschaften, Einladungen und die Zugriffsprüfung verwalten.

  10. Konto & Abrechnung

    21 Operationen

    Tarif, Abrechnung, Nutzung, Audit-Protokoll und Kontoschließung.

  11. API-Schlüssel

    8 Operationen

    API-Schlüssel ausstellen, rotieren, sperren und widerrufen – mit den Scopes, die jede Operation verlangt.

  12. Webhooks

    12 Operationen

    Webhook-Endpunkte registrieren und Zustellungen einsehen oder erneut senden.

  13. Sandbox

    4 Operationen

    Testmodus: Testdaten einspielen, zurücksetzen und die Test-Uhr vorstellen.

Alle Operationen

Methode Pfad Operation Scope Zugang
Rechnungen
GET /invoices List invoice summaries (newest first, paginated) documents:read Schlüssel oder Sitzung
POST /invoices Create an invoice (server computes all totals) documents:write Schlüssel oder Sitzung
POST /invoices/preview-totals Preview the totals for a set of line items (nothing is created) documents:read Schlüssel oder Sitzung
GET /invoices/next-number Preview the next auto-generated invoice number (no side effects) documents:read Schlüssel oder Sitzung
GET /invoices/{id} Get a full invoice by id documents:read Schlüssel oder Sitzung
PUT /invoices/{id} Replace a draft invoice (full replace of all mutable fields; server recomputes totals) documents:write Schlüssel oder Sitzung
DELETE /invoices/{id} Delete a draft invoice documents:write Schlüssel oder Sitzung
GET /invoices/{id}/pdf Download the stored ZUGFeRD PDF for an issued invoice documents:read Schlüssel oder Sitzung
GET /invoices/{id}/xml Download the stored XRechnung 3.0 CII XML for an issued invoice documents:read Schlüssel oder Sitzung
GET /invoices/{id}/preview.pdf Render a non-persisted, watermarked WYSIWYG preview PDF for a draft documents:read Schlüssel oder Sitzung
PATCH /invoices/{id}/retry-pdf Reset a failed PDF render to pending and retry generation documents:write Schlüssel oder Sitzung
PATCH /invoices/{id}/retry-xml Reset a failed XML render to pending and retry generation documents:write Schlüssel oder Sitzung
PATCH /invoices/{id}/processing-restriction Set or clear the DSGVO Art. 18 processing restriction documents:write Schlüssel oder Sitzung
PATCH /invoices/{id}/schedule Transition a draft to 'scheduled' with an auto-issuance date documents:write Schlüssel oder Sitzung
PATCH /invoices/{id}/finalize Issue a draft (compliance gate). Runs the KoSIT gate synchronously: assigns the invoice number (sticky — reused on a retry after a gate failure), renders + validates both XRechnung and ZUGFeRD in parallel, and either commits (artifacts + report + email outbox) or rejects with actionable findings. the validation gate in report-only mode (rollout default) never blocks — the commit runs regardless of verdict, with `validationState` recording the outcome; the validation gate in enforce mode blocks on any error-severity finding. The invoice date (`issueDate`) is set to the day of issue (Europe/Berlin), whatever date the draft carried. documents:write Schlüssel oder Sitzung
POST /invoices/{id}/credit-note Derive a Stornorechnung (credit note, UNTDID 381) from an issued invoice documents:write Schlüssel oder Sitzung
POST /invoices/{id}/validate Dry-run preflight (compliance gate). Draft or scheduled only. Runs the same local preflight + parallel render+validate calls as `PATCH /invoices/{id}/finalize`, but never assigns a number (a placeholder BT-1 is used when the invoice is unnumbered) and never commits — no state change on the invoice, regardless of verdict. The report is stored with `kind=preflight`. documents:read Schlüssel oder Sitzung
POST /validate Stateless Validation-as-a-service. Runs a submitted invoice through the SAME KoSIT + §14 compliance gate and returns the report — persisting NOTHING (no invoice, no stored report, no numbering, no metering). Requires the `validation:run` scope. Mounted only where standalone validation is enabled (off by default → 404). validation:run Schlüssel oder Sitzung
GET /invoices/{id}/validation-reports List validation report metadata for an invoice: every attempt (issue attempts, successful issuance, preflight dry-runs), verdict, kind, artifact/validator versions, and findings. Byte-exact report XML is not included — see `GET /invoices/{id}/validation-reports/{reportId}`. documents:read Schlüssel oder Sitzung
GET /invoices/{id}/validation-reports/{reportId} Retrieve a stored Prüfbericht (native KoSIT XML, byte-exact). 404 (not the report) if `reportId` belongs to a different invoice than `id` — no cross-invoice leakage. documents:read Schlüssel oder Sitzung
GET /invoices/{id}/section14 The typed §14 Abs. 4 UStG Pflichtangaben result for an invoice — the clean three-state `Section14Summary` the frontends bind to (the raw `kind='section14'` row also remains in the validation-reports list). For an issued document the stored result is returned (`evaluatedAt` = when it was computed); a lost post-commit persist is transparently recomputed over the immutable issued document and re-persisted (recompute-on-read), so the result is always retrievable. Advisory-only: `status` is `passed`/`has_warnings` (or `unavailable`) — NEVER `failed`; a `not_applicable` item is never counted as a warning. RLS-scoped — a cross-tenant request 404s (indistinguishable from missing). PII-free. documents:read Schlüssel oder Sitzung
POST /invoices/{id}/send Manually (re-)send an issued invoice's delivery email documents:write Schlüssel oder Sitzung
GET /invoices/{id}/sends The append-only send history of an invoice documents:read Schlüssel oder Sitzung
POST /invoices/{id}/external-send Record a dispatch you performed yourself documents:write nur Sitzung
POST /invoices/{id}/sends/{sendId}/retraction Withdraw a dispatch record documents:write nur Sitzung
Angebote
POST /offers Create an Angebot draft documents:write Schlüssel oder Sitzung
GET /offers List Angebote (offset-paginated, derived expiry) documents:read Schlüssel oder Sitzung
GET /offers/next-number Preview the next Angebotsnummer documents:read Schlüssel oder Sitzung
GET /offers/{id} Get an Angebot documents:read Schlüssel oder Sitzung
PUT /offers/{id} Replace a draft/sent Angebot's content documents:write Schlüssel oder Sitzung
DELETE /offers/{id} Delete a draft Angebot documents:write Schlüssel oder Sitzung
GET /offers/settings Read the Angebotsnummer format documents:read Schlüssel oder Sitzung
PUT /offers/settings Update the Angebotsnummer format (admin) documents:write Schlüssel oder Sitzung
POST /offers/{id}/mark-sent Record a draft→sent transition documents:write Schlüssel oder Sitzung
POST /offers/{id}/accept Record the accepted outcome documents:write Schlüssel oder Sitzung
POST /offers/{id}/decline Record the declined outcome documents:write Schlüssel oder Sitzung
POST /offers/{id}/convert-to-invoice Convert an Angebot into a NEW invoice draft documents:write Schlüssel oder Sitzung
GET /offers/{id}/pdf Render the Angebot as a plain PDF documents:read Schlüssel oder Sitzung
POST /offers/{id}/send Send the Angebot as a plain-PDF email documents:write Schlüssel oder Sitzung
Kunden & Artikel
GET /customers List customers (master data), ordered by customer number (paginated) customers:read Schlüssel oder Sitzung
POST /customers Create a customer (customerNumber is assigned by the server) customers:write Schlüssel oder Sitzung
GET /customers/{id} Get a customer by id customers:read Schlüssel oder Sitzung
PUT /customers/{id} Update a customer (full replace of editable fields) customers:write Schlüssel oder Sitzung
DELETE /customers/{id} Delete a customer (linked invoices keep their snapshot) customers:write Schlüssel oder Sitzung
GET /customers/{id}/positions This customer's COMPLETE set of position assignments (Zuordnungen) customers:read Schlüssel oder Sitzung
PUT /customers/{id}/positions Replace this customer's COMPLETE set of position assignments (Zuordnungen) customers:write Schlüssel oder Sitzung
GET /positions List the position catalog (Positionsvorlagen), ordered by description (paginated) customers:read Schlüssel oder Sitzung
POST /positions Create a position customers:write Schlüssel oder Sitzung
GET /positions/{id} Get a position by id (with its customer assignments) customers:read Schlüssel oder Sitzung
PUT /positions/{id} Update a position (full replace of editable fields) customers:write Schlüssel oder Sitzung
DELETE /positions/{id} Delete a position (ALWAYS succeeds — never 409) customers:write Schlüssel oder Sitzung
GET /customers/{id}/open-items Per-customer open-items statement (Kontoauszug / Offene Posten) documents:read Schlüssel oder Sitzung
Abonnements
GET /subscription-settings Read the company's recurring-billing defaults – nur Sitzung
PATCH /subscription-settings Store the company's recurring-billing defaults – nur Sitzung
GET /subscriptions List subscription templates, ordered by creation date (paginated) subscriptions:read Schlüssel oder Sitzung
POST /subscriptions Create a subscription template subscriptions:write Schlüssel oder Sitzung
GET /subscriptions/{id} Get a subscription by id subscriptions:read Schlüssel oder Sitzung
PUT /subscriptions/{id} Update a subscription template (full replace) subscriptions:write Schlüssel oder Sitzung
PATCH /subscriptions/{id}/status Update subscription status (active / paused / cancelled / ended) subscriptions:write Schlüssel oder Sitzung
GET /subscriptions/{id}/invoices List invoices generated from this subscription subscriptions:read Schlüssel oder Sitzung
POST /subscriptions/{id}/generate-invoice Manually trigger invoice generation from a subscription template subscriptions:write , documents:write Schlüssel oder Sitzung
Mahnwesen
GET /dunning/overdue List overdue invoices (cursor-paginated, derived) documents:read Schlüssel oder Sitzung
GET /dunning/policy Get the entity's Mahnstufen policy documents:read Schlüssel oder Sitzung
PUT /dunning/policy Replace the entity's reminder ladder (admin-gated) documents:write Schlüssel oder Sitzung
PATCH /dunning/policy Set which record of sending a reminder requires documents:write Schlüssel oder Sitzung
PUT /dunning/policy/charges Set the late-payment interest and fee configuration, and nothing else documents:write Schlüssel oder Sitzung
GET /invoices/{id}/reminders The per-invoice reminder history / Mahnverlauf documents:read Schlüssel oder Sitzung
POST /invoices/{id}/reminders Send the next-due Mahnstufe for an invoice documents:write Schlüssel oder Sitzung
GET /invoices/{id}/reminders/preview Preview the next-due reminder (byte-faithful dry-run) documents:read Schlüssel oder Sitzung
GET /invoices/{id}/reminders/preview.pdf Preview the next-due Mahnung as a PDF (byte-faithful) documents:read Schlüssel oder Sitzung
GET /invoices/{id}/reminders/{reminderId}/artifact.pdf Read the frozen per-reminder Mahnung letter documents:read Schlüssel oder Sitzung
Zahlungsabgleich
GET /inbound-sources/summary How many inbound sources are configured (counts only) payments:read Sitzung oder Schlüssel
GET /inbound-sources List inbound sources for the active tenant/entity – nur Sitzung
POST /inbound-sources Register an inbound source – nur Sitzung
GET /inbound-sources/{id} Get one inbound source (masked config) – nur Sitzung
PATCH /inbound-sources/{id} Update an inbound source (subscribedTypes / status) – nur Sitzung
DELETE /inbound-sources/{id} Disable an inbound source (soft-delete) – nur Sitzung
POST /inbound-sources/{id}/reveal-config Reveal the full verification config (audit-logged, repeatable) – nur Sitzung
POST /inbound-sources/{id}/rotate-secret Rotate the verification secret (signed source-types only) – nur Sitzung
PUT /inbound-sources/{id}/auto-reconcile Switch automatic booking on or off for ONE payment source – nur Sitzung
POST /inbound-sources/{id}/simulate Testanfrage simulieren — sandbox-locked synthetic received-event – nur Sitzung
POST /inbound/{slug} Public signed inbound-event receiver (the security spine) – ohne Anmeldung
GET /inbound-events List received inbound events (cursor-paginated, metadata-only) payments:read Schlüssel oder Sitzung
GET /inbound-events/{id} One inbound event + its processing-step timeline (metadata-only) payments:read Schlüssel oder Sitzung
POST /inbound-events/{id}/reprocess Re-dispatch (replay) a logged inbound event payments:write Schlüssel oder Sitzung
POST /inbound-events/{id}/confirm Human-confirm the suggested payment match (Zahlungsabgleich) payments:write Schlüssel oder Sitzung
POST /invoices/{id}/payments Record a payment against an invoice payments:write Schlüssel oder Sitzung
GET /invoices/{id}/payments The per-invoice payment ledger payments:read Schlüssel oder Sitzung
POST /invoices/{id}/payment-allocations/{allocationId}/reversal Reverse a recorded payment allocation payments:write Schlüssel oder Sitzung
Archiv & Export
GET /exports/datev DATEV-Format Buchungsstapel (EXTF CSV) export of issued documents for a period – nur Sitzung
GET /invoices/{id}/archive-dossier The GoBD compliance dossier for a document: every archived object (xml_original, pdf_hybrid, validation_report and sendeprotokoll), ordered by kind. Metadata only, no bytes (the single-artifact download is the browse surface). RLS-scoped to the caller's entity/mode — a cross-entity request returns an empty dossier, never a leak. A not-yet-archived document (or one without a Sendeprotokoll yet) returns fewer objects, not an error. archive:read Schlüssel oder Sitzung
GET /entities/{id}/archive-documents Browse a entity's archived documents (cursor-paginated) archive:read Schlüssel oder Sitzung
GET /entities/{id}/archive-documents/{documentId}/artifacts/{kind} Download one archived artifact (synchronous stream) archive:read Schlüssel oder Sitzung
GET /entities/{id}/purge-requests The entity's active pre-deletion purge request – nur Sitzung
POST /entities/{id}/purge-requests Create a purge request — approval – nur Sitzung
POST /entities/{id}/purge-requests/{jobId}/approvals Approve a purge request — approval – nur Sitzung
POST /entities/{id}/export-jobs Request an async export of an entity's archive – nur Sitzung
GET /export-jobs/{id} Poll an export job's status – nur Sitzung
GET /export-jobs/{id}/download Download a built export bundle – nur Sitzung
POST /export-jobs/{id}/confirm-delivery Confirm a checksum-verified export download – nur Sitzung
Einstellungen
GET /settings/company Get company profile (seller master data and invoice settings) – nur Sitzung
PUT /settings/company Create or update company profile (upsert) – nur Sitzung
PATCH /settings/company Partially update company settings (§19 Kleinunternehmer flag) – nur Sitzung
GET /settings/auto-reconcile Is automatic booking authorised for this company and environment? – nur Sitzung
PUT /settings/auto-reconcile Grant or withdraw the authority to book matched credits automatically – nur Sitzung
GET /settings/datev-mapping Get the current (or a specific historical) DATEV mapping config – nur Sitzung
PUT /settings/datev-mapping Create a new immutable DATEV mapping-config version – nur Sitzung
PUT /settings/invoice-numbering Set the invoice-number format (prefix and minimum length) – nur Sitzung
PUT /settings/invoice-number-counter Set the invoice-number counter – nur Sitzung
GET /settings/email Read the entity's SMTP/email settings (password never returned) – nur Sitzung
PUT /settings/email Create or replace the entity's SMTP/email settings – nur Sitzung
PUT /settings/email/password Replace the stored SMTP password, and nothing else – nur Sitzung
POST /settings/email/test Send a one-off test email using the saved SMTP settings – nur Sitzung
GET /settings/sending/reply-to Read the reply address for platform-provided sending – nur Sitzung
PUT /settings/sending/reply-to Set the reply address and start confirming it – nur Sitzung
POST /settings/sending/reply-to/resend Send a fresh confirmation code for the pending reply address – nur Sitzung
POST /settings/sending/verify-reply-to Confirm the pending reply address with the six-digit code – nur Sitzung
GET /settings/sending Read who the recipient will see as sender, before the first send – nur Sitzung
POST /settings/sending/acknowledge Acknowledge the sender strings and switch on platform-provided sending – nur Sitzung
POST /public/sending/verify-reply-to Confirm a reply address from the emailed link (no sign-in required) – ohne Anmeldung
Team & Zugriff
GET /me/memberships List the authenticated caller's active tenant memberships – nur Sitzung
GET /me/invitations List the invitations waiting for the authenticated caller – nur Sitzung
POST /me/invitations/{id}/accept Accept one of the caller's own invitations by id – nur Sitzung
POST /tenants Create a tenant (self-serve, member-less principal becomes owner) – Sitzung oder Schlüssel
GET /tenants/{tenantId}/plan The tenant's plan-tier readout – Sitzung oder Schlüssel
GET /tenants/{tenantId}/entities List the tenant's entities (cursor-paginated) entities:read Schlüssel oder Sitzung
POST /tenants/{tenantId}/entities Create an entity (admin/owner or API key with entities:write) entities:write Schlüssel oder Sitzung
GET /tenants/{tenantId}/entities/{id} Get one entity (the settings read) entities:read Schlüssel oder Sitzung
PATCH /tenants/{tenantId}/entities/{id} Update entity settings (admin/owner or API key with entities:write) entities:write Schlüssel oder Sitzung
DELETE /tenants/{tenantId}/entities/{id} Soft-delete (deactivate) an entity (admin/owner or API key with entities:write) entities:write Schlüssel oder Sitzung
POST /tenants/{tenantId}/entities/{id}/activate-live-operation Move this company into live operation — deliberate, audited, once entities:write nur Sitzung
GET /tenants/{tenantId}/live-operation-status Whether this company operates live – nur Sitzung
GET /tenants/{tenantId}/memberships List the tenant's members (the Team table) – nur Sitzung
PATCH /tenants/{tenantId}/memberships/{userId} Change a member's role (admin/owner, inline role change) – nur Sitzung
DELETE /tenants/{tenantId}/memberships/{userId} Remove a member (admin/owner) – nur Sitzung
POST /tenants/{tenantId}/memberships/leave Leave the organisation ("Organisation verlassen") – nur Sitzung
GET /tenants/{tenantId}/access-review The access-review stamp (admin) – nur Sitzung
POST /tenants/{tenantId}/access-review/mark-reviewed Mark tenant access as reviewed (admin, non-idempotent) – nur Sitzung
GET /tenants/{tenantId}/invitations List the tenant's pending invitations ("ausstehend") – nur Sitzung
POST /tenants/{tenantId}/invitations Create or re-invite an invitation (admin/owner) – nur Sitzung
DELETE /tenants/{tenantId}/invitations/{id} Withdraw a pending invitation (admin/owner, "Zurückziehen") – nur Sitzung
POST /tenants/{tenantId}/invitations/{id}/resend Resend a pending invitation (admin/owner) – nur Sitzung
POST /invitations/accept Accept an invitation by token (any signed-in user) – nur Sitzung
GET /invitations/{token}/preview Preview an invitation by token (UNAUTHENTICATED) – ohne Anmeldung
Konto & Abrechnung
GET /me/account/close-disclosure The counsel-owned retention disclosure shown before account closure – nur Sitzung
GET /me/account/close-blockers Preconditions that must be resolved before the caller can close their account – nur Sitzung
POST /me/account/close Close the caller's account and erase their identity (Art. 17) – nur Sitzung
GET /legal/current-versions The legal documents currently published, and the sentence each is accepted by – Sitzung oder Schlüssel
GET /tenants/{tenantId}/audit-log Tenant-scoped audit log (cursor-paginated, owner-only) – nur Sitzung
GET /tenants/{tenantId}/usage Usage snapshot for the period (finalized-document rollup, admin/owner) – nur Sitzung
GET /tenants/{tenantId}/billing The tenant's billing status (tier + effective price + masked account + usage) – Sitzung oder Schlüssel
POST /tenants/{tenantId}/billing/subscribe Start a subscription — obtain permission to charge this account – Sitzung oder Schlüssel
POST /tenants/{tenantId}/billing/payment-method/replace Replace the payment method this account already holds – Sitzung oder Schlüssel
GET /tenants/{tenantId}/billing-recovery The billing status read that still answers a SUSPENDED account – nur Sitzung
POST /tenants/{tenantId}/billing-recovery/subscribe Start a subscription from a SUSPENDED account whose mandate is revoked – nur Sitzung
POST /tenants/{tenantId}/billing-recovery/payment-method/replace Replace the payment method from a SUSPENDED account whose mandate is active – nur Sitzung
POST /tenants/{tenantId}/legal-acceptances Accept the currently published legal documents – nur Sitzung
POST /tenants/{tenantId}/processing-instructions Submit an instruction or an objection to the processor – nur Sitzung
GET /tenants/{tenantId}/processing-instructions List this account's instructions and objections, newest first – nur Sitzung
GET /tenants/{tenantId}/processing-instructions/{id} One instruction or objection with its full text – nur Sitzung
POST /feedback Send feedback about the screen you are on – nur Sitzung
GET /tenants/{tenantId}/legal-acceptances/{document}/document Retrieve the record of an accepted legal document – nur Sitzung
GET /tenants/{tenantId}/legal-acceptance-status Which legal documents this account still has to accept – nur Sitzung
GET /billing/plans The self-serve plan catalog (unauth-safe) – ohne Anmeldung
POST /billing/provider-webhook Inbound payment-provider webhook receiver (POC) – ohne Anmeldung
API-Schlüssel
GET /tenants/{tenantId}/api-key-status Whether the tenant has ≥1 usable live API key – Sitzung oder Schlüssel
GET /tenants/{tenantId}/api-keys List the tenant's API keys (masked) – nur Sitzung
POST /tenants/{tenantId}/api-keys Issue an API key – nur Sitzung
POST /tenants/{tenantId}/api-keys/{id}/rotate Rotate a key – nur Sitzung
POST /tenants/{tenantId}/api-keys/{id}/revoke Revoke a key immediately – nur Sitzung
POST /tenants/{tenantId}/api-keys/{id}/suspend Suspend a key (operator-driven, reversible) – nur Sitzung
POST /tenants/{tenantId}/api-keys/{id}/unsuspend Clear a key's suspension – nur Sitzung
DELETE /tenants/{tenantId}/api-keys/{id} Revoke a key (REST alias for /revoke) – nur Sitzung
Webhooks
GET /webhook-endpoints List webhook endpoints for the active tenant/entity – nur Sitzung
POST /webhook-endpoints Register a webhook endpoint – nur Sitzung
GET /webhook-endpoints/{id} Get one webhook endpoint (masked secret) – nur Sitzung
PATCH /webhook-endpoints/{id} Update a webhook endpoint (url / subscribedTypes / status) – nur Sitzung
DELETE /webhook-endpoints/{id} Disable a webhook endpoint (soft-delete) – nur Sitzung
POST /webhook-endpoints/{id}/reveal-secret Reveal the full signing secret (audit-logged, repeatable) – nur Sitzung
POST /webhook-endpoints/{id}/rotate-secret Rotate the signing secret – nur Sitzung
POST /webhook-endpoints/{id}/test-event Send a synthetic test event (async, "Testereignis senden") – nur Sitzung
GET /webhook-endpoints/{id}/deliveries Per-endpoint delivery log (cursor-paginated) – nur Sitzung
GET /webhook-deliveries Tenant-wide webhook delivery log (cursor-paginated) – nur Sitzung
GET /webhook-deliveries/{id} One delivery + its ordered attempt timeline – nur Sitzung
POST /webhook-deliveries/{id}/replay Replay a delivery (async, "Erneut senden") – nur Sitzung
Sandbox
POST /sandbox/seed Seed the caller's sandbox (test mode) with a deterministic German dataset. sandbox:write Schlüssel oder Sitzung
POST /sandbox/test-clock/advance Fast-forward the sandbox clock, materializing all due runs. sandbox:write Schlüssel oder Sitzung
POST /sandbox/reset Reset the sandbox to empty (optionally re-seed). TEST MODE ONLY. sandbox:write Schlüssel oder Sitzung
GET /sandbox/jobs/{id} Poll a sandbox seed/advance/reset job. TEST MODE ONLY. sandbox:write Schlüssel oder Sitzung