AI-Powered
Cognitive KYC
Leverage multimodal AI to verify identity in a single API call. Submit a selfie and ID document photo — the system performs face matching, document field extraction, and fraud detection simultaneously.
POST
/cognitive-kyc/verifyVerify identity using AI vision. Accepts base64-encoded selfie and document images.
Request Body
| Parameter | Type | Description |
|---|---|---|
userIdrequired | string | User ID to verify |
selfieBase64required | string | Base64-encoded selfie image |
documentBase64required | string | Base64-encoded ID document photo |
selfieMimeType | string | MIME type of selfie (default: image/jpeg) |
documentMimeType | string | MIME type of document (default: image/jpeg) |
Code Examples
curl -X POST https://api.verifyhq.com/v1/cognitive-kyc/verify \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"userId": "user_123",
"selfieBase64": "/9j/4AAQSkZJRg...",
"documentBase64": "/9j/4AAQSkZJRg...",
"selfieMimeType": "image/jpeg",
"documentMimeType": "image/jpeg"
}'Response
200 OKjson
{
"decision": "APPROVED",
"confidence": 0.94,
"faceMatchReasoning": "High similarity between selfie and document photo. Facial structure, skin tone, and features match consistently.",
"documentFields": {
"fullName": "Adebayo Ogunlesi",
"dateOfBirth": "1990-05-15",
"documentNumber": "A12345678",
"expiryDate": "2030-12-31",
"nationality": "Nigerian",
"documentType": "NATIONAL_ID"
},
"fraudIndicators": {
"tampering": false,
"photoManipulation": false,
"expiredDocument": false,
"blurryImage": false
},
"fraudHistory": {
"priorVerifications": 0,
"flaggedAttempts": 0,
"riskLevel": "LOW"
},
"timestamp": "2025-01-15T10:30:45Z"
}POST
/cognitive-kyc/fraud-checkQuery fraud history for a user, document number, or name. At least one search parameter is required.
Request Body
| Parameter | Type | Description |
|---|---|---|
userId | string | User ID to check |
documentNumber | string | Document number to check |
fullName | string | Full name to check |
At least one parameter (userId, documentNumber, or fullName) must be provided.
200 OKjson
{
"matches": 2,
"riskLevel": "MEDIUM",
"history": [
{
"verificationId": "ver_old123",
"date": "2024-06-01T08:00:00Z",
"decision": "REJECTED",
"reason": "Document tampering detected"
}
],
"recommendation": "Manual review recommended due to prior rejection."
}