Einstieg

Authentifizierung

Ein API-Schlüssel im Authorization-Header. Was er darf, ist die Schnittmenge aus seinen Scopes und den Rechten der Organisation.

Der Schlüssel

Authorization: Bearer sg_live_…
curl https://api.signido.de/api/v1/signature-requests \
  -H "Authorization: Bearer $SIGNIDO_API_KEY"
sg_live_<id>_<secret>
Produktion. Erzeugt echte Signaturen, echte Anbieter-Aufrufe und echte Rechnungspositionen.
sg_test_<id>_<secret>
Sandbox. Keine Rechnungen, keine echten Vertrauensdienste, und alles, was damit entsteht, trägt isTestMode: true. Eine Test-Signatur ist keine rechtlich verwertbare Signatur und wird auch nicht als solche ausgegeben.
Der Klartext wird einmal gezeigt
Gespeichert wird nur ein argon2id-Hash. Ein verlorener Schlüssel kann nicht ausgelesen, sondern nur widerrufen und ersetzt werden.
Optionale IP-Beschränkung
Ein Schlüssel kann auf CIDR-Bereiche begrenzt werden. Eine leere Liste bedeutet keine Beschränkung; eine gefüllte Liste, die nicht passt, führt zu 401.

Scopes

Ein Scope beschreibt eine Fähigkeit, keine Ressource. Was ein Schlüssel wirklich darf, ist die Schnittmenge aus seinen Scopes und den Berechtigungen der Organisation, in der er lebt. Ein Schlüssel mit documents:write in einer Organisation ohne aktives Abonnement darf nichts anlegen — und das ist kein Fehler in der Scope-Liste, sondern der Zweck der Schnittmenge.

ScopeBerechtigt zu
documents:readDokumente lesen und herunterladen
documents:writeDokumente anlegen, ändern, löschen
requests:readSignaturaufträge, Empfänger und Felder lesen
requests:writeAufträge anlegen, ändern, abbrechen
requests:sendVersenden, erinnern, übergeben, reaktivieren
templates:readVorlagen lesen und verwenden
templates:writeVorlagen anlegen, ändern, löschen, freigeben
contacts:readKontakte lesen
contacts:writeKontakte anlegen, ändern, löschen
webhooks:readWebhook-Endpunkte und Zustellprotokolle lesen
webhooks:writeWebhook-Endpunkte verwalten
webforms:readWeb-Formulare lesen
webforms:writeWeb-Formulare verwalten
bulk:readBulk-Aufträge lesen
bulk:writeBulk-Aufträge starten
team:readTeam und Rollen lesen
billing:readAbonnement und Rechnungen lesen
usage:readNutzungsdaten lesen
audit:readNachweisverläufe lesen und exportieren

Fehlt der Scope, antwortet die API mit 403 SCOPE_INSUFFICIENT. Fehlt die Berechtigung der Organisation, mit 403 FORBIDDEN. Die beiden Codes zu unterscheiden lohnt sich: das erste behebt man im Schlüssel, das zweite in der Rolle.

Was ein Schlüssel nicht kann

  • Sich anmelden. Registrierung, Anmeldung, MFA und Passkeys sind eine Browser-Sitzung und stehen nicht unter /v1 zur Verfügung.
  • Das Team verwalten. Rollen ändern, Mitglieder einladen, Inhaberschaft übertragen, ein Konto löschen: das sind menschliche Handlungen, und sie verlangen zusätzlich eine kürzlich per zweitem Faktor bestätigte Sitzung.
  • Eine andere Organisation adressieren. Die Organisation ergibt sich aus dem Schlüssel. Es gibt keinen Parameter dafür.
  • Sich selbst erweitern. Ein Schlüssel kann keine Schlüssel anlegen.