Stai connettendo Samsa a un client MCP (Claude, ChatGPT, Claude Code, Cursor…)? L’
MCP server usa queste stesse API key per i client headless e
l’accesso OAuth 2.1 per quelli interattivi — gli scope qui sotto si applicano agli
strumenti MCP in modo identico.
Come funzionano le chiavi
- Di proprietà dell’organizzazione. Una chiave appartiene a un’organizzazione, non a una persona. Chiunque possieda la chiave agisce per quell’organizzazione.
- Create da un admin. Solo un admin dell’organizzazione (
OWNERoADMIN) può creare o revocare chiavi, nella scheda Settings → API Keys dell’app. - Con scope. Ogni chiave porta un insieme di scope che determinano quali endpoint può chiamare. Le chiavi vengono create con tutti gli scope per impostazione predefinita; restringili per corrispondere a ciò di cui l’integrazione ha bisogno.
- Mostrate una sola volta. Il segreto completo viene visualizzato esattamente una volta, alla creazione.
L’header Authorization
Invia la tua chiave come Bearer token in ogni richiesta:
GET /me per confermare che una chiave funzioni — restituisce
l’organizzazione della chiave, i suoi metadati sicuri (prefisso, scope, scadenza) e il
saldo credits disponibile dell’organizzazione, ma mai il segreto.
Scope
Gli scope seguono la forma<resource>.<verb>. Una richiesta a un endpoint il cui
scope manca alla chiave fallisce con 403 missing_scope.
GET /me necessita di qualsiasi chiave valida — non richiede alcuno scope
specifico. Le nuove funzionalità aggiungono nuove stringhe di scope; le chiavi
esistenti non le ereditano mai automaticamente, quindi un admin modifica gli scope
della chiave o emette una nuova chiave per concedere l’accesso.Quando l’autenticazione fallisce
I fallimenti di autenticazione e autorizzazione restituiscono l’ envelope di errore standard. Una chiave mancante, malformata, sconosciuta, scaduta o revocata — oppure una chiave il cui creatore non è più membro dell’organizzazione — restituisce401 invalid_api_key:
401 Unauthorized
403 missing_scope, nominando lo scope richiesto:
403 Forbidden
Le chiavi scadute e quelle sconosciute restituiscono entrambe
401 invalid_api_key
— deliberatamente indistinguibili, così un estraneo non può sondare quali chiavi
siano esistite.Best practice di sicurezza
Conserva le chiavi in variabili d'ambiente
Conserva le chiavi in variabili d'ambiente
Tieni le chiavi fuori dal controllo di versione. Caricale da una variabile
d’ambiente o da un secrets manager — non scriverle mai hard-coded.
Non esporre mai le chiavi lato client
Non esporre mai le chiavi lato client
La Samsa API è server-side first — il CORS è deliberatamente restrittivo e le
chiamate dal browser da origini arbitrarie non sono supportate. Una chiave nel
codice front-end o in un’app mobile è una chiave trapelata. Chiama sempre l’API dal
tuo backend.
Ruota tramite revoca + creazione
Ruota tramite revoca + creazione
Non esiste una rotazione in-place. Per ruotare, crea una nuova chiave,
distribuiscila, poi revoca quella vecchia. La revoca è definitiva e ha effetto alla
richiesta immediatamente successiva.
Imposta una scadenza per le integrazioni di breve durata
Imposta una scadenza per le integrazioni di breve durata
Le chiavi possono essere create con una scadenza facoltativa. Una chiave
scaduta fallisce esattamente come una sconosciuta (
401 invalid_api_key). Usa la
scadenza per integrazioni temporanee, trial e collaboratori esterni.Ruotare una chiave
- Crea una nuova chiave in Settings → API Keys e copiala.
- Distribuisci la nuova chiave alla tua integrazione.
- Revoca la vecchia chiave. La revoca è immediata e non può essere annullata.
Formato della chiave
Una chiave ha questo aspetto:samsa_sk_ è composto da 43 caratteri base62 che codificano 256 bit di
casualità. Nell’app, le chiavi vengono visualizzate come samsa_sk_gK3n…3rAb (un
prefix stabile più gli ultimi quattro caratteri) così puoi identificare una chiave
senza esporla.

