Zum Inhalt springen
SimpleAct Logo

API & Integrationen

Alles, was Sie vor dem ersten Aufruf wissen müssen: Authentifizierung, Limits, Fehler, Freigabe-Sperre, Webhooks, SCIM, MCP.

Die Integration-API deckt nahezu den gesamten Funktionsumfang der Anwendung ab: KI-Systeme, Risikobewertung, Checklisten, Dokumentation, Governance, Assurance, Controls, Incident Management, die komplette DSGVO-Suite, Model Registry, Vendor Register, Legal Logic, Export und Administration. Diese Seite erklärt die Regeln, die für alle diese Bereiche gleichermaßen gelten. Die vollständige Endpunktreferenz liegt in Ihrer Instanz unter /api/docs, der Einstiegsleitfaden unter /api/guide.

Auf einen Blick

Enthalten ab
Enterprise (Custom API Extension)
Wo in der App
Enterprise-Optionen → API
Ergebnis
Server-zu-Server-Zugriff auf Ihre Compliance-Daten
API
https://<ihre-organisation>.simpleact.de/api/v1

Die vier Grundregeln

Der Key bestimmt die Organisation

Jeder API-Key gehört zu genau einer Organisation. Welche Daten ein Aufruf sieht, entscheidet ausschließlich der Key – nicht die Domain, die Sie aufrufen. Deshalb tragen die meisten Endpunkte gar keine Organisations-ID.

Der Key wird einmal angezeigt

Beim Anlegen sehen Sie den Schlüssel genau einmal; danach ist er nicht mehr abrufbar. Übertragen Sie ihn direkt in Ihre Geheimnisverwaltung. Verloren heißt: neuen Key anlegen, alten widerrufen.

Ein Key pro Anwendung

Das Stundenbudget zählt pro Key. Ein nächtlicher Abgleich und ein Dashboard am selben Key hungern sich gegenseitig aus, und aus einem Limitfehler lässt sich nicht ablesen, wer das Budget verbraucht hat. Getrennte Keys lassen sich außerdem einzeln widerrufen.

Rechte werden ausdrücklich vergeben

Jeder Key trägt eine eigene Rechteliste. Ein Key kann nie mehr Rechte bekommen, als die Person hat, die ihn anlegt. Administrative Rechte – Benutzer anlegen, Organisationseinstellungen ändern – sind nie Teil des Standardsatzes und müssen bewusst vergeben werden.

Authentifizierung

  • Header X-API-Key: sk_live_… – oder alternativ Authorization: Bearer sk_live_…
  • Basis-URL ist Ihre eigene Organisationsdomain plus /api/v1. Beispiele aus der In-App-Dokumentation funktionieren dadurch ohne Anpassung.
  • Die API ist für Server-zu-Server-Aufrufe gedacht. Ein Key gehört nie in eine Webseite: Cross-Origin-Anfragen aus fremden Ursprüngen erhalten keine CORS-Freigabe und werden vom Browser blockiert. Server, CLI und Jobs betrifft das nicht.
  • Referenz und Leitfaden antworten auf denselben Key: Sie können die OpenAPI-Spezifikation per Skript unter /api/docs-json abholen, ohne Browsersitzung.

Limits

Beide Limits gelten gleichzeitig und kumulativ. Ein Key kann sein Stundenbudget also nicht in einem einzigen Schwall verbrauchen.

LimitGeltungsbereichBei Überschreitung
1.000 Anfragen pro Stundepro API-KeyHTTP 429
100 Anfragen pro Minutepro IP-Adresse und RouteHTTP 429
100 kB Anfragekörperpro AnfrageHTTP 413 – die Anfrage wird gar nicht verarbeitet, es gibt keinen Teilimport

Keine Rate-Limit-Header

Die Antworten tragen bewusst keine RateLimit- oder Retry-After-Header. Ein live mitgezählter Restwert ist genau das, womit ein Skript sich exakt auf die Grenze setzt. Takten Sie stattdessen gegen die veröffentlichten Werte, und behandeln Sie einen 429 als Signal zum Zurückfahren – nicht als Methode, das Limit auszuloten.

Fehlercodes

Jeder Fehler kommt im selben JSON-Umschlag mit Statuscode, UTC-Zeitstempel, Pfad und Meldung – auch bei Download-Endpunkten. Ein fehlgeschlagener PDF- oder ZIP-Abruf antwortet als JSON, nie mit dem Medientyp des Erfolgsfalls.

