Skip to main content
Each node in a workflow accepts an optional config object. Configs are validated server-side and stored alongside the workflow.

Common config keys

{
  "document_verification": {
    "documents_allowed": { "GB": ["PASSPORT"], "US": ["PASSPORT","DRIVERS_LICENSE"] },
    "max_retry_attempts": 3,
    "nfc_required":       false
  },
  "biometric_kyc": {
    "liveness_method":         "passive",
    "face_match_threshold":    70,
    "face_match_decline_threshold": 50
  },
  "aml_screening": {
    "lists":              ["OFAC_SDN","EU_CONSOLIDATED","UN_SC","PEP_GLOBAL"],
    "decline_threshold":  80,
    "review_threshold":   40
  },
  "phone_verification": {
    "channels":         ["sms","whatsapp"],
    "reject_voip":      true,
    "reject_prepaid":   false
  },
  "address_verification": {
    "max_age_days":     90,
    "name_match":       "fuzzy"
  }
}

Updating a config

curl -X PATCH https://identity.contra.id/v1/workflows/$WF_ID \
  -H "x-api-key: $CONTRA_KEY" -H "Content-Type: application/json" \
  -d '{
    "nodes": [
      { "type": "document_verification", "required": true,
        "config": { "max_retry_attempts": 5, "nfc_required": true } },
      { "type": "aml_screening", "required": true,
        "config": { "decline_threshold": 75 } }
    ]
  }'
The full workflow definition is returned. Existing sessions running on this workflow use the frozen-at-creation config; new sessions pick up the change.