Skip to main content
PATCH
/
v3
/
workflows
/
{settings_uuid}
cURL
curl -X PATCH 'https://verification.didit.me/v3/workflows/a1b2c3d4-5678-90ab-cdef-111111111111/' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"workflow_label": "Premium KYC"}'
{
  "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "workflow_label": "<string>",
  "workflow_type": "<string>",
  "is_default": true,
  "is_archived": true,
  "total_price": "<string>",
  "min_price": "<string>",
  "max_price": "<string>",
  "features": [
    "<string>"
  ],
  "is_simple_workflow": true,
  "is_editable": true,
  "workflow_url": "<string>",
  "max_retry_attempts": 123,
  "retry_window_days": 123,
  "face_liveness_max_attempts": 2,
  "face_match_max_attempts": 2,
  "special_add_on_prices": {}
}
Use PATCH for partial updates. To rename a workflow, send only workflow_label.
{
  "workflow_label": "Premium KYC"
}
To change the checks in the workflow, send the full desired features array. This replaces the previous feature order and configuration.
{
  "features": [
    {
      "feature": "OCR",
      "config": {
        "documents_allowed": {
          "USA": {
            "DL": {
              "enabled": 1,
              "sides": 2
            }
          }
        }
      }
    },
    {
      "feature": "AML",
      "config": {
        "aml_score_review_threshold": 70,
        "aml_score_approve_threshold": 30
      }
    }
  ]
}
The v3 API keeps workflows simple: one linear path and one final status step. Branching, action nodes, and webhook nodes are not accepted here.

Feature config reference

When you send features in a PATCH, the array replaces the previous feature order and configuration. Include every required config again. The exact config object depends on the feature. Review the full field list, defaults, required settings, value ranges, and examples in Workflow Feature Configs. For OCR, omit config.documents_allowed, send null, or send {} to allow every supported document type. Include it only when you want to restrict the workflow to specific countries or document types. For QUESTIONNAIRE, config.questionnaire_uuid is required.

Updating workflow settings

You can patch session-level settings without touching the feature list. Send only the fields you want to change.
FieldTypeDescription
is_white_label_enabledbooleanEnable white-label customization for sessions created with this workflow.
is_desktop_allowedbooleanAllow the verification flow to run on desktop browsers.
max_retry_attemptsinteger (0–10)Maximum retry attempts allowed after a declined verification. 0 blocks the user after the first decline.
retry_window_daysinteger (1–365) or nullRolling window in days used to count retries (null = all-time limit).
session_expiration_timeinteger (3600–2419200)Seconds before an unfinished session expires. Minimum 1 hour, maximum 4 weeks.
{
  "is_white_label_enabled": true,
  "is_desktop_allowed": true,
  "max_retry_attempts": 5,
  "retry_window_days": 14,
  "session_expiration_time": 86400
}
Use the workflow uuid returned by the list, create, or get endpoint as settings_uuid in this URL.

Authorizations

x-api-key
string
header
required

Path Parameters

settings_uuid
string<uuid>
required

Per-version UUID of the workflow to update.

Body

application/json

Update workflow metadata or replace the full linear feature list.

workflow_label
string

Display name for the workflow.

is_default
boolean

Set this workflow as the default for new sessions.

status
enum<string>
Available options:
draft,
published
features
object[]

If provided, this replaces the full feature order and configuration.

Minimum array length: 1
is_white_label_enabled
boolean

Enable white-label customization for sessions created with this workflow.

is_desktop_allowed
boolean

Allow the verification flow to run on desktop browsers.

max_retry_attempts
integer

Maximum retry attempts allowed after a declined verification. 0 blocks the user after the first decline.

Required range: 0 <= x <= 10
retry_window_days
integer | null

Rolling window in days used to count retries. null enforces an all-time limit.

Required range: 1 <= x <= 365
face_liveness_max_attempts
integer

Maximum liveness submissions per session. This value is also copied into generated liveness and age-estimation workflow nodes unless the feature-level config overrides it.

Required range: 1 <= x <= 3
face_match_max_attempts
integer

Maximum face-match submissions per session. This value is also copied into generated face-match workflow nodes unless the feature-level config overrides it.

Required range: 1 <= x <= 3
session_expiration_time
integer

Seconds before an unfinished session expires. Minimum 1 hour (3600), maximum 4 weeks (2419200).

Required range: 3600 <= x <= 2419200

Response

Workflow updated. The body is the latest state of the workflow (either the in-place draft or the newly created draft version when patching a published row).

A workflow in the list view.

uuid
string<uuid>

Workflow UUID. Use as workflow_id when creating sessions.

workflow_label
string

Display name for the workflow

workflow_type
string | null

Base type: kyc, adaptive_age_verification, biometric_authentication, etc.

is_default
boolean

Whether this is the default workflow for new sessions

is_archived
boolean
total_price
string

Total price per verification in USD

min_price
string
max_price
string
features
string[]

Enabled features (e.g., OCR, LIVENESS, FACE_MATCH, AML)

is_simple_workflow
boolean

True if not graph-based

is_editable
boolean

True if no sessions have used this workflow

workflow_url
string
max_retry_attempts
integer
retry_window_days
integer
face_liveness_max_attempts
integer

Maximum liveness submissions per session. Default 3: one initial attempt plus two retries.

Required range: 1 <= x <= 3
face_match_max_attempts
integer

Maximum face-match submissions per session. Default 3: one initial attempt plus two retries.

Required range: 1 <= x <= 3
special_add_on_prices
object