identity
eKYC
Remote identity verification combining document check, face match and liveness / anti-spoofing detection, natively correlated with SIFIP telecom signals (SIM swap, line tenure). A successful biometric on a recently compromised line is flagged rather than approved. Three flows: onboarding (document → selfie), re-authentication (selfie → reference) and session scoring (correlated unified score). Includes consented reference-image management (GDPR / Law 2014-038).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| type | enum | required | onboarding | reauth |
| document.type | enum | optional | national_id | passport | cni | driver_license (onboarding) |
| document.country | ISO 3166 | optional | Ex. MG, TN (onboarding) |
| document.front_image | base64/URL | optional | Recto du document (onboarding) |
| selfie.image | base64/URL | required | Visage live |
| selfie.liveness_mode | enum | optional | passive | active | passive_plus_injection |
| reference.id | string | optional | Référence enregistrée (reauth) |
| trust_signals.enabled | bool | optional | Active la corrélation télécom SIFIP |
| trust_signals.phone_number | E.164 | optional | Numéro à corréler |
| callback_url | URL | optional | Webhook de fin de traitement |
Sample response
{
"id": "vrf_a1b2c3d4",
"status": "completed",
"type": "onboarding",
"decision": "REVIEW",
"score": 64,
"document": {
"type": "national_id",
"country": "MG",
"authenticity": "passed",
"extracted_data": {
"full_name": "RAKOTO Jean",
"document_number": "101231234567",
"date_of_birth": "1990-05-12",
"expiry_date": "2030-05-11",
"sex": "M"
},
"data_confidence": 0.97
},
"face_match": {
"match": true,
"similarity": 0.91,
"threshold": 0.8
},
"liveness": {
"passed": true,
"mode": "passive",
"pad_score": 0.95,
"attack_detected": null
},
"trust_signals": {
"phone_number_hash": "sha256:9f2b...",
"sim_swap": {
"is_swapped": true,
"last_swap_at": "2026-06-26T08:10:00Z"
},
"line_tenure_days": 412,
"correlation_flag": "biometric_ok_but_recent_sim_swap"
},
"reasons": [
{
"code": "FACE_MATCH_OK",
"severity": "info"
},
{
"code": "LIVENESS_OK",
"severity": "info"
},
{
"code": "DOC_AUTHENTIC",
"severity": "info"
},
{
"code": "RECENT_SIM_SWAP",
"severity": "warning",
"detail": "SIM swap détecté il y a ~2h ; risque de prise de contrôle malgré un eKYC valide."
}
]
}