Référence API

Référence API

Documentation REST API complète pour le service d'authentification Authon. Toutes les requêtes doivent inclure une clé API dans l'en-tête x-api-key ou un jeton Bearer dans Authorization.

URL de base

text
https://api.authon.dev

Authentification

Authon utilise deux types de clés API selon que la requête provient d'un navigateur ou d'un serveur. Passez la clé dans l'en-tête x-api-key ou comme jeton Bearer.

Type de cléPréfixeUtilisation
Publiablepk_live_ / pk_test_Navigateur / SDK client. Peut être exposée.
Secrètesk_live_ / sk_test_Serveur uniquement. Accès administrateur complet. Ne jamais exposer.
BearereyJhbGci...Jeton d'accès utilisateur après connexion. TTL de 15 minutes.
bash
# Publishable key — client-side requests
curl https://api.authon.dev/v1/auth/providers \
  -H "x-api-key: pk_live_your_publishable_key"

# Token verification is public; no x-api-key is required
curl https://api.authon.dev/v1/auth/token/verify \
  -H "Authorization: Bearer eyJhbGci..."

# Bearer access token — user requests
curl https://api.authon.dev/v1/auth/me \
  -H "Authorization: Bearer eyJhbGci..."

Points de terminaison d'authentification

POST/v1/auth/signup

Inscription

Enregistrez un nouvel utilisateur avec un e-mail et un mot de passe. Retourne des jetons en cas de succès.

Auth:x-api-key: pk_live_...
Corps de la requête
json
{
  "email": "user@example.com",
  "password": "securepassword",
  "displayName": "Jane Doe"          // optional
}
Réponse
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rt_8f4a2b1c...",
  "expiresIn": 900,
  "user": {
    "id": "usr_abc123",
    "projectId": "proj_xyz",
    "email": "user@example.com",
    "displayName": "Jane Doe",
    "avatarUrl": null,
    "emailVerified": false,
    "isBanned": false,
    "publicMetadata": null,
    "signInCount": 0,
    "createdAt": "2026-01-15T10:30:00.000Z",
    "updatedAt": "2026-01-15T10:30:00.000Z"
  }
}
POST/v1/auth/signin

Connexion

Authentifiez un utilisateur existant avec un e-mail et un mot de passe.

Auth:x-api-key: pk_live_...
Corps de la requête
json
{
  "email": "user@example.com",
  "password": "securepassword"
}
Réponse
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rt_8f4a2b1c...",
  "expiresIn": 900,
  "user": { ... }
}
POST/v1/auth/signout

Déconnexion

Révoque la session courante et invalide le jeton de rafraîchissement. Nécessite un jeton d'accès Bearer.

Auth:Authorization: Bearer <access_token>
Réponse
json
{
  "success": true
}
POST/v1/auth/token/refresh

Rafraîchissement du jeton

Échangez un jeton de rafraîchissement contre un nouveau jeton d'accès. Les jetons d'accès expirent après 15 minutes.

Auth:x-api-key: pk_live_...
Corps de la requête
json
{
  "refreshToken": "rt_8f4a2b1c..."
}
Réponse
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresIn": 900
}
GET/v1/auth/token/verify

Vérification du jeton

Vérifiez un jeton d'accès et retournez l'utilisateur associé. Utilisé par votre serveur pour authentifier les requêtes entrantes.

Auth:Authorization: Bearer <access_token>
Réponse
json
{
  "valid": true,
  "payload": {
    "sub": "usr_abc123",
    "projectId": "proj_xyz",
    "type": "access",
    "iat": 1767225600,
    "exp": 1767226500
  },
  "user": {
    "id": "usr_abc123",
    "email": "user@example.com",
    "displayName": "Jane Doe",
    "avatarUrl": null,
    "emailVerified": true
  }
}
GET/v1/auth/me

Obtenir l'utilisateur actuel

Retournez le profil de l'utilisateur actuellement authentifié.

