Dernière mise à jour : 15 octobre 2026
Authentification¶
Toutes les requêtes vers l'API Djinn doivent être authentifiées avec une clé API.
Mécanisme — X-API-Key¶
Incluez votre clé API dans le header X-API-Key de chaque requête :
Les clés API sont émises par l'équipe Solyntek lors de l'onboarding. Elles ne sont pas auto-provisionnables via l'API.
Isolement tenant¶
Chaque clé API est associée à un tenant unique. Toutes vos données, knowledge bases et journaux d'audit sont strictement isolés des autres tenants. Il n'est pas possible d'accéder aux données d'un autre tenant, même avec une clé valide.
Rate limiting¶
Les requêtes sont limitées par clé API par la passerelle : 60 requêtes par minute et 1 000 par heure sur toutes les routes. POST /v1/hr/subjects/ref (candidate-analyzer) est plus strictement limitée, à 10 par minute et 100 par heure. Les compteurs sont tenus par chaque instance de la passerelle : le quota effectif peut donc dépasser légèrement ces valeurs ; ne comptez pas sur cette marge. En cas de dépassement, l'API retourne 429.
Chaque réponse porte les compteurs : X-RateLimit-Limit-Minute, X-RateLimit-Remaining-Minute, X-RateLimit-Limit-Hour et X-RateLimit-Remaining-Hour. Une réponse 429 porte aussi un header Retry-After (secondes).
Codes d'erreur¶
| Code HTTP | Signification |
|---|---|
401 Unauthorized |
Clé API absente, invalide ou révoquée |
403 Forbidden |
Clé API valide mais accès refusé : par exemple un tenant_id qui n'est pas celui de votre clé (audit-trail) |
429 Too Many Requests |
Limite de débit atteinte — attendez avant de réessayer |
Deux formats existent, selon qui répond :
- La passerelle (Kong) répond
401et429avec{"message": "..."}. - Les services répondent au format FastAPI,
{"detail": ...}:detailest une chaîne ({"detail": "Invalid API key"}) ou, pour certaines erreurs métier (candidate-analyzer, doc-trust), un objet{"code": "...", "message": "..."}. Une requête qui échoue à la validation répond422avecdetailsous forme de liste de problèmes.
Exemple de réponse 401¶
Une clé inconnue reçoit {"message": "Invalid authentication credentials"} ; une clé refusée par le service lui-même (révoquée) reçoit {"detail": "Invalid API key"}.
Exemple de réponse 429¶
Bonnes pratiques¶
- Ne jamais exposer votre clé API dans le code source versionné — utilisez des variables d'environnement
- Faites tourner vos clés de staging et de production séparément
- Contactez Solyntek immédiatement si vous suspectez une compromission de clé