VerifyHQ Docs
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/verify

Verify identity using AI vision. Accepts base64-encoded selfie and document images.

Request Body

ParameterTypeDescription
userIdrequiredstringUser ID to verify
selfieBase64requiredstringBase64-encoded selfie image
documentBase64requiredstringBase64-encoded ID document photo
selfieMimeTypestringMIME type of selfie (default: image/jpeg)
documentMimeTypestringMIME 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-check

Query fraud history for a user, document number, or name. At least one search parameter is required.

Request Body

ParameterTypeDescription
userIdstringUser ID to check
documentNumberstringDocument number to check
fullNamestringFull 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."
}