Authentification

Deux identifiants — une clé API pour les machines, une session pour la console — et les règles qui les tiennent séparés.

Deux types d’identifiants

L’API accepte une clé API. La console accepte un cookie de session. Ils ne sont pas interchangeables, et l’API l’impose plutôt que de décider requête par requête si un cookie était censé être là.

Un navigateur connecté ne peut pas appeler l’API

Une requête authentifiée avec un cookie de session reçoit 403 api_key_required, avec un message renvoyant à la page des clés de la console. C’est délibéré : sans chemin authentifié par cookie vers l’API, il n’y a rien qu’une requête intersite puisse falsifier.

L’en-tête

Envoyez la clé comme jeton bearer. Une clé est un préfixe, un point et un secret ; le préfixe identifie la ligne, donc la révocation est immédiate et coûte une seule recherche.

curl https://api.llmeu.com/v1/chat/completions \
  -H "Authorization: Bearer llmeu_live_xxxxxxxx.your-secret" \
  -H "Content-Type: application/json" \
  -d '{"model":"llmeu-auto","messages":[{"role":"user","content":"Hello"}]}'

Portées

Une clé porte une ou plusieurs portées. Une requête dont la clé n’a pas la portée requise par un point de terminaison est refusée avec 403 insufficient_scope, avant que le corps ne soit analysé.

Portée Débloque
inference Complétions de chat, embeddings, et les points de terminaison de liste et de détail des modèles.
platform_read Lire votre organisation : profil, clés, utilisation, traces et politiques.
platform_write Créer et révoquer des clés, et créer ou modifier des politiques. C’est la portée qui change qui peut faire quoi, donc émettez-la délibérément.

Les portées sont vérifiées par point de terminaison, pas par clé. Une clé avec platform_read ne peut pas dépenser de crédit via le playground.

Créer une clé

Dans la console, ou via l’API de plateforme avec une clé qui porte déjà platform_write. Le secret est affiché une seule fois, à sa création : seul un hachage scrypt est stocké, donc personne — y compris nous — ne peut le relire.

curl -X POST https://api.llmeu.com/platform/v1/api-keys \
  -H "Authorization: Bearer llmeu_live_xxxxxxxx.a-platform-write-key" \
  -H "Content-Type: application/json" \
  -d '{"name":"ci","scopes":["inference"]}'

Les actions administratives dans la console — politiques, équipe, paramètres, crédit, révocation de clés — sont réservées au propriétaire ou à l’administrateur, quelles que soient les portées d’une clé.

Révocation, et ce qu’une clé n’est pas

Une clé appartient à une organisation, et l’organisation est résolue à partir de la clé elle-même — jamais depuis un champ du corps de la requête, donc un appelant ne peut pas s’adresser à un autre locataire en le demandant gentiment. La révocation prend effet à la requête suivante. La rotation consiste à créer une seconde clé, déplacer le trafic, puis révoquer la première ; il n’y a pas de fenêtre de chevauchement à configurer.

Pour la console, à la place

La connexion, la récupération de mot de passe et la vérification d’adresse sont documentées avec la console. Il n’y a ni OAuth, ni SAML, ni jeton d’accès personnel : la console utilise un cookie de session, l’API utilise des clés.