CodeBedeutung
400Ungültige Daten oder eine verletzte Geschäftsregel (siehe unten). Das Feld errors listet jeden Verstoß mit Feldpfad und stabilem Regelnamen. Darauf sollten Sie verzweigen, nicht auf den Meldungstext.
401Key fehlt, ist unbekannt, widerrufen oder abgelaufen.
403Recht fehlt, das Modul ist für Ihre Organisation nicht freigeschaltet bzw. nicht im Plan enthalten, oder die Handlung ist API-Keys verwehrt (siehe unten).
404Datensatz existiert nicht – oder gehört einer anderen Organisation. Beides ist absichtlich nicht unterscheidbar.
409Konflikt, z. B. eine bereits vergebene E-Mail-Adresse.
413 / 415Anfragekörper zu groß bzw. falscher Content-Type. Senden Sie JSON.
429Ratenlimit überschritten; die Meldung nennt, welches Limit gegriffen hat.

Schreibsemantik, die man kennen sollte

  • PUT und PATCH führen beide eine Teiländerung durch: Ein Feld, das Sie weglassen, behält seinen Wert. Sie müssen also nie das vollständige Objekt senden.
  • Ein Feld leeren geht über null – sofern das Feld leer sein darf. Auf einem Pflichtfeld ist null kein Löschweg.
  • Listenfelder werden ersetzt, nicht ergänzt. Eine gesendete Liste überschreibt die gespeicherte; eine leere Liste löscht sie; ein weggelassenes Feld lässt sie unverändert.
  • Unbekannte Felder im Anfragekörper werden abgelehnt statt ignoriert – ein Tippfehler im Feldnamen scheitert, statt den Wert still zu verschlucken.
  • Verweise auf andere Datensätze müssen auflösbar sein. Eine ID, die nicht zu Ihrer Organisation gehört, lässt den gesamten Aufruf mit 404 scheitern – gespeichert wird nichts.
  • Datumsangaben sind ISO-8601-Kalendertage. Ein Datum, das es nicht gibt (etwa der 30. Februar), wird abgelehnt und nicht stillschweigend verschoben.

Geschäftsregel-Fehler unter 400

Nicht jeder 400 ist ein Tippfehler. Lehnt die App einen Aufruf ab, weil ein Ablauf es nicht zulässt (ein Statuswechsel ist nicht erlaubt, ein Gate ist zu, ein Nachweis fehlt), kommt derselbe Umschlag mit error: „Business Rule“. Im Feld errors steht dann ein Eintrag mit constraints: [Regel-ID], gegebenenfalls field (etwa status) und messages mit dem lesbaren Text.

Verzweigen Sie auf die Regel-ID, nicht auf den Text. Die vollständige Liste veröffentlicht die OpenAPI-Spezifikation; Beispiele sind rule.approval_required, rule.annex_iv_transition, rule.checklist_justification_required, rule.governance_workflow_not_approved, rule.incident_status_transition und ai_intake.unreviewed_sections.

Freigabe-Sperre: rule.approval_required

Hat Ihre Organisation für einen Objekttyp einen mehrstufigen Freigabe-Workflow eingerichtet, kann die API den Abschlussstatus nicht mehr direkt setzen:

  • Ein Statuswechsel in den Abschlussstatus (etwa ein Anhang-IV-Dossier auf APPROVED oder ein Lieferant auf FREIGEGEBEN) braucht eine abgeschlossene, noch nicht verbrauchte Freigabe. Fehlt sie, antwortet die API mit 400 und rule.approval_required; die Meldung nennt Objekttyp und Zahl der Stufen.
  • Ein Datensatz, der direkt im Abschlussstatus angelegt werden soll, wird aus demselben Grund abgelehnt. Legen Sie ihn darunter an und lassen Sie ihn freigeben.
  • Jede Freigabe wird genau einmal verbraucht. Für einen erneuten Abschluss ist eine neue Freigabe nötig.

Nur mit Anmeldung, nicht per API-Key

Manche Handlungen sind persönliche Entscheidungen. Ein API-Key handelt im Namen der Person, die ihn angelegt hat: genau das soll das Vier-Augen-Prinzip verhindern.

BereichVerhalten bei API-Key
Freigaben (/api/v1/approvals): beantragen, entscheiden, Workflows einrichtenNur mit angemeldeter Sitzung; nicht in der OpenAPI-Referenz.
Aktualitätsprüfung (/api/v1/review-campaigns)Nur mit angemeldeter Sitzung; nicht in der OpenAPI-Referenz.
KI-Eingang: Antrag annehmen oder ablehnen403 (ai_intake.human_review_required). Anträge einreichen und lesen geht per API-Key.

Paging: uneinheitlich

