Skip to main content
Chaque requête à l’API Samsa est authentifiée avec une API key d’organisation. Les clés sont scopées, affichées une seule fois, et agissent pour l’organisation qui les possède — les credits sont prélevés sur le pool de cette organisation et les assets générés apparaissent dans l’app sous le compte de l’admin qui a créé la clé.
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 (OWNER ou ADMIN) 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.
Samsa ne stocke qu’un hash SHA-256 de chaque clé, jamais le texte en clair. C’est pourquoi une clé ne peut jamais être réaffichée ou récupérée — il n’y a rien à récupérer. Si tu perds une clé, révoque-la et crées-en une nouvelle.

Le header Authorization

Envoie ta clé comme Bearer token sur chaque requête :
Utilise 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 — renvoie 401 invalid_api_key :
401 Unauthorized
Une clé valide qui n’a pas le scope du endpoint renvoie 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é

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.
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.
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.
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é

  1. Crée une nouvelle clé dans Settings → API Keys et copie-la.
  2. Déploie la nouvelle clé dans ton intégration.
  3. Révoque l’ancienne clé. La révocation est immédiate et ne peut pas être annulée.

Format de clé

Une clé ressemble à :
Le corps 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.
Le préfixe constant samsa_sk_ permet aux scanners de secrets (GitHub secret scanning, hooks pre-commit, vérifications CI) de détecter une clé Samsa commitée par accident. Active le secret scanning sur tes dépôts pour qu’une clé divulguée soit repérée avant d’être expédiée.