Auth:Authorization: Bearer <access_token>
Réponse
json
{
  "id": "usr_abc123",
  "projectId": "proj_xyz",
  "email": "user@example.com",
  "displayName": "Jane Doe",
  "avatarUrl": "https:0
  6: null,
  7: true,
  8: false,
  9: false,
  10: {},
  11: "2026-01-15T10:30:00.000Z",
  "signInCount": 42,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-15T10:30:00.000Z"
}
PATCH/v1/auth/me

Mettre à jour l'utilisateur actuel

Mettez à jour les champs de profil de l'utilisateur actuellement authentifié. Seuls les champs fournis sont mis à jour.

Auth:Authorization: Bearer <access_token>
Corps de la requête
json
{
  "displayName": "Jane Smith",          // optional
  "avatarUrl": "https://example.com/avatar.png"  // optional
}
Réponse
json
{
  "id": "usr_abc123",
  "displayName": "Jane Smith",
  "avatarUrl": "https://example.com/avatar.png",
  ...
}

Points de terminaison OAuth

GET/v1/auth/providers

Lister les fournisseurs

Retournez la liste des fournisseurs OAuth activés pour le projet.

Auth:x-api-key: pk_live_...
Réponse
json
{
  "providers": ["google", "github", "kakao"]
}
GET/v1/auth/oauth/:provider/url

Obtenir l'URL OAuth

Générez une URL d'autorisation pour le fournisseur OAuth donné. Utilisez-la pour rediriger l'utilisateur ou ouvrir un popup.

Auth:x-api-key: pk_live_...
Réponse
json
{
  "url": "https://accounts.google.com/o/oauth2/v2/auth?client_id=..."
}
POST/v1/auth/oauth/callback

Rappel OAuth

Échangez un code d'autorisation OAuth contre des jetons Authon. Appelé par le SDK après le retour du popup.

Auth:x-api-key: pk_live_...
Corps de la requête
json
{
  "provider": "google",
  "code": "4/0AX4XfWh...",
  "state": "random_state_string",
  "codeVerifier": "pkce_verifier"   // required if PKCE was used
}
Réponse
json
{
  "accessToken": "eyJhbGci...",
  "refreshToken": "rt_...",
  "expiresIn": 900,
  "user": { ... }
}

Image de marque

GET/v1/auth/branding

Obtenir l'image de marque

Retournez la configuration de l'image de marque pour le projet. Utilisé par le SDK JS pour styliser le modal de connexion.

Auth:x-api-key: pk_live_...
Réponse
json
{
  "brandName": "Acme Corp",
  "primaryColorStart": "#7c3aed",
  "primaryColorEnd": "#4f46e5",
  "lightBg": "#ffffff",
  "lightText": "#111827",
  "darkBg": "#0f172a",
  "darkText": "#f1f5f9",
  "borderRadius": 12,
  "showEmailPassword": true,
  "showDivider": true,
  "termsUrl": "https:0
  13: "https://acme.com/privacy",
  "logoDataUrl": "data:image/png;base64,..."
}

Codes d'erreur

Toutes les réponses d'erreur suivent une structure cohérente avec un code de statut HTTP et un corps JSON :

json
{
  "statusCode": 401,
  "error": "Unauthorized",
  "message": "Invalid or expired access token"
}
StatutErreurDescription
400Bad RequestCorps de requête manquant ou malformé
401UnauthorizedClé API / jeton manquant, invalide ou expiré
403ForbiddenLa clé est valide mais ne dispose pas des permissions pour cette action
404Not FoundLa ressource demandée n'existe pas
409ConflictL'adresse e-mail est déjà enregistrée
422Unprocessable EntityValidation échouée — vérifiez les exigences des champs
429Too Many RequestsLimite de débit dépassée — réessayez après le délai indiqué
500Internal Server ErrorErreur inattendue côté serveur
Authon — Plateforme d’authentification universelle