KodexakodéxaShieldAPI Reference
https://shield.kodexa.systems/apiPortal →
Identity Layer

eKYC-AI

Active

Digital-only identity verification with no document upload required. Accepts biometric scores from your device SDK — liveness detection and face match — and cross-checks personal details against national databases. Designed for mobile-first onboarding flows where the customer completes verification on their own device.

Endpoint

POST/api/ekyc/verify

How it works

1

Your device SDK captures biometrics

Liveness score and face match score are generated client-side by your existing mobile SDK.

2

Pass scores to eKYC-AI

Send the scores along with customer details. No raw biometric data or images leave the device.

3

Database cross-check

Name, date of birth and national ID are verified against the relevant national database for the jurisdiction.

4

Compliance decision

A structured decision with compliance flags is returned. Cases requiring review are added to the Shield queue.

Request parameters

ParameterTypeRequiredDescription
customer_idstringYesYour internal reference for this customer.
full_namestringYesFull legal name provided by the customer during onboarding.
jurisdictionstringYesOne of: CA (Canada), AE (UAE), SA (KSA). Determines compliance rules and database sources.
date_of_birthstringNoDate of birth in YYYY-MM-DD format. Required for database cross-check.
national_idstringNoNational ID number for database verification.
phonestringNoMobile number. Used for SIM-based identity corroboration.
emailstringNoEmail address. Used for identity corroboration.
methodstringNoOne of: liveness_check, database_lookup, document_scan, biometric_match (default: liveness_check).
liveness_scorenumberNoLiveness score 0–100 from your device SDK. Scores below 70 trigger rejection.
face_match_scorenumberNoFace match score 0–100 from your device SDK. Scores below 70 trigger rejection.

Response fields

ParameterTypeRequiredDescription
successbooleanYesWhether the API call succeeded.
data.statusstringYesVerification decision: approved, rejected, or review_required.
data.risk_levelstringYesRisk level: low, medium, high, or critical.
data.confidence_scoreintegerYesAI confidence in the decision, 0–100.
data.checks_passedarrayYesList of verification checks that passed, e.g. liveness_verified, database_match.
data.liveness_verifiedbooleanYesWhether liveness check passed based on provided liveness_score.
data.face_match_verifiedbooleanYesWhether face match passed based on provided face_match_score.
data.database_matchbooleanYesWhether the provided details matched the national database.
data.compliance_flagsarrayYesList of compliance issues found. Each flag has: rule_id, severity, message, suggestion.
data.requires_human_reviewbooleanYesIf true, the case is added to the review queue for a compliance officer.
data.ai_recommendationstringYesPlain-English explanation of the decision and recommended action.
processing_time_msintegerYesTotal processing time in milliseconds.

Code example

curl -X POST \
  https://shield.kodexa.systems/api/ekyc/verify \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "CUST-AE-001",
    "full_name": "Ahmed Al Mansoori",
    "jurisdiction": "AE",
    "date_of_birth": "1985-03-22",
    "national_id": "784-1985-1234567-8",
    "method": "liveness_check",
    "liveness_score": 96,
    "face_match_score": 94
  }'

Example response

json
{
  "success": true,
  "data": {
    "status": "approved",
    "risk_level": "low",
    "confidence_score": 95,
    "checks_passed": [
      "liveness_verified",
      "face_match_verified",
      "database_match",
      "name_match"
    ],
    "liveness_verified": true,
    "face_match_verified": true,
    "database_match": true,
    "ai_recommendation": "Strong liveness score (96) and face match (94). Identity confirmed via national database. Approved for onboarding.",
    "compliance_flags": [],
    "requires_human_review": false,
    "review_reasons": [],
    "request_id": "ekyc_1716000000_abc123",
    "created_at": "2026-05-22T04:00:00.000Z"
  },
  "processing_time_ms": 312,
  "jurisdiction": "AE",
  "plugin": "ekyc"
}