Die API hat kein einheitliches Paging. Die meisten Listen liefern alles auf einmal; wenige Endpunkte begrenzen:

  • Ohne Paging, vollständige Liste: zum Beispiel KI-Systeme (neueste zuerst) und Webhooks.
  • page und limit: Einwilligungsnachweise.
  • limit und offset: System-Log.
  • Nur limit: DSGVO-Audit-Trail im Dashboard (Standard 100, höchstens 500).
  • Prüfen Sie im Zweifel die Beschreibung des Endpunkts in der OpenAPI-Referenz und planen Sie für große Organisationen mit vollständigen Listen.

Sprache der Fehlermeldungen

Meldungstexte richten sich nach dem Header Accept-Language (Deutsch, Englisch, Spanisch, Französisch); ohne Header antwortet die API auf Englisch. Einige technische Meldungen sind nicht übersetzt und erscheinen immer auf Englisch. Regel-IDs und Feldnamen sind sprachunabhängig. Darauf verzweigen Sie.

Webhooks

  • Zustellung per POST mit JSON-Körper { id, type, timestamp, data } und den Headern X-SimpleAct-Event (Ereignistyp) und X-SimpleAct-Signature.
  • Die Signatur ist ein HMAC-SHA256 über den Körper, hex-kodiert, mit dem Webhook-Secret als Schlüssel. Prüfen Sie sie gegen den unveränderten Körper.
  • Ohne eigenes Secret erzeugt SimpleAct eines mit 64 Zeichen; ein eigenes muss mindestens 16 Zeichen haben. Speichern Sie es beim Anlegen sicher. Die Anzeige des Secrets wird auf den Moment des Anlegens beschränkt.
  • Kein automatischer Neuversuch: Eine fehlgeschlagene Zustellung wird nicht wiederholt. Nach zehn Fehlschlägen in Folge wird der Webhook deaktiviert und lässt sich über die API nicht wieder einschalten.
  • Ziele in privaten oder lokalen Netzen sind gesperrt. Eine Registrierung lässt sich nicht ändern; für eine neue URL oder neue Ereignisse löschen und neu anlegen.
  • Ereigniskatalog: Derzeit gibt es nur die Testzustellung webhook.test, mit der Sie Ihre Empfängerseite prüfen. Fachliche Ereignisse kommen schrittweise hinzu; nur Typen aus dem Katalog lassen sich abonnieren.

SCIM und MCP

SCIM 2.0

Benutzerprovisionierung aus Entra ID oder Okta: Nutzer anlegen, aktualisieren, deaktivieren und abfragen, dazu die Discovery-Endpunkte. Gruppen werden nicht unterstützt. SCIM nutzt einen API-Key mit dem Provisionierungsrecht als Bearer-Token.

MCP-Schnittstelle

Unter /api/v1/mcp spricht SimpleAct das Model Context Protocol für KI-Assistenten: neun Werkzeuge, davon acht lesend und eines schreibend (ai_intake_submit, legt einen Antrag im KI-Eingang an). Nur per API-Key; jedes Werkzeug braucht dieselben Rechte wie der passende REST-Endpunkt.

Was die API bewusst nicht abdeckt

Diese Bereiche fehlen nicht, sie sind ausgeschlossen – jeweils aus einem konkreten Grund.

  • Abrechnung und Abonnements: Zahlungsdaten werden ausschließlich über den geprüften Zahlungsablauf geändert, damit kein Integrationsfehler zu falschen Buchungen führt.
  • Die API-Key-Verwaltung selbst: Keys können sich nicht gegenseitig erzeugen oder verlängern. Das Anlegen bleibt eine bewusste Handlung eines angemeldeten Administrators.
  • Sitzungsgebundene Abläufe – Anmeldung, SSO, Passwort-Reset, eigenes Profil, Organisationswechsel. Sie beziehen sich auf den eingeloggten Menschen, wofür ein langlebiger Key kein sinnvolles Gegenstück ist.
  • Plattformweite Super-Admin-Funktionen. Für API-Keys sind sie nicht erreichbar.

Administrative Keys wie ein Administratorpasswort behandeln

Rechte zur Benutzerverwaltung machen aus einem Key einen Administratorzugang. Vergeben Sie sie nur, wenn Ihre Integration wirklich Benutzer verwalten muss, statten Sie den Key eng mit genau den benötigten Rechten aus – kein Sammel-Key für alles – und rotieren Sie ihn regelmäßig. Widerrufen Sie ihn sofort, wenn die Integration abgelöst wird oder die verantwortliche Person Ihr Unternehmen verlässt.

Weiterführende Seiten