Create User
Pre-create a user by vendor_data without a verification session. Must be unique among non-deleted users (conflicts 400). Not idempotent.
Overview
Explicitly creates a User entity before any session is run. The returned entity lands inACTIVE status unless you specify otherwise.
When to use it
- Pre-seed metadata (tier, signup source, internal tags) before the customer verifies.
- Migrate from another vendor — recreate your existing user roster in Didit so history and analytics start from a known baseline.
- Import trusted profile faces — create the User first, then call Upload User Face with the returned
didit_internal_id. - Transaction-only use cases — register a User with
vendor_dataso you can submit transactions without ever running a User Verification (KYC) session.
Notes
vendor_datais required and must be unique per application. Attempting to create a duplicate returns a conflict error — usePATCH /v3/users/{vendor_data}/to update an existing user.- Fields that are normally derived from verified sessions (
full_name,date_of_birth) can be seeded here but may be overwritten by the first approved User Verification (KYC) session. - Face images are not accepted by this endpoint. To attach a trusted imported face, use
POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/after this endpoint returnsdidit_internal_id. - Creating a user emits a
user.data.updatedwebhook.
Permissions
Role must grantcreate:users.
Related
Authorizations
Body
Your unique identifier for this user (free-form string, NOT a UUID). Must be unique among non-deleted users for the application; matching is case-insensitive after normalisation.
Full legal name of the user.
512Friendly display name shown in the console (takes precedence over full_name for UI display).
Date of birth in YYYY-MM-DD format.
Initial lifecycle status. Defaults to ACTIVE.
ACTIVE, FLAGGED, BLOCKED Arbitrary JSON object you attach to the user.
Pre-trusted emails for this user (e.g. {"john@example.com": true}).
Pre-trusted phone numbers for this user.
Pre-recorded issuing-country counts (ISO 3166-1 alpha-3 keys), e.g. {"USA": 1}.
Response
User created. Full user record returned (same shape as Get User).
Full user detail. Extends UserListItem with metadata, comments, and updated_at.
Didit's stable internal UUID for this user.
Your unique identifier for this user (passed when creating sessions). This can be null when no vendor identifier was supplied.
Custom display name set by you
Full name extracted from verified documents
Best available name: display_name if set, otherwise full_name
Overall verification status of this user
Approved, Declined, In Review, Pending Presigned URL of the user's portrait photo (expires after a few hours)
Total number of verification sessions for this user
Number of approved sessions
Number of declined sessions
Number of sessions in review
Map of ISO3 country codes from approved documents, e.g. {"USA": 2, "ESP": 1}
Verified email addresses, e.g. {"john@example.com": true}
Verified phone numbers
Map of feature name to latest status, e.g. {"OCR": "Approved", "LIVENESS": "Approved", "AML": "In Review"}
Same as features but as an array of {feature, status} objects
Timestamp of the most recent session
Timestamp of the first session
Tags assigned to this user
Custom metadata JSON you attached to this user
Activity log and comments for this user