Authentication
L'API supporte deux modes : cookies de session (pour l'app web) et API keys bearer (pour scripts, CI, integrations).
API keys (recommande pour scripts)
Creer une API key
- Frontend :
Configuration projet->API keys->Generer. - Choisir : nom, scopes (
read,write,admin), expiration optionnelle. - Auralith affiche une seule fois le secret complet
(
ak_<prefix>_<secret>). Notez-le, vous ne pourrez plus le voir.
Utiliser une API key
curl https://app.auralith.io/api/v1/projects \
-H "Authorization: Bearer ak_abc123_def456789..."
Scopes
| Scope | Permet |
|---|---|
read | GET sur projets / connexions / patches / audit |
write | POST / PATCH sur patches, seeds, anonymize. PAS de DELETE. |
admin | DELETE, modification de policies, gestion API keys |
Une API key admin reste limitee aux projets auxquels son owner a acces. Pas d'escalade au-dela du user createur.
Revocation
curl -X DELETE https://app.auralith.io/api/v1/api-keys/{id} \
-H "Authorization: Bearer ..."
Revocation immediate. La key revokee porte revoked_at != null et est
refusee par l'authentification.
Cookies de session (web app)
# Login
curl -X POST https://app.auralith.io/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"...","password":"..."}' \
-c cookies.txt -i
La reponse pose deux cookies : session (httpOnly) et csrf_token.
Pour les requetes mutantes, ajouter le header X-CSRF-Token avec la valeur
du cookie csrf_token.
CSRF=$(grep csrf_token cookies.txt | awk '{print $7}')
curl -X POST https://app.auralith.io/api/v1/projects \
-b cookies.txt \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d '{"name":"my-project"}'
OAuth
Pour les integrations interactives (utiliser un autre Auralith comme IdP n'est pas supporte ; OAuth ici est pour le login des users via Google / GitHub).
2FA
Si l'user a 2FA actif, le login en deux etapes :
# Etape 1 : password ok -> 200 avec partial_token
curl -X POST .../auth/login -d '...'
# {"partial_token":"...", "needs_2fa": true}
# Etape 2 : code TOTP
curl -X POST .../auth/login/2fa \
-d '{"partial_token":"...","code":"123456"}'
# Pose les vrais cookies session + CSRF
Les API keys ne sont pas affectees par 2FA — elles authentifient leur owner sans reverification.
Pieges courants
- API key dans Git : ne jamais commit. Utiliser un secret manager CI (GitHub Actions secrets, Vault, etc.).
- CORS + cookies : si vous appelez l'API depuis un autre domaine, configurer
CORS_ORIGINScote API ETcredentials: 'include'cote fetch JS. - Expiration API key : verifier
expires_atdans la reponse de creation. Au-dela, 401.