API de verificación
URL base: https://kyc.menteia.com/api/v1. Autentícate con el header x-api-key. Pide tu llave en contacto@menteia.com.
1 · Crear verificación
POST /api/v1/verifications
{
"reference": "cliente-1024", // requerido: tu id interno
"metadata": { "canal": "whatsapp" }, // opcional
"expected_details": { // opcional: validación cruzada
"first_name": "Ana", "last_name": "López", "date_of_birth": "1990-04-12"
}
}
201 → { "id": "uuid", "url": "https://…/session/…", "status": "Not Started" }
Envía el url a tu usuario (liga por WhatsApp, redirect o iframe con allow="camera; microphone; fullscreen").
2 · Consultar resultado
GET /api/v1/verifications/{id} // ?full=1 incluye el detalle completo de cada validación
GET /api/v1/verifications?reference=cliente-1024
200 → {
"id": "uuid", "reference": "cliente-1024",
"status": "Approved", "approved": true,
"result": {
"document": { "type": "Identity Card", "number": "…", "personal_number": "CURP…",
"first_name": "…", "last_name": "…", "date_of_birth": "…", "expiration_date": "…" },
"liveness": { "status": "Approved", "score": 97 },
"face_match": { "status": "Approved", "score": 94 }
},
"registry": { // fuentes de autoridades
"verdict": "valid", // valid | invalid | inconclusive | not_applicable
"ine_lista_nominal": { "result": "valid" },
"curp_renapo": { "result": "valid" },
"dob_mismatch": false // fecha de nacimiento RENAPO ≠ documento
}
}
Una verificación queda Approved solo si el documento, la prueba de vida y la comparación facial pasan y la credencial está vigente en la Lista Nominal del INE y la CURP es válida en RENAPO. Si un registro de gobierno no responde, queda In Review.
3 · Webhook (opcional)
Si registras una URL, te enviamos un POST en cada cambio de estado con {"event":"verification.updated","data":{…}} (el mismo objeto que el GET). Verifica la firma:
firma = HMAC_SHA256(tu_api_key, X-KYC-Timestamp + "." + body_crudo) // hex // compárala con X-KYC-Signature y rechaza timestamps con más de 5 min
Estados
| status | Significado |
|---|---|
Not Started | Sesión creada; el usuario aún no abre el enlace. |
In Progress | El usuario está completando el flujo. |
In Review | Requiere revisión manual. |
Approved | Identidad verificada. |
Declined | Rechazada (documento inválido, rostro no coincide, suplantación…). |
Resubmitted | Se pidió repetir un paso. |
Abandoned / Expired | No se completó o expiró el enlace. |
Kyc Expired | La verificación caducó por política de retención. |
Toma la decisión de negocio solo con Approved. El redirect del usuario no es prueba de aprobación.