API — Platform API Keys
Préfixe: /api/api-keys
Les Platform API keys sont utilisées pour sécuriser certains endpoints “public server-to-server” (ex: création de session KYC). Elles sont distinctes des clés Marketplace (Gateway).
Important:
- Gestion via le dashboard (middleware
authenticate) — ce n’est pas une auth par API key. - Le secret (
token) est renvoyé uniquement lors de la création.
GET /api/api-keys
Liste toutes les clés de la company de l’utilisateur.
Response (200)
| Field | Type | Description |
|---|---|---|
apiKeys | array | Liste des clés. Chaque entrée inclut scopes et activeNow. |
Errors
| Status | Body |
|---|---|
| 500 | { "error": "Failed to list API keys" } |
POST /api/api-keys
Crée une clé et renvoie le secret en clair.
Body (JSON)
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | yes | Trim, non vide. |
scopes | string[] | no | Default ['*'], max 100. |
expiresAt | string (ISO) | no | Si invalide: 400. |
Response (201)
| Field | Type | Description |
|---|---|---|
apiKey | object | Métadonnées (sans secret). |
token | string | Secret (préfixe dlk_...). |
Errors
| Status | Body | When |
|---|---|---|
| 400 | { "error": "name is required" } | name manquant. |
| 400 | { "error": "expiresAt must be an ISO date string" } | expiresAt invalide. |
| 409 | { "error": "Please retry (key collision)" } | Collision très rare. |
| 500 | { "error": "Failed to create API key" } | Erreur serveur. |
GET /api/api-keys/stats
Retourne un agrégat simple (total, actives, etc.).
Response (200)
| Field | Type |
|---|---|
stats.total | number |
stats.active | number |
stats.revoked_or_disabled | number |
stats.used_last_24h | number |
Errors
| Status | Body |
|---|---|
| 500 | { "error": "Failed to load API key stats" } |
POST /api/api-keys/:id/revoke
Désactive une clé et marque revoked_at.
Response (200)
{ "ok": true }
Errors
| Status | Body | When |
|---|---|---|
| 404 | { "error": "API key not found" } | Clé inconnue pour cette company. |
| 500 | { "error": "Failed to revoke key" } | Erreur serveur. |
Utilisation (authenticateApiKey)
Headers acceptés:
x-api-key: <dlk_...>Authorization: Bearer <dlk_...>
Exemple (KYC):
curl -X POST "https://<your-backend-host>/api/kyc/public/sessions" -H "Content-Type: application/json" -H "x-api-key: dlk_<...>" -d '{"instanceKey":"<public_instance_key>","mode":"prod"}'