Skip to main content
GET
/
v3
/
session
/
{sessionId}
/
decision
/
cURL
curl -X GET 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/decision/' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Accept: application/json'
{
  "session_id": "11111111-2222-3333-4444-555555555555",
  "session_kind": "user",
  "session_number": 43762,
  "session_url": "https://verify.didit.me/session/11111111-2222-3333-4444-555555555555",
  "status": "In Review",
  "environment": "live",
  "workflow_id": "11111111-2222-3333-4444-555555555555",
  "features": [
    "ID_VERIFICATION",
    "NFC",
    "LIVENESS",
    "FACE_MATCH",
    "POA",
    "PHONE",
    "DATABASE_VALIDATION",
    "AML",
    "IP_ANALYSIS"
  ],
  "vendor_data": "11111111-1111-1111-1111-111111111111",
  "metadata": {
    "user_type": "premium",
    "account_id": "ABC123"
  },
  "expected_details": {
    "first_name": "Carmen",
    "last_name": "Española Española"
  },
  "contact_details": {
    "email": "carmen@example.com",
    "email_lang": "es",
    "send_notification_emails": false,
    "phone": null
  },
  "callback": "https://verify.didit.me/",
  "id_verifications": [
    {
      "node_id": "feature_ocr_1",
      "status": "Approved",
      "document_type": "Identity Card",
      "document_subtype": "ID_CARD_GENERIC",
      "document_number": "CAA000000",
      "personal_number": "99999999R",
      "portrait_image": "https://<media-host>/portrait.jpg",
      "front_image": "https://<media-host>/front.jpg",
      "front_video": "https://<media-host>/front.mp4",
      "back_image": "https://<media-host>/back.jpg",
      "back_video": "https://<media-host>/back.mp4",
      "full_front_image": "https://<media-host>/full_front.jpg",
      "full_back_image": "https://<media-host>/full_back.jpg",
      "front_image_camera_front": "https://<media-host>/front_camera_front.jpg",
      "back_image_camera_front": "https://<media-host>/back_camera_front.jpg",
      "date_of_birth": "1980-01-01",
      "age": 45,
      "expiration_date": "2031-06-02",
      "date_of_issue": "2021-06-02",
      "issuing_state": "ESP",
      "issuing_state_name": "Spain",
      "first_name": "Carmen",
      "last_name": "Española Española",
      "full_name": "Carmen Española Española",
      "gender": "F",
      "address": "Avda de Madrid 34, Madrid, Madrid",
      "formatted_address": "Avda de Madrid 34, Madrid, Madrid 28822, Spain",
      "place_of_birth": "Madrid",
      "marital_status": "Single",
      "nationality": "ESP",
      "extra_fields": {
        "dl_categories": [],
        "blood_group": null
      },
      "mrz": {
        "surname": "ESPANOLA ESPANOLA",
        "name": "CARMEN",
        "country": "ESP",
        "nationality": "ESP",
        "birth_date": "800101",
        "expiry_date": "310602",
        "sex": "F",
        "document_type": "ID",
        "document_number": "CAA000000",
        "optional_data": "99999999R",
        "optional_data_2": "",
        "birth_date_hash": "4",
        "expiry_date_hash": "8",
        "document_number_hash": "4",
        "final_hash": "1",
        "personal_number": "99999999R",
        "warnings": [],
        "errors": [],
        "mrz_type": "TD1",
        "mrz_string": "IDESPCAA000000499999999R<<<<<<\n8001014F3106028ESP<<<<<<<<<<<1\nESPANOLA<ESPANOLA<<CARMEN<<<<<",
        "mrz_key": "CAA000000480010143106028"
      },
      "parsed_address": {
        "city": "Madrid",
        "label": "Spain ID Card Address",
        "region": "Madrid",
        "country": "ES",
        "category": "Residential",
        "street_1": "Avda de Madrid 34",
        "street_2": null,
        "is_verified": true,
        "postal_code": "28822",
        "raw_results": {
          "types": [
            "street_address"
          ],
          "geometry": {
            "location": {
              "lat": 37.4222804,
              "lng": -122.0843428
            },
            "viewport": {
              "northeast": {
                "lat": 37.4237349802915,
                "lng": -122.083183169709
              },
              "southwest": {
                "lat": 37.4210370197085,
                "lng": -122.085881130292
              }
            },
            "location_type": "ROOFTOP"
          },
          "place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
          "formatted_address": "Avda de Madrid 34, 28822 Madrid, Spain",
          "navigation_points": [
            {
              "location": {
                "latitude": 37.4222804,
                "longitude": -122.0843428
              }
            }
          ],
          "address_components": [
            {
              "types": [
                "street_number"
              ],
              "long_name": "34",
              "short_name": "34"
            },
            {
              "types": [
                "route"
              ],
              "long_name": "Avda de Madrid",
              "short_name": "Avda de Madrid"
            },
            {
              "types": [
                "locality",
                "political"
              ],
              "long_name": "Madrid",
              "short_name": "Madrid"
            },
            {
              "types": [
                "country",
                "political"
              ],
              "long_name": "Spain",
              "short_name": "ES"
            },
            {
              "types": [
                "postal_code"
              ],
              "long_name": "28822",
              "short_name": "28822"
            }
          ]
        },
        "address_type": "Avda",
        "document_location": {
          "latitude": 37.4222804,
          "longitude": -122.0843428
        },
        "formatted_address": "Avda de Madrid 34, 28822 Madrid, Spain"
      },
      "front_image_camera_front_face_match_score": 95.5,
      "back_image_camera_front_face_match_score": 93.2,
      "front_image_quality_score": {
        "focus_score": 85.3,
        "brightness_score": 92.1,
        "brightness_issue": "ok",
        "is_document_fully_visible": true,
        "resolution_score": 72.4,
        "overall_score": 88.7
      },
      "back_image_quality_score": {
        "focus_score": 79.1,
        "brightness_score": 90.5,
        "brightness_issue": "ok",
        "is_document_fully_visible": true,
        "resolution_score": 72.4,
        "overall_score": 85.2
      },
      "extra_files": [
        "https://<media-host>/extra_id_verification.jpg"
      ],
      "matches": [
        {
          "session_id": "7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f",
          "session_number": 1234,
          "vendor_data": "user_ref_001",
          "verification_date": "2024-06-15T10:30:00Z",
          "user_details": {
            "name": "John Smith",
            "document_type": "ID",
            "document_number": "CLM148418"
          },
          "status": "Approved",
          "is_blocklisted": false,
          "api_service": null,
          "front_image_url": "https://<media-host>/document_front.jpg"
        },
        {
          "session_id": "b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e",
          "session_number": 1235,
          "vendor_data": null,
          "verification_date": "2024-05-20T14:45:00Z",
          "user_details": {
            "name": "John Smith",
            "document_type": "ID",
            "document_number": "CLM148418"
          },
          "status": "Declined",
          "is_blocklisted": true,
          "api_service": "ID_VERIFICATION",
          "front_image_url": "https://<media-host>/document_front_2.jpg"
        }
      ],
      "warnings": [
        {
          "feature": "ID_VERIFICATION",
          "risk": "QR_NOT_DETECTED",
          "additional_data": null,
          "log_type": "information",
          "short_description": "QR not detected",
          "long_description": "The system couldn't find or read the QR code on the document, which is necessary for document verification. This could be due to poor image quality or an unsupported document type.",
          "node_id": "feature_ocr_1"
        }
      ]
    }
  ],
  "nfc_verifications": [
    {
      "node_id": "feature_nfc_1",
      "status": "In Review",
      "portrait_image": "https://<media-host>/portrait.jpg",
      "signature_image": "https://<media-host>/signature.jpg",
      "chip_data": {
        "document_type": "ID",
        "issuing_country": "ESP",
        "document_number": "123456789",
        "expiration_date": "2030-01-01",
        "first_name": "John",
        "last_name": "Smith",
        "birth_date": "1990-05-15",
        "gender": "M",
        "nationality": "ESP",
        "address": "CALLE MAYOR 123 4B, MADRID, MADRID",
        "place_of_birth": "MADRID, MADRID"
      },
      "authenticity": {
        "sod_integrity": true,
        "dg_integrity": true
      },
      "certificate_summary": {
        "issuer": "Common Name: CSCA SPAIN, Serial Number: 3, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
        "subject": "Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
        "serial_number": "118120836164494130086420187336801405660",
        "not_valid_after": "2031-02-18 10:21:11",
        "not_valid_before": "2020-11-18 10:21:11"
      },
      "warnings": [
        {
          "feature": "NFC",
          "risk": "DATA_INCONSISTENT",
          "additional_data": null,
          "log_type": "warning",
          "short_description": "OCR and NFC mrz code extracted are not the same",
          "long_description": "The Optical Character Recognition (OCR) data and the NFC chip data don't match, indicating potential document tampering or data inconsistency.",
          "node_id": "feature_nfc_1"
        }
      ]
    }
  ],
  "liveness_checks": [
    {
      "node_id": "feature_liveness_1",
      "status": "Approved",
      "method": "ACTIVE_3D",
      "score": 89.92,
      "reference_image": "https://<media-host>/reference.jpg",
      "video_url": "https://<media-host>/video.mp4",
      "age_estimation": 24.3,
      "matches": [
        {
          "session_id": "7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f",
          "session_number": 1234,
          "vendor_data": "user_ref_001",
          "verification_date": "2024-06-15T10:30:00Z",
          "user_details": {
            "full_name": "John Smith",
            "document_type": "ID",
            "document_number": "CLM148418"
          },
          "status": "Approved",
          "is_blocklisted": false,
          "is_allowlisted": false,
          "api_service": null,
          "source": "session",
          "match_image_url": "https://<media-host>/face_match.jpg",
          "similarity_percentage": 98.5
        },
        {
          "session_id": "3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35",
          "session_number": 1100,
          "vendor_data": "customer_xyz",
          "verification_date": "2024-04-10T09:15:00Z",
          "user_details": {
            "full_name": "John Smith",
            "document_type": "P",
            "document_number": "DZ8375806"
          },
          "status": "Approved",
          "is_blocklisted": false,
          "is_allowlisted": false,
          "api_service": "PASSIVE_LIVENESS",
          "source": "session",
          "match_image_url": "https://<media-host>/face_match_2.jpg",
          "similarity_percentage": 95.2
        }
      ],
      "warnings": [
        {
          "feature": "LIVENESS",
          "risk": "LOW_LIVENESS_SCORE",
          "additional_data": null,
          "log_type": "information",
          "short_description": "Low liveness score",
          "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data.",
          "node_id": "feature_liveness_1"
        }
      ],
      "face_quality": null,
      "face_luminance": null
    }
  ],
  "face_matches": [
    {
      "node_id": "feature_face_match_1",
      "status": "In Review",
      "score": 65.43,
      "source_image_session_id": null,
      "source_image": "https://<media-host>/source-image.jpg",
      "target_image": "https://<media-host>/target-image.jpg",
      "warnings": [
        {
          "feature": "FACEMATCH",
          "risk": "LOW_FACE_MATCH_SIMILARITY",
          "additional_data": null,
          "log_type": "warning",
          "short_description": "Low face match similarity",
          "long_description": "The facial features of the provided image don't closely match the reference image, suggesting a potential identity mismatch.",
          "node_id": "feature_face_match_1"
        }
      ]
    }
  ],
  "phone_verifications": [
    {
      "node_id": "feature_phone_1",
      "status": "Approved",
      "phone_number_prefix": "+34",
      "phone_number": "600600600",
      "full_number": "+34600600600",
      "country_code": "ES",
      "country_name": "Spain",
      "carrier": {
        "name": "Orange",
        "type": "mobile"
      },
      "is_disposable": false,
      "is_virtual": false,
      "verification_method": "sms",
      "verification_attempts": 1,
      "verified_at": "2024-07-28T06:47:35.654321Z",
      "lifecycle": [
        {
          "type": "PHONE_VERIFICATION_MESSAGE_SENT",
          "timestamp": "2025-08-24T09:12:39.580554+00:00",
          "details": {
            "status": "Success",
            "reason": null,
            "channel": "sms",
            "actual_channel": "sms"
          },
          "fee": 0.1
        },
        {
          "type": "VALID_CODE_ENTERED",
          "timestamp": "2025-08-24T09:12:39.662157+00:00",
          "details": {
            "code_tried": "123456",
            "status": "Approved"
          },
          "fee": 0
        },
        {
          "type": "PHONE_VERIFICATION_APPROVED",
          "timestamp": "2025-08-24T09:12:39.684292+00:00",
          "details": null,
          "fee": 0
        }
      ],
      "warnings": [],
      "matches": [
        {
          "session_id": null,
          "session_number": null,
          "vendor_data": null,
          "verification_date": null,
          "phone_number": "+34600000000",
          "status": null,
          "is_blocklisted": true,
          "api_service": null,
          "source": "list_entry"
        }
      ]
    }
  ],
  "email_verifications": [
    {
      "node_id": "feature_email_1",
      "status": "Approved",
      "email": "test@example.com",
      "is_breached": true,
      "breaches": [
        {
          "name": "TAPAirPortugal",
          "domain": "flytap.com",
          "logo_path": "https://logos.haveibeenpwned.com/TAPAirPortugal.png",
          "breach_date": "2022-08-25",
          "description": "In August 2022, the Portuguese airline <a href=\"https://www.bleepingcomputer.com/news/security/ragnar-locker-ransomware-claims-attack-on-portugals-flag-airline/\" target=\"_blank\" rel=\"noopener\">TAP Air Portugal was the target of a ransomware attack perpetrated by the Ragnar Locker gang</a> who later leaked the compromised data via a public dark web site. Over 5M unique email addresses were exposed alongside other personal data including names, genders, DoBs, phone numbers and physical addresses.",
          "is_verified": true,
          "data_classes": [
            "dates_of_birth",
            "email_addresses",
            "genders",
            "names",
            "nationalities",
            "phone_numbers",
            "physical_addresses",
            "salutations",
            "spoken_languages"
          ],
          "breach_emails_count": 6083479
        }
      ],
      "is_disposable": false,
      "is_undeliverable": false,
      "verification_attempts": 1,
      "verified_at": "2025-09-15T17:36:19.963451Z",
      "warnings": [
        {
          "feature": "EMAIL",
          "risk": "BREACHED_EMAIL_DETECTED",
          "additional_data": null,
          "log_type": "information",
          "short_description": "Breached email detected",
          "long_description": "This email address was found in one or more known data breaches.",
          "node_id": "feature_email_1"
        }
      ],
      "lifecycle": [
        {
          "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
          "timestamp": "2025-09-15T17:36:19.792684+00:00",
          "details": {
            "status": "Success",
            "reason": null
          },
          "fee": 0.03
        },
        {
          "type": "VALID_CODE_ENTERED",
          "timestamp": "2025-09-15T17:36:19.963427+00:00",
          "details": {
            "code_tried": "123456",
            "status": "Approved"
          },
          "fee": 0
        },
        {
          "type": "EMAIL_VERIFICATION_DECLINED",
          "timestamp": "2025-09-15T17:36:20.081471+00:00",
          "details": {
            "reason": "BREACHED_EMAIL_DETECTED"
          },
          "fee": 0
        }
      ],
      "matches": [
        {
          "session_id": null,
          "session_number": null,
          "vendor_data": null,
          "verification_date": null,
          "email": "test@example.com",
          "status": null,
          "is_blocklisted": true,
          "api_service": null,
          "source": "list_entry"
        }
      ]
    }
  ],
  "poa_verifications": [
    {
      "node_id": "feature_poa_1",
      "status": "Declined",
      "document_file": "https://<media-host>/poa_document.pdf",
      "issuing_state": "AR",
      "document_type": "UTILITY_BILL",
      "document_subtype": null,
      "document_language": "es",
      "document_metadata": {
        "file_size": 1000,
        "content_type": "application/pdf",
        "creation_date": "2021-01-01",
        "modified_date": "2021-01-01",
        "overlay_manipulation": null,
        "creator": null,
        "producer": "PDF Generator",
        "software": null,
        "encryption": null,
        "is_signed": false,
        "is_tampered": false,
        "signature_info": null,
        "exif_original_date": null,
        "exif_digitized_date": null,
        "processed_by_known_editor": false,
        "has_different_creation_mod_date": true
      },
      "issuer": "Aguas del Norte",
      "issue_date": "2021-02-01",
      "expiration_date": null,
      "poa_address": "AVDA. MONSEÑOR TAVELLA N° 3396, SALTA",
      "poa_formatted_address": "Av. Monseñor Tavella 3396, A4400 Salta, Argentina",
      "poa_parsed_address": {
        "address_type": "Avenida",
        "street_1": "Avenida Monseñor Tavella 3396",
        "street_2": null,
        "city": "Salta",
        "region": "Salta",
        "country": "AR",
        "postal_code": "A4400",
        "document_location": {
          "latitude": -24.8208664,
          "longitude": -65.4131
        }
      },
      "name_on_document": "Fernando De Lima",
      "name_match_score_expected_details": null,
      "name_match_score_id_verification": 38.5,
      "expected_details_address": null,
      "expected_details_formatted_address": null,
      "expected_details_parsed_address": {},
      "extra_fields": {
        "bank_account_number": "1234567890",
        "bank_iban": null,
        "bank_sort_code": null,
        "bank_routing_number": null,
        "bank_swift_bic": null,
        "bank_branch_name": null,
        "bank_branch_address": null,
        "document_phone_number": "+5491112345678",
        "additional_names": []
      },
      "extra_files": [
        "https://<media-host>/extra_poa.pdf"
      ],
      "warnings": []
    }
  ],
  "questionnaire_responses": [
    {
      "node_id": "feature_questionnaire_1",
      "questionnaire_id": "9f7485e0-b00b-4d56-9d3e-7859b68d1213",
      "title": "Source of Funds",
      "description": "Reply to this questionnaire to help us understand the source of funds.",
      "languages": [
        "en"
      ],
      "default_language": "en",
      "is_active": true,
      "is_simple_questionnaire": true,
      "questionnaire_group_id": "2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60",
      "version": 1,
      "published_at": "2025-11-02T09:14:55.000000Z",
      "sections": [
        {
          "title": null,
          "description": null,
          "items": [
            {
              "uuid": "618636d9-7d5c-41ce-b8d0-1ab2a4be20db",
              "value": "question_1",
              "element_type": "DROPDOWN",
              "is_required": true,
              "title": "What is your primary source of funds?",
              "description": null,
              "placeholder": null,
              "choices": [
                {
                  "label": "Salary",
                  "value": "salary"
                },
                {
                  "label": "Business Income",
                  "value": "business_income"
                },
                {
                  "label": "Savings",
                  "value": "savings"
                },
                {
                  "label": "Investments",
                  "value": "investments"
                },
                {
                  "label": "Sale of Asset",
                  "value": "sale_of_asset"
                },
                {
                  "label": "Inheritance/Gift",
                  "value": "inheritance_gift"
                },
                {
                  "label": "Pension",
                  "value": "pension"
                },
                {
                  "label": "Crypto Proceeds",
                  "value": "crypto_proceeds"
                },
                {
                  "label": "Other",
                  "value": "other",
                  "requires_text_input": true
                }
              ],
              "max_files": 1,
              "answer": {
                "value": "salary"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "2d16b527-72be-42e0-8e96-b164b818386c",
              "value": "question_2",
              "element_type": "LONG_TEXT",
              "is_required": true,
              "title": "Provide details of the primary source.",
              "description": null,
              "placeholder": null,
              "choices": null,
              "max_files": 1,
              "answer": {
                "value": "Test answer"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0",
              "value": "question_3",
              "element_type": "DROPDOWN",
              "is_required": true,
              "title": "What is your annual income range (pre-tax)?",
              "description": null,
              "placeholder": null,
              "choices": [
                {
                  "label": "Less than $25,000",
                  "value": "<25k"
                },
                {
                  "label": "$25,000 - $50,000",
                  "value": "25k-50k"
                },
                {
                  "label": "$50,001 - $100,000",
                  "value": "50k-100k"
                },
                {
                  "label": "$100,001 - $250,000",
                  "value": "100k-250k"
                },
                {
                  "label": "More than $250,000",
                  "value": ">250k"
                }
              ],
              "max_files": 1,
              "answer": {
                "value": "<25k"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "93dede62-6d0c-4a7f-934d-42175eb94011",
              "value": "question_4",
              "element_type": "DROPDOWN",
              "is_required": true,
              "title": "What is your approximate net worth (range)?",
              "description": null,
              "placeholder": null,
              "choices": [
                {
                  "label": "Less than $50,000",
                  "value": "<50k"
                },
                {
                  "label": "$50,000 - $250,000",
                  "value": "50k-250k"
                },
                {
                  "label": "$250,001 - $1,000,000",
                  "value": "250k-1m"
                },
                {
                  "label": "$1,000,001 - $5,000,000",
                  "value": "1m-5m"
                },
                {
                  "label": "More than $5,000,000",
                  "value": ">5m"
                }
              ],
              "max_files": 1,
              "answer": {
                "value": "<50k"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "2af60d6f-6961-4692-9ee7-24b3033610a6",
              "value": "question_5",
              "element_type": "LONG_TEXT",
              "is_required": true,
              "title": "For your initial deposit/funding, indicate the exact source and amount.",
              "description": null,
              "placeholder": null,
              "choices": null,
              "max_files": 1,
              "answer": {
                "value": "Test answer"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "0ad9d1aa-736f-46cf-947b-9e1241b53e40",
              "value": "question_6",
              "element_type": "LONG_TEXT",
              "is_required": true,
              "title": "Breakdown of sources by percentage.",
              "description": null,
              "placeholder": null,
              "choices": null,
              "max_files": 1,
              "answer": {
                "value": "Test answer"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "1bf8a2a3-14ee-48a8-bb3d-175481aae4aa",
              "value": "question_7",
              "element_type": "SINGLE_CHOICE",
              "is_required": true,
              "title": "Will any funds originate from third parties? If yes, please provide details.",
              "description": null,
              "placeholder": null,
              "choices": [
                {
                  "label": "Yes",
                  "value": "yes",
                  "requires_text_input": true
                },
                {
                  "label": "No",
                  "value": "no"
                }
              ],
              "max_files": 1,
              "answer": {
                "text": "Additional details",
                "value": "yes"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "e18d4dd3-b7bf-4883-ba18-d6046adbe313",
              "value": "question_8",
              "element_type": "SINGLE_CHOICE",
              "is_required": true,
              "title": "Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.",
              "description": null,
              "placeholder": null,
              "choices": [
                {
                  "label": "Yes",
                  "value": "yes",
                  "requires_text_input": true
                },
                {
                  "label": "No",
                  "value": "no"
                }
              ],
              "max_files": 1,
              "answer": {
                "text": "Additional details",
                "value": "yes"
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "a90a073d-e098-404c-bbce-5130d8b12a13",
              "value": "question_9",
              "element_type": "FILE_UPLOAD",
              "is_required": true,
              "title": "Upload a proof of funds document",
              "description": "You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.",
              "placeholder": null,
              "choices": null,
              "max_files": 3,
              "answer": {
                "files": [
                  "/media/ocr/",
                  "/media/ocr/"
                ]
              },
              "required_if": null,
              "repeatable_config": null
            },
            {
              "uuid": "9503b486-7cb8-4c3b-a97d-4b64926a5a47",
              "value": "question_10",
              "element_type": "LONG_TEXT",
              "is_required": false,
              "title": "Would you like to add any details to help us expedite our review of the documents you submitted?",
              "description": null,
              "placeholder": null,
              "choices": null,
              "max_files": 1,
              "answer": {
                "value": "Test answer"
              },
              "required_if": null,
              "repeatable_config": null
            }
          ]
        }
      ],
      "status": "Approved"
    }
  ],
  "aml_screenings": [
    {
      "node_id": "feature_aml_1",
      "status": "In Review",
      "total_hits": 1,
      "entity_type": "person",
      "hits": [
        {
          "id": "cPtTGRKkyddAcAC4xgsLCm",
          "url": "https://news.example.org/articles/sample",
          "match": false,
          "score": 0.73,
          "target": null,
          "caption": "Javier Ejemplo Modelo",
          "datasets": [
            "PEP"
          ],
          "features": null,
          "rca_name": "",
          "last_seen": "2025-06-13T00:00:00",
          "risk_view": {
            "crimes": {
              "score": 0,
              "weightage": 20,
              "risk_level": "Low",
              "risk_scores": {}
            },
            "countries": {
              "score": 0,
              "weightage": 30,
              "risk_level": "Low",
              "risk_scores": {}
            },
            "categories": {
              "score": 100,
              "weightage": 50,
              "risk_level": "High",
              "risk_scores": {
                "PEP": 100
              }
            },
            "custom_list": {}
          },
          "first_seen": "2025-01-18T00:00:00",
          "properties": {
            "name": [
              "Javier Ejemplo Modelo"
            ],
            "alias": [
              "Javier Ejemplo Modelo",
              "David Azagra"
            ],
            "notes": [
              "Spanish orchestra conductor"
            ],
            "title": null,
            "gender": [
              "male"
            ],
            "height": null,
            "topics": null,
            "weight": null,
            "address": null,
            "country": null,
            "website": null,
            "eyeColor": null,
            "keywords": null,
            "lastName": [
              "Ejemplo",
              "Modelo"
            ],
            "position": null,
            "religion": null,
            "birthDate": [
              "1974"
            ],
            "education": [
              "Tokyo Arts and Space (2012-2012)",
              "Saint Petersburg Conservatory (-2010)",
              "Comillas Pontifical University"
            ],
            "ethnicity": null,
            "firstName": [
              "David"
            ],
            "hairColor": null,
            "weakAlias": null,
            "birthPlace": [
              "Madrid"
            ],
            "modifiedAt": null,
            "wikidataId": null,
            "citizenship": null,
            "nationality": null
          },
          "match_score": 98,
          "risk_score": 73,
          "review_status": "Unreviewed",
          "score_breakdown": {
            "name_score": 95,
            "name_weight": 60,
            "name_weight_normalized": 70.59,
            "name_contribution": 67.06,
            "dob_score": 100,
            "dob_weight": 25,
            "dob_weight_normalized": 29.41,
            "dob_contribution": 29.41,
            "country_score": 0,
            "country_weight": 15,
            "country_weight_normalized": 0,
            "country_contribution": 0,
            "document_number_match_type": "NEUTRAL",
            "document_number_effect": "No document number provided for screening",
            "total_score": 98
          },
          "pep_matches": [
            {
              "aliases": [
                "Javier Ejemplo Modelo",
                "David Azagra"
              ],
              "education": [
                "Tokyo Arts and Space (2012-2012)",
                "Saint Petersburg Conservatory (-2010)",
                "Comillas Pontifical University"
              ],
              "list_name": "Wikidata",
              "publisher": "Wikidata",
              "source_url": "https://news.example.org/articles/sample",
              "description": "Wikidata is the structured data project of the Wikipedia community, providing fact-based information edited by humans and machines",
              "matched_name": "Javier Ejemplo Modelo",
              "pep_position": "",
              "date_of_birth": "1974",
              "other_sources": [],
              "place_of_birth": "Madrid"
            }
          ],
          "linked_entities": [
            {
              "name": [
                "Antonio Ejemplo"
              ],
              "active": [],
              "status": [],
              "details": [],
              "relation": []
            }
          ],
          "warning_matches": [],
          "sanction_matches": [],
          "adverse_media_details": {
            "sentiment": "Moderately Negative",
            "entity_type": "person",
            "sentiment_score": -2,
            "adverse_keywords": {
              "fraud": 3,
              "juicio": 1,
              "delitos": 2,
              "imputado": 1,
              "impunidad": 1,
              "corruption": 2,
              "favoritism": 2,
              "privilegio": 1,
              "corrupción": 1,
              "persecution": 2,
              "desconfianza": 1,
              "desprestigio": 1,
              "fraude de ley": 2,
              "manipulación": 1,
              "investigación": 3,
              "prevaricación": 8,
              "trato de favor": 1,
              "irregularidades": 2,
              "crisis de confianza": 1,
              "tráfico de influencias": 8
            }
          },
          "adverse_media_matches": [
            {
              "country": "spain",
              "summary": "Javier Ejemplo is implicated in legal violations related to favoritism and influence trafficking, leading to a negative portrayal in the article.",
              "headline": "La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \"hermanito\" de Ejemplo",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "fraud",
                "prevaricación",
                "tráfico de influencias",
                "irregularidades",
                "imputado"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-10T20:46:38"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo is implicated in legal issues regarding favoritism and corruption, leading to a negative portrayal in the article.",
              "headline": "La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \"hermanito\" de Ejemplo",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "fraud",
                "prevaricación",
                "tráfico de influencias",
                "irregularidades",
                "trato de favor"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-10T20:46:38"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo Modelo is mentioned in connection with Carlos Ficticio's corruption case, indicating his involvement in alleged influence peddling.",
              "headline": "España, paraíso del aforado",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "prevaricación",
                "tráfico de influencias",
                "corrupción",
                "impunidad",
                "privilegio",
                "desconfianza",
                "manipulación",
                "fraude de ley"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-10T05:05:34"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises questions about his conduct and political ethics.",
              "headline": "Aforamientos: esa figura incómoda",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "prevaricación",
                "tráfico de influencias",
                "investigación",
                "juicio",
                "fraude de ley",
                "desprestigio",
                "crisis de confianza",
                "delitos"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-08T06:01:00"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo is implicated in a legal investigation regarding irregularities in his hiring, which raises serious concerns about his conduct.",
              "headline": "La jueza del 'caso Javier Ejemplo' denuncia un «fraude de ley» en el aforamiento de Ficticio (Partido Ejemplo)",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "fraud",
                "irregularities",
                "prevaricación",
                "tráfico de influencias"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-09T10:19:10"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo Modelo is mentioned in connection with legal allegations of corruption, contributing to a negative perception.",
              "headline": "'Caso aforamiento': la letrada mayor de la Asamblea certifica a la juez que Ficticio es diputado desde antes de prometer su cargo en el Pleno",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "prevaricación",
                "tráfico de influencias"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-09T08:08:30"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, raising concerns about political corruption and influence.",
              "headline": "Aforamientos: esa figura incómoda",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "prevaricación",
                "tráfico de influencias",
                "investigación"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-08T06:01:00"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises concerns about political misconduct.",
              "headline": "Aforamientos: esa figura incómoda",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "prevaricación",
                "tráfico de influencias",
                "investigación",
                "delitos"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-08T06:00:59"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo is implicated in a case of favoritism and corruption, which casts a negative light on his character and actions.",
              "headline": "'Caso Javier Ejemplo': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \"presiones externas\" que sufre",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "favoritism",
                "corruption",
                "persecution"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-06T10:08:15"
            },
            {
              "country": "spain",
              "summary": "Javier Ejemplo is implicated in a case of alleged favoritism and corruption, which casts a negative light on his character and actions.",
              "headline": "'Caso Javier Ejemplo': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \"presiones externas\" que sufre",
              "sentiment": "moderately negative",
              "thumbnail": "https://news.example.org/articles/sample",
              "source_url": "https://news.example.org/articles/sample",
              "author_name": null,
              "other_sources": [],
              "adverse_keywords": [
                "favoritism",
                "corruption",
                "persecution"
              ],
              "sentiment_score": -2,
              "publication_date": "2025-06-06T08:08:15"
            }
          ],
          "additional_information": {}
        }
      ],
      "score": 80,
      "screened_data": {
        "full_name": "Javier Ejemplo Modelo",
        "nationality": "ES",
        "date_of_birth": "1974-01-01",
        "document_number": null
      },
      "is_ongoing_monitoring_enabled": true,
      "next_ongoing_monitoring_bill_date": "2026-07-24",
      "warnings": [
        {
          "feature": "AML",
          "risk": "POSSIBLE_MATCH_FOUND",
          "additional_data": null,
          "log_type": "warning",
          "short_description": "Possible match found in AML screening",
          "long_description": "The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.",
          "node_id": "feature_aml_1"
        }
      ]
    }
  ],
  "ip_analyses": [
    {
      "node_id": "feature_ip_1",
      "status": "Approved",
      "device_brand": "Apple",
      "device_model": "iPhone",
      "browser_family": "Mobile Safari",
      "os_family": "iOS",
      "platform": "mobile",
      "device_fingerprint": "didit-fp-a1b2c3d4e5f6g7h8",
      "ip_country": "Spain",
      "ip_country_code": "ES",
      "ip_state": "Barcelona",
      "ip_city": "Barcelona",
      "latitude": 41.4022,
      "longitude": 2.1407,
      "ip_address": "83.50.226.71",
      "isp": null,
      "organization": null,
      "is_vpn_or_tor": false,
      "is_data_center": false,
      "time_zone": "Europe/Madrid",
      "time_zone_offset": "+0100",
      "ip": {
        "location": {
          "latitude": 40.2206327,
          "longitude": 1.5770097
        },
        "distance_from_id_document": 23.4,
        "distance_from_poa_document": 12.3
      },
      "id_document": {
        "location": {
          "latitude": 41.2706327,
          "longitude": 1.9770097
        },
        "distance_from_ip": 23.4,
        "distance_from_poa_document": 18.7
      },
      "poa_document": {
        "location": {
          "latitude": 41.2706327,
          "longitude": 1.9770097
        },
        "distance_from_ip": 12.3,
        "distance_from_id_document": 18.7
      },
      "warnings": [],
      "matches": [
        {
          "session_id": "99999999-8888-7777-6666-555555555555",
          "session_number": 41205,
          "vendor_data": "22222222-2222-2222-2222-222222222222",
          "verification_date": "2024-07-20T10:15:30Z",
          "match_type": "ip_address",
          "match_source": "ip_address",
          "matched_value": "83.50.226.71",
          "status": "Approved",
          "is_blocklisted": false,
          "api_service": null,
          "source": "session",
          "device_info": {
            "device_brand": "Apple",
            "device_model": "iPhone",
            "browser_family": "Mobile Safari",
            "os_family": "iOS",
            "platform": "mobile",
            "device_fingerprint": "didit-fp-f9e8d7c6b5a40312"
          },
          "location_info": {
            "ip_address": "83.50.226.71",
            "ip_country": "Spain",
            "ip_country_code": "ES",
            "ip_state": "Barcelona",
            "ip_city": "Barcelona",
            "is_vpn_or_tor": false,
            "is_data_center": false
          },
          "confidence": 0,
          "match_mode": "co_occurrence"
        },
        {
          "session_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
          "session_number": 42830,
          "vendor_data": "33333333-3333-3333-3333-333333333333",
          "verification_date": "2024-06-30T18:22:05Z",
          "match_type": "device_fingerprint",
          "match_source": "recovered_high",
          "matched_value": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
          "status": "Declined",
          "is_blocklisted": false,
          "api_service": null,
          "source": "session",
          "device_info": {
            "device_brand": "Samsung",
            "device_model": "SM-G991B",
            "browser_family": "Chrome Mobile",
            "os_family": "Android",
            "platform": "mobile",
            "device_fingerprint": null
          },
          "location_info": {
            "ip_address": "83.50.231.18",
            "ip_country": "Spain",
            "ip_country_code": "ES",
            "ip_state": "Madrid",
            "ip_city": "Madrid",
            "is_vpn_or_tor": false,
            "is_data_center": false
          },
          "confidence": 1,
          "match_mode": "deterministic",
          "recovery_similarity": 0.9874,
          "tls_ja4_corroborated": true,
          "recovery_gate_reason": "hardware_root_match"
        }
      ]
    }
  ],
  "database_validations": [
    {
      "node_id": "feature_db_validation_1",
      "issuing_state": "BRA",
      "validation_type": "one_by_one",
      "screened_data": {
        "last_name": "De Lima",
        "first_name": "Fernando",
        "tax_number": "01234567890",
        "date_of_birth": "1980-01-01",
        "document_type": "ID",
        "expiration_date": "2030-01-01"
      },
      "validations": [
        {
          "service_id": "bra_cpf",
          "service_name": "Brazil - CPF status check",
          "outcome_code": "MATCH",
          "validation": {
            "full_name": "full_match",
            "date_of_birth": "full_match",
            "identification_number": "full_match"
          },
          "source_data": {
            "identification_number": "01234567890",
            "first_name": "FERNANDO",
            "last_name": "DE LIMA",
            "date_of_birth": "1980-01-01",
            "gender": "M",
            "nationality": "BRA"
          }
        }
      ],
      "match_type": "full_match",
      "status": "Approved",
      "warnings": []
    }
  ],
  "reviews": [
    {
      "user": "compliance@example.com",
      "new_status": "Declined",
      "comment": "Possible match found in AML screening",
      "created_at": "2024-07-18T13:29:00.366811Z"
    }
  ],
  "created_at": "2024-07-24T08:54:25.443172Z",
  "expires_at": "2025-07-24T08:54:25.443172Z"
}

Session kind

This endpoint works for both User Verification (KYC) and Business Verification (KYB) sessions. The response always includes a top-level session_kind field:
  • "user" — User Verification (KYC) session. Response carries id_verifications, liveness_checks, face_matches, nfc_verifications, poa_verifications, database_validations.
  • "business" — Business Verification (KYB) session. Response carries registry_checks, document_verifications, key_people_checks.
Both kinds share aml_screenings, phone_verifications, email_verifications, questionnaire_responses, ip_analyses, reviews, contact_details — plus the common top-level fields (session_id, session_number, session_url, status, workflow_id, vendor_data, metadata, callback, features, expected_details, created_at, expires_at). Didit looks up the session_id in both tables (User Verification sessions first, Business Verification sessions second) and returns whichever matches. UUIDs are unique per application — no ambiguity. See sessions overview for the full matrix of kind-specific features.

Examples

curl https://verification.didit.me/v3/session/4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a/decision/ \
  -H "x-api-key: YOUR_API_KEY"
Response (truncated):
{
  "session_id": "4c5c7f3a-1f82-4f3b-8d8e-1a8d2d2f9b7a",
  "session_kind": "user",
  "session_number": 1024,
  "session_url": "https://verify.didit.me/...",
  "status": "APPROVED",
  "workflow_id": "wf_kyc_standard",
  "vendor_data": "user-42",
  "features": "ID_VERIFICATION,LIVENESS,FACE_MATCH,AML",
  "id_verifications": [
    { "node_id": "feature_ocr_1", "status": "Approved", "document_type": "Passport", "full_name": "John Doe", "...": "..." }
  ],
  "liveness_checks": [
    { "node_id": "feature_liveness_1", "status": "Approved", "score": 0.98 }
  ],
  "face_matches": [
    { "node_id": "feature_face_match_1", "status": "Approved", "score": 0.94 }
  ],
  "aml_screenings": [
    { "node_id": "feature_aml_1", "status": "Approved", "total_hits": 0, "score": 0 }
  ],
  "phone_verifications": [],
  "email_verifications": [],
  "questionnaire_responses": [],
  "ip_analyses": [],
  "reviews": [],
  "contact_details": { "email": "alex.sample@example.com", "phone": null },
  "expected_details": null,
  "metadata": {},
  "callback": null,
  "created_at": "2026-04-16T10:00:00Z",
  "expires_at": "2026-04-23T10:00:00Z"
}

Handling the response on your side

const res = await fetch(`${BASE}/v3/session/${sessionId}/decision/`, {
  headers: { "x-api-key": API_KEY },
});
const decision = await res.json();

switch (decision.session_kind) {
  case "user":
    handleUserDecision(decision);
    break;
  case "business":
    handleBusinessDecision(decision);
    break;
}

Errors

StatusReason
404No session with that session_id exists for this application (checked against both tables).
403Missing read:sessions privilege.
401Invalid API key.

Authorizations

x-api-key
string
header
required

Path Parameters

sessionId
string<uuid>
required

UUID of the verification session whose decision you want to retrieve. This is the session_id returned by POST /v3/session/. The same path works for both User Verification (KYC) and Business Verification (KYB) sessions — the server looks the id up in both tables.

Must be a valid UUID. The route only matches well-formed UUIDs, so a malformed value is rejected by the URL router before any application code runs and the response is a 404 HTML page rather than the JSON {"detail": ...} envelope shown below. Validate the UUID format client-side so you can distinguish an input error from a genuine missing-session 404.

Example:

"11111111-2222-3333-4444-555555555555"

Query Parameters

include
enum<string>

Comma-separated list of extra payload sections. The only supported value is events. When include=events is passed, the response additionally contains the session event timeline (events), the full activity log (activity_reviews), blocklist flags (blocklisted), a per-session cost_breakdown, workflow metadata (workflow_type, workflow_version, workflow_version_id), and session metadata (api_service — string or null, set only for standalone-API sessions; session_typeAPI, HOSTED, or MIGRATED; has_device_nfc_support — boolean). Two fields change relative to the plain shape: the top-level session_kind discriminator is omitted (the events shape only exists for user sessions), and the features array switches from plain strings to {feature, node_id} objects — where the email feature is reported as EMAIL instead of EMAIL_VERIFICATION. This expanded shape is primarily used by the Didit Console; most API integrations should omit the parameter. KYB limitation: include=events only applies to user (KYC) sessions. Business sessions (session_kind = "business") always return the standard business decision shape — events, activity_reviews, blocklisted, cost_breakdown and the extra workflow_*/session metadata are never returned for business sessions, and their features array stays a plain string array.

Available options:
events
Example:

"events"

Response

Full decision report. session_kind discriminates the two shapes: user sessions carry the KYC feature arrays shown below; business sessions instead carry registry_checks, document_verifications and key_people_checks alongside the shared arrays. Feature arrays are null until the workflow has run that feature; media URLs are short-lived presigned links.

session_id
string<uuid>

The unique identifier of the session for which to retrieve verification results.

session_kind
enum<string>

Discriminator indicating whether this is a User Verification (KYC) or Business Verification (KYB) session. When user, the KYC feature arrays (id_verifications, nfc_verifications, liveness_checks, face_matches, poa_verifications, database_validations, ...) apply and the business arrays are absent. When business, the payload instead carries registry_checks, document_verifications, key_people_checks plus the shared arrays (aml_screenings, phone_verifications, email_verifications, ip_analyses, questionnaire_responses). Omitted when include=events is passed — the events shape only exists for user sessions, so the discriminator is dropped from that variant.

Available options:
user,
business
session_number
integer | null

The number of the session.

session_url
string<uri> | null

The URL of the session.

status
enum<string>

Overall lifecycle status of the session — the rolled-up workflow result. Terminal values are Approved, Declined, In Review, Expired, Kyc Expired, and Abandoned; Not Started, In Progress, Awaiting User, and Resubmitted indicate the session is still moving through the workflow.

Available options:
Not Started,
In Progress,
Awaiting User,
In Review,
Approved,
Declined,
Resubmitted,
Expired,
Kyc Expired,
Abandoned
workflow_id
string<uuid> | null

Stable identifier of the workflow group that produced this session. Workflows are versioned — this value identifies the workflow itself, not the specific version.

features
string[]

List of verification features configured for this session, as display names: ID_VERIFICATION, NFC, LIVENESS, FACE_MATCH, POA, PHONE, EMAIL_VERIFICATION, AML, IP_ANALYSIS, DATABASE_VALIDATION, QUESTIONNAIRE, AGE_ESTIMATION, FACE_SEARCH (Business Verification sessions use the KYB feature set: KYB_REGISTRY, KYB_DOCUMENTS, KYB_KEY_PEOPLE, AML, PHONE, EMAIL_VERIFICATION, IP_ANALYSIS, QUESTIONNAIRE). With include=events each entry becomes an object {feature, node_id} instead of a plain string, and the email feature is renamed: it appears as EMAIL in events mode instead of the EMAIL_VERIFICATION used here.

The feature of the session.

vendor_data
string | null

The vendor data of the session.

metadata
object

The metadata of the session.

expected_details
object

Expected user details supplied at session creation for cross-validation against the extracted document data. Echoes back exactly the keys that were provided; null when none were supplied.

contact_details
object

Contact details supplied when the session was created (used for notification emails, prefilled phone/email verification, and communication language). null when neither an email nor a phone number was provided.

callback
string<uri> | null

The callback URL of the session.

id_verifications
object[] | null

Array of ID verification (OCR) reports produced by ID-document steps in the workflow graph. Always a JSON array — read id_verifications[0] and iterate if your workflow can run more than one ID check (for example a primary check plus a step-up). null until at least one ID step has produced data. Each item is the full report, including node_id, feature-level status, extracted document fields, image URLs, quality scores, MRZ, address parsing, cross-session matches, and warnings[].

nfc_verifications
object[] | null

Array of NFC / ePassport reports produced by NFC steps in the workflow graph. This is always a JSON array, never a singular nfc object — read nfc_verifications[0] and iterate if your workflow can run NFC more than once. null until at least one NFC step has produced data. Each item is the full report, including node_id, feature-level status, chip_data, authenticity (SOD + DG integrity), certificate_summary, and warnings[].

liveness_checks
object[] | null

Array of liveness reports produced by liveness steps in the workflow graph. Always a JSON array — never a singular liveness object. null until at least one liveness step has produced data. Each item is the full report, including node_id, feature-level status, method, score, reference_image, video_url, optional age_estimation, cross-session matches[], and warnings[].

face_matches
object[] | null

Array of face-match reports produced by face-match steps in the workflow graph. Always a JSON array — never a singular face_match object. null until at least one face-match step has produced data. Each item is the full report, including node_id, feature-level status, similarity score, source_image, target_image, and warnings[].

phone_verifications
object[] | null

Array of phone verification reports — always a JSON array, never a singular phone object. null until at least one phone step has produced data. Each item is the full report, including node_id, feature-level status, the phone number and country metadata, lifecycle[], matches[], and warnings[].

email_verifications
object[] | null

Array of email verification reports — always a JSON array, never a singular email object. null until at least one email step has produced data. Each item is the full report, including node_id, feature-level status, the email address, breach data, lifecycle[], matches[], and warnings[].

poa_verifications
object[] | null

Array of Proof of Address (POA) reports — always a JSON array, never a singular poa object. null until at least one POA step has produced data. Each item is the full report, including node_id, feature-level status, the document file URL, issuer, dates, parsed address, and warnings[].

questionnaire_responses
object[] | null

Array of questionnaire response reports — always a JSON array, never a singular questionnaire object. null until at least one questionnaire step has produced data. Each item is the full report, including node_id, the questionnaire metadata, sections with form elements, and the user's answers.

aml_screenings
object[] | null

Array of AML screening reports — always a JSON array, never a singular aml object. null until at least one AML step has produced data. Each item is the full report, including node_id, feature-level status, total_hits, entity_type, hits[], score, screened_data, is_ongoing_monitoring_enabled, and warnings[].

ip_analyses
object[] | null

Array of Device & IP Analysis reports — always a JSON array, never a singular ip_analysis object. null until at least one IP-analysis step has produced data. Each item is the full report, including node_id, feature-level status, IP and geolocation data, device fingerprint, and warnings[]. Entries with duplicate (node_id, ip_address, device_fingerprint) are deduplicated server-side.

database_validations
object[] | null

Array of Database Validation reports — always a JSON array, never a singular database_validation object. null until at least one DB validation step has produced data. Each item is the full report, including node_id, feature-level status, screened_data, the per-service validations[] (each with its registry source_data), and warnings[]. The screened_data and source_data fields vary by country:

ARG (Argentina): screened_data: {document_number, selfie, gender, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, date_of_death, tax_id, tax_id_type, face_match_score, sit_1_since, banks, last_position, highest_position, rejected_checks}. Uses RENAPER biometric face-match validation. Gender is auto-inferred from face analysis or given name when not present in the document (e.g., driver licenses)

BOL (Bolivia): screened_data: {document_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, gender}

BRA (Brazil): screened_data: {tax_number, first_name, last_name, date_of_birth}. source_data always includes {identification_number, first_name, last_name, date_of_birth, lgpd_minor, minor_under_18, minor_under_16} for successful CPF matches. Successful adult lookups set those flags to false. The Receita Federal Consulta CPF service may return HTTP 422 (minor under 18) or 451 (under 16) with LGPD-withheld data; in those cases source_data sets the minor flags to true as appropriate, includes the upstream HTTP status, and field-level validation is no_match. See the Brazil section of the Database Validation Outcome Codes reference for the full code list.

CHL (Chile): screened_data: {personal_number, first_name, last_name, date_of_birth}. source_data: {identification_number, first_name, last_name, date_of_birth, gender}

COL (Colombia): screened_data: {document_number, document_type, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, document_type}

CRI (Costa Rica): screened_data: {personal_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

DOM (Dominican Republic): screened_data: {personal_number}. source_data: {identification_number} (returns valid/invalid only)

ECU (Ecuador): screened_data: {personal_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, street, formatted_address, gender, nationality, education, marital_status, spouse, mother_name, father_name, profession}

ESP (Spain): screened_data: {personal_number, document_type, expiration_date, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, document_type, expiration_date}

GTM (Guatemala): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

HND (Honduras): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

MEX (Mexico): screened_data: {personal_number (CURP), first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, gender, nationality, curp_status, state_of_birth, doc_probatorio, registration_year, registration_state, registration_municipality, num_acta, crip, issuing_state_code, foreign_registry_number, folio_carta, folio_certificado}. Uses the RENAPO civil registry. A separate INE validity-check service is also available for MEX as an additional one-by-one validation.

PAN (Panama): screened_data: {personal_number, selfie}. source_data: {identification_number}. Uses SIB biometric validation

PER (Peru): screened_data: {personal_number (DNI), first_name, last_name}. source_data: {identification_number, first_name, last_name, paternal_name, maternal_name, verification_number, verification_letter}

PRY (Paraguay): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

SLV (El Salvador): screened_data: {document_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

URY (Uruguay): screened_data: {personal_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}

VEN (Venezuela): screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, gender, date_of_birth, document_type}

reviews
object[]
created_at
string<date-time>

Timestamp at which the session was created (ISO 8601, UTC).

expires_at
string<date-time> | null

Timestamp at which this session is scheduled to expire. Set on User Verification (KYC) sessions when an expiration was configured at creation time (or once Approved status triggers KYC expiry computation). null for sessions without a configured expiration, and for kinds that do not use expiry (e.g. Business Verification (KYB) sessions that never received an expires_at).

registry_checks
object[] | null

Company registry checks. Present only when session_kind = business. Each item wraps the full company-registry payload.

key_people_checks
object[] | null

Aggregate key-people checks. Present only when session_kind = business. Each item uses the two-bucket shape (registry, submitted, ubo_kyc_summary).

document_verifications
object[] | null

Document verification checks grouped by workflow node. Present only when session_kind = business.

environment
enum<string>

Whether the session was created by a live application (live) or a sandbox application (sandbox). Sandbox sessions are free, fully simulated, and never bill credits.

Available options:
live,
sandbox