Skip to main content
POST
/
v3
/
workflows
curl --request POST \
  --url https://verification.didit.me/v3/workflows/ \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "workflow_label": "Standard KYC",
  "workflow_type": "kyc",
  "is_default": true,
  "is_liveness_enabled": true,
  "face_liveness_method": "passive",
  "is_face_match_enabled": true
}
'

Authorizations

x-api-key
string
header
required

Body

application/json
workflow_label
string

Display name for the workflow

Example:

"Standard KYC"

workflow_type
enum<string>

Base workflow type. Use 'kyc' for identity verification with ID scanning.

Available options:
kyc,
adaptive_age_verification,
biometric_authentication,
address_verification,
questionnaire_verification,
email_verification,
phone_verification
Example:

"kyc"

is_default
boolean

Set as the default workflow. Only one workflow can be default. Sessions created without a workflow_id use the default.

Example:

true

is_liveness_enabled
boolean

Enable liveness detection (anti-spoofing). Verifies the user is a real person, not a photo/video.

Example:

true

face_liveness_method
enum<string>

Liveness method. 'passive' uses a single selfie, 'active_3d' requires head movements, 'flashing' uses screen light patterns.

Available options:
passive,
active_3d,
flashing
Example:

"passive"

face_liveness_score_decline_threshold
integer

Liveness score below this value will decline the session (0-100).

Required range: 0 <= x <= 100
Example:

50

is_face_match_enabled
boolean

Enable face match (1:1). Compares the selfie against the ID document portrait photo.

Example:

true

face_match_score_decline_threshold
integer

Face match score below this value will decline the session.

Required range: 0 <= x <= 100
Example:

40

face_match_score_review_threshold
integer

Face match score below this but above decline threshold will flag for manual review.

Required range: 0 <= x <= 100
Example:

60

is_aml_enabled
boolean

Enable AML (Anti-Money Laundering) screening. Checks the user against sanctions lists, PEP lists, and adverse media.

Example:

false

aml_decline_threshold
integer

AML match score above this value will decline the session.

Required range: 0 <= x <= 100
Example:

80

is_phone_verification_enabled
boolean

Enable phone verification via SMS/WhatsApp OTP.

Example:

false

is_email_verification_enabled
boolean

Enable email verification via OTP.

Example:

false

is_database_validation_enabled
boolean

Enable government database validation (available for select countries).

Example:

false

is_ip_analysis_enabled
boolean

Enable IP analysis to detect VPN/proxy usage and geolocation mismatch.

Example:

false

is_nfc_enabled
boolean

Enable NFC chip reading for ePassports (mobile only).

Example:

false

documents_allowed
object

Countries and document types allowed. Format: {ISO3_COUNTRY: {DOC_TYPE: {enabled: 1, expiration_check_mode: 'strict', preferred_characters: 'latin', subtypes: []}}}. Leave empty to accept all documents.

Example:
{}
duplicated_user_action
enum<string>

Action when the same person has already been verified.

Available options:
no_action,
review,
decline
Example:

"review"

max_retry_attempts
integer

Maximum number of retry attempts allowed per session.

Example:

3

retry_window_days
integer

Number of days within which retries are allowed.

Example:

7

Response

Workflow created successfully. Returns the full workflow object with the generated UUID. Use this UUID as workflow_id when creating sessions.