Aller au contenu

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 :

curl -H "X-API-Key: votre_cle_api" \
     https://api.dev.djinn.solyntek.io/v1/extract

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 401 et 429 avec {"message": "..."}.
  • Les services répondent au format FastAPI, {"detail": ...} : detail est 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épond 422 avec detail sous forme de liste de problèmes.

Exemple de réponse 401

{
  "message": "No API key found in request"
}

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

{
  "message": "API rate limit exceeded"
}

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é