Back-office

Créer une session

POST /v1/sessions · clé secrète sk_…

Crée une vérification pour un usager et réserve son prix sur votre wallet (mode live). La réponse contient le client_secret à transmettre à votre front pour ouvrir le SDK. Il expire au bout de 15 minutes si l'usager ne commence pas, et ne vaut que pour cette session.

Appelez cette route depuis votre serveur uniquement. Votre clé secrète ne doit jamais apparaître dans une application mobile ou un navigateur.

Paramètres du corps

Corps JSON (Content-Type: application/json).

external_id string obligatoire

Votre identifiant unique de cette requête dans votre base (une commande, une demande d'ouverture de compte…). Unique par mode : une seconde session avec le même external_id est refusée (409 external_id_taken). Renvoyé dans la session, les webhooks et les rappels ; permet de lire la session avec GET /v1/sessions/external/{external_id}. Lettres, chiffres et . _ : @ -. (255 caractères au plus)

metadata object facultatif

Jusqu'à 20 paires clé/valeur (clés de 1 à 40 caractères, valeurs de 500 au plus), renvoyées telles quelles dans la session et les webhooks. En mode test, test_document_outcome et test_liveness_outcome choisissent le résultat simulé (voir Clés et modes).

allowed_document_types array<string> facultatif

Pièces acceptées : id_card (CNI), passport. Par défaut, les deux : l'usager choisit dans le SDK.

locale string facultatif

Langue du parcours affiché à l'usager. Valeurs : fr, en. (défaut : fr)

return_url url facultatif

Adresse vers laquelle la page de vérification renvoie l'usager à la fin du parcours.

callback_url url facultatif

Adresse de votre serveur qui reçoit le statut final de cette session (vérifiée, rejetée, en revue manuelle puis décision de la revue, expirée, annulée), signé avec le secret des URL de rappel (voir Webhooks et rappels). https obligatoire en production.

En-têtes

Idempotency-Key string facultatif

Facultatif mais recommandé. Conservée 24 h : un appel rejoué avec la même clé et le même corps renvoie la même réponse (en-tête Idempotent-Replayed: true) et n'est facturé qu'une fois. 1 à 255 caractères.

Réponse : la session, avec en plus

client_secret string

Secret de la session, renvoyé une seule fois. Transmettez-le à votre front pour ouvrir le SDK ; il n'ouvre que cette session.

url string

Adresse de la page de vérification hébergée, à ouvrir directement si vous n'utilisez pas checkid.js.

Cycle de vie

created → document_pending → document_processing → challenge_pending → liveness_processing → verified | rejected | manual_review

Depuis tout état d'attente, la session peut passer à expired (30 minutes sans activité de l'usager) ou canceled. Détails dans Sessions et états.

Erreurs

402insufficient_fundsLe solde disponible ne couvre pas le prix de la session (mode live). La session n'est pas créée.
409external_id_takenUne session existe déjà avec cet external_id dans ce mode ; son id est dans le champ session_id de l'erreur.
400invalid_idempotency_keyIdempotency-Key vide ou trop longue.
409idempotency_request_in_progressUne requête avec la même Idempotency-Key est en cours.
422idempotency_key_reusedLa même Idempotency-Key a servi pour un corps différent.
422invalid_requestUn paramètre est absent ou mal formé ; voir le champ param.
401missing_api_keyEn-tête Authorization absent.
401invalid_api_keyClé inconnue, révoquée, ou clé publique utilisée à la place de la clé secrète.
403account_suspendedCompte suspendu : contactez CheckID.
429rate_limitedTrop de requêtes pour cette clé ; réessayez après le délai de l'en-tête Retry-After.

Format commun : voir Erreurs.