Tu connectes Samsa à un client MCP (Claude, ChatGPT, Claude Code, Cursor…) ? Le
MCP server utilise ces mêmes API keys pour les clients headless
et la connexion OAuth 2.1 pour les clients interactifs — les scopes ci-dessous
s’appliquent identiquement aux outils MCP.
Comment fonctionnent les clés
- Propriété de l’organisation. Une clé appartient à une organisation, pas à une personne. Quiconque détient la clé agit pour cette organisation.
- Créée par un admin. Seul un admin de l’organisation (
OWNERouADMIN) peut créer ou révoquer des clés, dans l’onglet Settings → API Keys de l’app. - Scopée. Chaque clé porte un ensemble de scopes qui déterminent quels endpoints elle peut appeler. Les clés sont créées avec tous les scopes par défaut ; restreins-les pour correspondre à ce dont l’intégration a besoin.
- Affichée une seule fois. Le secret complet est affiché exactement une fois, à la création.
Le header Authorization
Envoie ta clé comme Bearer token sur chaque requête :
GET /me pour confirmer qu’une clé fonctionne — il
renvoie l’organisation de la clé, ses métadonnées sûres (préfixe, scopes,
expiration) et le solde de credits disponible de l’organisation, mais jamais le
secret.
Scopes
Les scopes suivent une forme<resource>.<verb>. Une requête vers un endpoint dont
la clé n’a pas le scope échoue avec 403 missing_scope.
GET /me a besoin de n’importe quelle clé valide — il ne requiert aucun
scope spécifique. Les nouvelles capacités ajoutent de nouvelles chaînes de
scope ; les clés existantes ne les héritent jamais automatiquement, donc un admin
modifie les scopes de la clé ou émet une nouvelle clé pour accorder l’accès.Quand l’authentification échoue
Les échecs d’authentification et d’autorisation renvoient l’[enveloppe d’erreur] (/fr/guides/errors) standard. Une clé manquante, malformée, inconnue, expirée ou révoquée — ou une clé dont le créateur n’est plus membre de l’organisation — renvoie401 invalid_api_key :
401 Unauthorized
403 missing_scope, en
nommant le scope requis :
403 Forbidden
Les clés expirées et les clés inconnues renvoient toutes deux
401 invalid_api_key — délibérément indistinguables, pour qu’un tiers ne puisse pas
sonder quelles clés ont existé.Bonnes pratiques de sécurité
Stocke les clés dans des variables d'environnement
Stocke les clés dans des variables d'environnement
Garde les clés hors de ton gestionnaire de versions. Charge-les depuis une
variable d’environnement ou un gestionnaire de secrets — ne les code jamais en
dur.
N'expose jamais les clés côté client
N'expose jamais les clés côté client
L’API Samsa est conçue pour le serveur d’abord — le CORS est délibérément
restrictif et les appels navigateur depuis des origines arbitraires ne sont pas
pris en charge. Une clé dans du code front-end ou dans une app mobile est une
clé divulguée. Appelle toujours l’API depuis ton backend.
Fais tourner par révocation + création
Fais tourner par révocation + création
Il n’y a pas de rotation sur place. Pour faire tourner une clé,
crées-en une nouvelle, déploie-la, puis révoque
l’ancienne. La révocation est définitive et prend effet dès la requête suivante.
Définis une expiration pour les intégrations éphémères
Définis une expiration pour les intégrations éphémères
Les clés peuvent être créées avec une expiration optionnelle. Une clé
expirée échoue exactement comme une clé inconnue (
401 invalid_api_key).
Utilise l’expiration pour les intégrations temporaires, les essais et les
prestataires.Faire tourner une clé
- Crée une nouvelle clé dans Settings → API Keys et copie-la.
- Déploie la nouvelle clé dans ton intégration.
- Révoque l’ancienne clé. La révocation est immédiate et ne peut pas être annulée.
Format de clé
Une clé ressemble à :samsa_sk_ fait 43 caractères base62 encodant 256 bits d’aléa. Dans
l’app, les clés sont affichées sous la forme samsa_sk_gK3n…3rAb (un prefix
stable plus les quatre derniers caractères) afin que tu puisses identifier une clé
sans l’exposer.

