/v3/users/. Profile attachments, such as imported face upload, use the organization/application path with didit_internal_id. This page gives you the conceptual walkthrough — see the API reference for full request / response schemas.
List users
GET /v3/users/
Returns a paginated list of users for your application. Supports filters on status, search, date range, and more.
- Sync a subset of users to your data warehouse each day.
- Find flagged users for an analyst queue.
- Search users by display name.
Get a user
GET /v3/users/{vendor_data}/
Retrieve a single user by vendor_data. Returns the full data model including aggregated counters.
vendor_data in the URL is case-sensitive. Always pass the exact value you used on session creation.Create a user
POST /v3/users/create/
Create a User entity before any session runs. Useful for:
- Seeding metadata or custom fields before the customer verifies.
- Setting an initial status (e.g.
FLAGGEDwhile your onboarding team reviews manual documents). - Pre-loading users from an existing database so you have a complete roster from day one.
vendor_data already exists, the call returns a conflict error — use PATCH to update instead.
Upload an imported face
POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/
Attach a trusted face image to an existing User profile. This is the right follow-up when you import users from another provider and want Didit to carry their face evidence before the first Didit session.
Update a user
PATCH /v3/users/{vendor_data}/
Update mutable profile fields. Most fields derived from verified sessions are read-only — attempting to change them via PATCH will either be ignored or flagged in the audit log.
Mutable fields: display_name, metadata, tags.
Read-only after verification: full_name, date_of_birth, portrait_image, all aggregate counters, features map.
user.data.updated webhook with the changed_fields array.
Change status
PATCH /v3/users/{vendor_data}/update-status/
Move a user between ACTIVE, FLAGGED, and BLOCKED. Status changes propagate to future sessions and transactions.
Emits a
user.status.updated webhook.
Delete users (batch)
POST /v3/users/delete/
Delete one or more users. The user records are removed permanently, together with every biometric template retained for them after session deletion. Their verification sessions are not covered by this endpoint and survive with their link to the user cleared; delete them with Delete Session or Batch Delete Sessions. Transactions are not covered either; delete those from the Console.
{"deleted": <int>}, not a per-item result. Identifiers that matched nothing are skipped silently, so send a de-duplicated list if you want to compare deleted against the number of identifiers you sent.
Permission model
All/v3/users/* endpoints are scoped by the users permission resource. Your API key’s role determines which operations are allowed:
See Roles & permissions for the full matrix.
Rate limits and idempotency
- All
/v3/users/*endpoints are subject to the standard rate limits. createis not idempotent — retrying with the samevendor_datareturns a conflict. De-dupe on your side, or alwaysGETfirst.deleteis idempotent — deleting an already-deleted user is a no-op.
Webhooks fired by these operations
Next steps
Data model
Full field reference.
List API
GET /v3/users/ schema.
Create API
POST /v3/users/create/ schema.
Upload face
Attach imported face images to User profiles.