Passer au contenu principal
POST
curl

Vue d’ensemble

Crée explicitement une entité User avant le lancement de toute session. L’entité renvoyée passe au statut ACTIVE, sauf indication contraire. Vous pouvez également faire en sorte que le même appel envoie à la personne un lien de vérification par e-mail (voir Envoyer un lien de vérification).

Quand l’utiliser

  • Pré-renseigner les métadonnées (niveau, source d’inscription, étiquettes internes) avant que le client ne procède à sa vérification.
  • Migrer depuis un autre prestataire : recréer votre liste d’utilisateurs existants dans Didit afin que l’historique et les analyses partent d’une base de référence connue.
  • Importer des visages de profil de confiance : créez d’abord l’utilisateur, puis appelez Téléverser un visage utilisateur avec le didit_internal_id renvoyé.
  • Cas d’usage limités aux transactions : enregistrez un utilisateur avec vendor_data afin de soumettre des transactions sans jamais lancer de session de Vérification des utilisateurs (KYC).
  • Inviter une personne à se vérifier : créez la personne et envoyez-lui un lien de vérification par e-mail en un seul appel.

Coordonnées

Vous pouvez transmettre les coordonnées de la personne en même temps que les champs du profil. first_name et last_name sont concaténés avec un espace dans full_name lorsque vous n’envoyez pas full_name. email et phone_number sont stockés dans metadata.contact, et country dans metadata.address. country accepte un code ISO 3166, alpha-2 ou alpha-3 (ES ou ESP), et est stocké en majuscules. Si la valeur metadata que vous envoyez contient déjà une valeur contact ou address qui n’est pas un objet JSON, Didit ne l’écrase pas : l’appel renvoie 400 pour le champ concerné.

Envoyer un lien de vérification

Définissez send_verification_link sur true pour inviter la personne à se vérifier dans le même appel. Didit crée une session de vérification pour la personne selon le workflow indiqué dans workflow_id et lui envoie le lien à l’adresse email. Utilisez language pour choisir la langue de l’e-mail ; il est en anglais si vous ne le renseignez pas.
  • email et workflow_id sont obligatoires avec un lien, et le workflow doit vérifier une personne : un workflow de Vérification d’entreprise (KYB) renvoie 400.
  • La session passe par les mêmes contrôles que Créer une session. Un vendor_data figurant sur une liste de blocage, ou un solde de crédits insuffisant, renvoie 400.
  • La personne et la session sont créées ensemble ou pas du tout. Si un contrôle échoue, rien n’est écrit et aucun e-mail n’est envoyé.
  • La réponse contient verification_link avec le session_id, le session_number, le status, l’url, le workflow_id de la session et l’email auquel le lien a été envoyé. Sans lien, verification_link vaut null.

Notes

  • vendor_data est obligatoire et doit être unique par application. Tenter de créer un doublon renvoie une erreur de conflit : utilisez PATCH /v3/users/{vendor_data}/ pour mettre à jour un utilisateur existant.
  • vendor_data a une limite stricte de 2000 octets (encodage UTF-8). Une valeur qui dépasse cette limite renvoie une erreur de validation 400 au lieu d’être acceptée.
  • Les champs normalement issus des sessions vérifiées (full_name, date_of_birth) peuvent être pré-renseignés ici, mais ils peuvent être écrasés par la première session de Vérification des utilisateurs (KYC) approuvée.
  • Cet endpoint n’accepte pas les images de visage. Pour associer un visage importé de confiance, utilisez POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/ après que cet endpoint a renvoyé didit_internal_id.
  • La création elle-même n’envoie aucun webhook. Les modifications ultérieures de l’utilisateur envoient user.data.updated ou user.status.updated.
  • Avec send_verification_link, la nouvelle session met à jour l’utilisateur dans le même appel, ce qui envoie user.data.updated.

Autorisations

Le secret principal et les clés API à accès complet peuvent toujours appeler cet endpoint. Une clé à accès personnalisé a besoin de l’autorisation d’écriture sur Personnes (users). Avec send_verification_link: true, elle a aussi besoin de l’autorisation d’écriture sur les Sessions, car l’appel crée une session et en transmet le lien. Sans cette autorisation, l’appel renvoie 403 avec le message This API key has no write access to sessions. et rien n’est écrit. Une clé limitée à certains workflows ou à certaines sessions approuvées ne peut pas accéder à cet endpoint. Les rôles et autorisations de la Console déterminent ce qu’un membre de l’équipe peut faire dans la Console. Ils ne sont pas évalués pour les requêtes effectuées avec une clé API.

Liens connexes

Autorisations

x-api-key
string
header
requis

La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.

Corps

application/json
vendor_data
string
requis

Votre identifiant unique pour cet utilisateur (chaîne libre, PAS un UUID). Doit être unique parmi les utilisateurs de l'application ; mis en correspondance exactement tel qu'envoyé.

full_name
string | null

Nom complet légal de l'utilisateur.

Maximum string length: 512
display_name
string | null

Nom d'affichage convivial affiché dans la console (prend le pas sur full_name pour l'affichage de l'interface utilisateur).

Maximum string length: 255
date_of_birth
string<date> | null

Date de naissance au format YYYY-MM-DD.

status
enum<string>
défaut:ACTIVE

Statut de cycle de vie initial. La valeur par défaut est ACTIVE.

Options disponibles:
ACTIVE,
FLAGGED,
BLOCKED
metadata
object | null

Objet JSON arbitraire que vous associez à l'utilisateur. La valeur par défaut est {}.

approved_emails
string[]

Adresses e-mail pré-approuvées pour cet utilisateur, par exemple ["john@example.com"].

approved_phones
string[]

Numéros de téléphone pré-approuvés pour cet utilisateur, par exemple ["+14155551234"].

