Verbindest du Samsa mit einem MCP client (Claude, ChatGPT, Claude Code,
Cursor…)? Der MCP server verwendet für headless Clients
dieselben API keys und für interaktive Clients OAuth-2.1-Login — die Scopes
unten gelten für MCP-Tools identisch.
Wie Keys funktionieren
- Organisationsgebunden. Ein Key gehört einer Organisation, nicht einer Person. Jeder, der den Key besitzt, handelt für diese Organisation.
- Admin-erstellt. Nur ein Organisations-Admin (
OWNERoderADMIN) kann Keys erstellen oder widerrufen, im Tab Settings → API Keys der App. - Gescopt. Jeder Key trägt eine Reihe von Scopes, die bestimmen, welche Endpoints er aufrufen kann. Keys werden standardmäßig mit allen Scopes erstellt; schränke sie so ein, dass sie zu dem passen, was die Integration braucht.
- Nur einmal angezeigt. Das vollständige Secret wird genau einmal angezeigt, bei der Erstellung.
Der Authorization-Header
Sende deinen Key als Bearer-Token bei jeder Anfrage:
GET /me, um zu bestätigen, dass ein Key funktioniert —
der Endpoint gibt die Organisation des Keys, seine sicheren Metadaten (prefix,
scopes, Ablaufdatum) und das verfügbare Credit-Guthaben der Organisation zurück,
aber nie das Secret.
Scopes
Scopes folgen der Form<resource>.<verb>. Eine Anfrage an einen Endpoint, dessen
Scope dem Key fehlt, schlägt mit
403 missing_scope fehl.
GET /me braucht irgendeinen gültigen Key — es erfordert keinen bestimmten
Scope. Neue Funktionen fügen neue Scope-Strings hinzu; bestehende Keys erben sie
nie automatisch, daher bearbeitet ein Admin die Scopes des Keys oder erstellt
einen neuen Key, um Zugriff zu gewähren.Wenn die Authentifizierung fehlschlägt
Authentifizierungs- und Autorisierungsfehler geben das standardmäßige Error-Envelope zurück. Ein fehlender, fehlerhafter, unbekannter, abgelaufener oder widerrufener Key — oder ein Key, dessen Ersteller kein Mitglied der Organisation mehr ist — gibt401 invalid_api_key zurück:
401 Unauthorized
403 missing_scope zurück und nennt den erforderlichen Scope:
403 Forbidden
Abgelaufene und unbekannte Keys geben beide
401 invalid_api_key zurück —
absichtlich nicht unterscheidbar, damit ein Außenstehender nicht ermitteln kann,
welche Keys einmal existierten.Security Best Practices
Speichere Keys in Umgebungsvariablen
Speichere Keys in Umgebungsvariablen
Halte Keys aus der Versionsverwaltung heraus. Lade sie aus einer
Umgebungsvariablen oder einem Secrets-Manager — hardcode sie nie.
Gib Keys nie clientseitig preis
Gib Keys nie clientseitig preis
Die Samsa API ist server-side first — CORS ist bewusst restriktiv und
Browser-Aufrufe von beliebigen Origins werden nicht unterstützt. Ein Key in
Frontend-Code oder einer Mobile-App ist ein geleakter Key. Rufe die API immer
von deinem Backend aus auf.
Rotiere per widerrufen + erstellen
Rotiere per widerrufen + erstellen
Es gibt keine In-Place-Rotation. Zum Rotieren
erstelle einen neuen Key, deploye ihn und widerrufe dann
den alten. Der Widerruf ist terminal und wird bei der allernächsten Anfrage
wirksam.
Setze ein Ablaufdatum für kurzlebige Integrationen
Setze ein Ablaufdatum für kurzlebige Integrationen
Keys können mit einem optionalen Ablaufdatum erstellt werden. Ein
abgelaufener Key schlägt genau wie ein unbekannter fehl (
401 invalid_api_key). Verwende das Ablaufdatum für temporäre Integrationen, Trials
und externe Dienstleister.Einen Key rotieren
- Erstelle einen neuen Key in Settings → API Keys und kopiere ihn.
- Deploye den neuen Key in deine Integration.
- Widerrufe den alten Key. Der Widerruf ist sofortig und kann nicht rückgängig gemacht werden.
Key-Format
Ein Key sieht so aus:samsa_sk_-Body besteht aus 43 base62-Zeichen, die 256 Bit Zufälligkeit
kodieren. In der App werden Keys als samsa_sk_gK3n…3rAb angezeigt (ein stabiler
prefix plus die letzten vier Zeichen), sodass du einen Key identifizieren
kannst, ohne ihn preiszugeben.