issuing_states
string[]

Pays de délivrance pré-enregistrés (ISO 3166-1 alpha-3), par exemple ["USA"].

first_name
string

Prénom. Lorsque full_name n'est pas envoyé, Didit concatène first_name et last_name avec un espace pour former full_name. Non renvoyé sous la forme d'un champ distinct.

Maximum string length: 255
last_name
string

Nom de famille. Combiné avec first_name pour former full_name lorsque full_name n'est pas envoyé. N'est pas renvoyé en tant que champ distinct.

Maximum string length: 255
email
string<email>

E-mail de contact, stocké dans metadata.contact.email (il remplace un email que vous envoyez dans metadata.contact). Requis lorsque send_verification_link est défini sur true : le lien est envoyé à cette adresse. Si metadata.contact n'est pas un objet JSON, l'appel renvoie 400 sur ce champ.

phone_number
string

Numéro de téléphone de contact, stocké dans metadata.contact.phone_number. Si metadata.contact n'est pas un objet JSON, l'appel renvoie 400 sur ce champ.

Maximum string length: 32
country
string

Pays sous forme de code ISO 3166, alpha-2 ou alpha-3 (ES ou ESP). Stocké en majuscules dans metadata.address.country. Si metadata.address n'est pas un objet JSON, l'appel renvoie 400 sur ce champ.

Maximum string length: 3

Lorsque la valeur est true, Didit crée une session de vérification pour la personne sur le workflow workflow_id et lui envoie le lien par e-mail à l'adresse email. Nécessite email et workflow_id. Une clé API restreinte nécessite également les droits d'écriture sur sessions.

workflow_id
string<uuid>

Le workflow de la session de vérification. Requis lorsque send_verification_link vaut true. Il doit vérifier une personne : un workflow de Vérification d'entreprise (KYB) est refusé. Ignoré dans le cas contraire.

language
string

Langue de l'e-mail de vérification, sous forme de code de langue prise en charge. Anglais en cas d'omission. Ignoré lorsque send_verification_link n'est pas true.

Maximum string length: 10

Réponse

Utilisateur créé. Enregistrement utilisateur complet (même format que Obtenir un utilisateur), plus verification_link : la session de vérification envoyée par e-mail par Didit lorsque send_verification_link était à true, sinon null.

Détails complets de l'utilisateur. Étend UserListItem avec les métadonnées, les commentaires et updated_at.

La session de vérification créée et envoyée par e-mail à la personne par Didit. Toujours présent : null lorsque send_verification_link n'était pas true.

didit_internal_id
string<uuid>

UUID interne stable de Didit pour cet utilisateur.

vendor_data
string | null

Votre identifiant unique pour cet utilisateur (transmis lors de la création des sessions). Peut être nul si aucun identifiant fournisseur n'a été fourni.

display_name
string | null

Nom d'affichage personnalisé défini par vous

full_name
string | null

Nom complet extrait des documents vérifiés

date_of_birth
string<date> | null
effective_name
string | null

Meilleur nom disponible : display_name s'il est défini, sinon full_name

status
enum<string>

Statut de cycle de vie de l'enregistrement utilisateur (PAS un statut de session). ACTIVE est la valeur par défaut, FLAGGED signale l'utilisateur pour un examen manuel, BLOCKED empêche de nouvelles sessions pour ce vendor_data.

Options disponibles:
ACTIVE,
FLAGGED,
BLOCKED
portrait_image_url
string | null

URL pré-signée de la photo de portrait de l'utilisateur (expire après quelques heures)

session_count
integer

Nombre total de sessions de vérification pour cet utilisateur

approved_count
integer

Nombre de sessions approuvées

declined_count
integer

Nombre de sessions refusées

in_review_count
integer

Nombre de sessions en cours d'examen

issuing_states
string[]

Codes ISO 3166-1 alpha-3 des pays de délivrance observés sur les documents d'identité approuvés de cet utilisateur, par ex. ["USA", "ESP"]. Tableau vide s'il n'y en a aucun.

approved_emails
string[]

Adresses e-mail vérifiées collectées à partir des sessions approuvées de cet utilisateur, par ex. ["john@example.com"].

approved_phones
string[]

Numéros de téléphone vérifiés collectés à partir des sessions approuvées de cet utilisateur, par ex. ["+14155551234"].

features
object

Statut agrégé par fonctionnalité sur l'ensemble des sessions de cet utilisateur. Clés possibles : ID_VERIFICATION, NFC, LIVENESS, FACE_MATCH, POA, QUESTIONNAIRE, EMAIL_VERIFICATION, PHONE, AML, IP_ANALYSIS, AGE_ESTIMATION, DATABASE_VALIDATION. Valeurs possibles : Approved, Declined, In Review, Not Finished, Resub Requested.

features_list
object[]

Mêmes données que features, sous la forme d'un tableau ordonné d'objets {feature, status}.

last_session_at
string<date-time> | null

Horodatage de la session la plus récente

first_session_at
string<date-time> | null

Horodatage de la première session

last_activity_at
string<date-time> | null

Horodatage de l'activité la plus récente sur cet utilisateur (session, transaction, changement de statut, modification des données, etc.).

tags
object[]

Attributions de tags. REMARQUE : sur les réponses détaillées, chaque entrée est un objet de liaison de tag ({uuid, tag: {...}, added_by_email, added_by_name, created_at}), contrairement au format plat {uuid, name, color} utilisé sur les réponses de liste.

created_at
string<date-time>
metadata
object

JSON de métadonnées personnalisées que vous avez associé à cet utilisateur. La valeur par défaut est {}.

comments
object[]

Journal d'activité et commentaires pour cet utilisateur (changements de statut, modifications de profil, notes manuelles).

updated_at
string<date-time>
Dernière modification le 7 novembre 2026