Skip to content

YeboVerify API Reference

Base URL

https://api.yeboverify.com

Authentication

All API endpoints (except health check) require authentication via the X-API-Key header.

X-API-Key: your_api_key_here

Endpoints

Health Check

Check API status and availability.

GET /health

Response:

json
{
  "status": "ok",
  "timestamp": "2024-01-15T12:00:00.000Z",
  "service": "yeboverify-api",
  "version": "1.0.0"
}

Verification Endpoints

Selfie Match Verification

Compare a selfie against a profile picture URL using facial recognition.

POST /v1/verify/selfie-match

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key
Content-TypestringYesmultipart/form-data

Request Body (multipart/form-data):

FieldTypeRequiredDescription
selfiefileYesSelfie image (JPEG, PNG, max 10MB)
profilePictureUrlstringYesURL of the profile picture to compare against
externalRefstringNoYour internal reference ID

Response:

json
{
  "success": true,
  "data": {
    "verificationId": "vrf_sm_abc123xyz",
    "samePerson": true,
    "matchScore": 94.5,
    "confidence": "high",
    "processingMs": 2340
  }
}

Response Fields:

FieldTypeDescription
verificationIdstringUnique verification ID (prefixed with vrf_sm_)
samePersonbooleantrue if faces match (score ≥ 80)
matchScorenumberSimilarity score (0-100)
confidencestringhigh (≥90), medium (75-89), low (<75)
processingMsnumberProcessing time in milliseconds

ID Document Verification

Full identity verification with face matching, liveness detection, and document OCR.

POST /v1/verify/id-document

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key
Content-TypestringYesmultipart/form-data

Request Body (multipart/form-data):

FieldTypeRequiredDescription
selfiefileYesLive selfie image (JPEG, PNG, max 10MB)
idFrontfileYesFront of ID document (JPEG, PNG, max 10MB)
idBackfileNoBack of ID document (JPEG, PNG, max 10MB)
externalRefstringNoYour internal reference ID
documentTypestringNoDocument type hint (e.g., passport, national_id)

Response:

json
{
  "success": true,
  "data": {
    "verificationId": "vrf_id_xyz789abc",
    "status": "approved",
    "decision": "approved",
    "confidence": "high",
    "faceMatch": {
      "score": 92.3,
      "samePerson": true
    },
    "documentData": {
      "surname": "SMITH",
      "names": "JOHN MICHAEL",
      "dateOfBirth": "1990-05-15",
      "idNumber": "9005151234567",
      "sex": "M",
      "nationality": "ZA",
      "documentType": "NATIONAL_ID",
      "expiryDate": "2030-05-15"
    },
    "ocrConfidence": 85,
    "processingMs": 5420
  }
}

Response Fields:

FieldTypeDescription
verificationIdstringUnique verification ID (prefixed with vrf_id_)
statusstringapproved, rejected, or needs_review
decisionstringSame as status
confidencestringhigh, medium, or low
faceMatch.scorenumberFace similarity score (0-100)
faceMatch.samePersonbooleantrue if faces match (score ≥ 70)
documentDataobjectExtracted document information
ocrConfidencenumberOCR confidence (0-100)
processingMsnumberProcessing time in milliseconds

Document Data Fields:

FieldTypeDescription
surnamestringLast name from document
namesstringFirst and middle names
dateOfBirthstringDate of birth (YYYY-MM-DD)
idNumberstringID/Document number
sexstringM or F
nationalitystringNationality code
documentTypestringType of document
expiryDatestringDocument expiry date (YYYY-MM-DD)

Session Endpoints

For redirect-based verification flows.

Create Session

Create a verification session for redirect-based flows.

POST /v1/sessions/create

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key
Content-TypestringYesapplication/json

Request Body:

json
{
  "userId": "user_123",
  "callback": "https://yourapp.com/verification-complete"
}
FieldTypeRequiredDescription
userIdstringYesYour user identifier
callbackstringNoCallback URL after verification

Response:

json
{
  "success": true,
  "session": "eyJhbGciOiJIUzI1NiIs...",
  "verifyUrl": "https://verify.yeboverify.com?session=eyJhbGciOiJIUzI1NiIs...",
  "expiresIn": 1800
}

Validate Session

Validate a session token.

POST /v1/sessions/validate

Request Body:

json
{
  "session": "eyJhbGciOiJIUzI1NiIs..."
}

Response:

json
{
  "success": true,
  "userId": "user_123",
  "businessId": "clxxxxx",
  "callback": "https://yourapp.com/verification-complete",
  "expiresAt": 1705323600000
}

Verification History

List Verifications

Get a paginated list of verifications for your business.

GET /v1/verifications

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key

Query Parameters:

ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber20Results per page (max 100)
statusstring-Filter by status: PENDING, PROCESSING, COMPLETED, FAILED, NEEDS_REVIEW

Response:

json
{
  "success": true,
  "data": {
    "verifications": [
      {
        "verificationId": "vrf_sm_abc123",
        "externalRef": "order_456",
        "status": "COMPLETED",
        "decision": "APPROVED",
        "confidence": "high",
        "createdAt": "2024-01-15T12:00:00.000Z",
        "completedAt": "2024-01-15T12:00:03.000Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 156,
      "totalPages": 8
    }
  }
}

Get Verification Details

Get detailed information about a specific verification.

GET /v1/verifications/:verificationId

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key

Response:

json
{
  "success": true,
  "data": {
    "verificationId": "vrf_id_xyz789abc",
    "externalRef": "user_123",
    "status": "COMPLETED",
    "decision": "APPROVED",
    "decisionReason": "High face match and document verification confidence",
    "confidence": "high",
    "faceScore": 92.3,
    "ocrConfidence": 85,
    "extractedData": {
      "surname": "SMITH",
      "names": "JOHN MICHAEL",
      "dateOfBirth": "1990-05-15",
      "idNumber": "9005151234567",
      "documentType": "NATIONAL_ID"
    },
    "processingMs": 5420,
    "createdAt": "2024-01-15T12:00:00.000Z",
    "completedAt": "2024-01-15T12:00:05.000Z"
  }
}

Account Endpoints

Get Account Info

Get your business account information.

GET /v1/account

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key

Response:

json
{
  "success": true,
  "data": {
    "id": "clxxxxx",
    "name": "Acme Corp",
    "email": "api@acme.com",
    "webhookUrl": "https://acme.com/webhooks/yeboverify",
    "plan": "business",
    "active": true,
    "createdAt": "2024-01-01T00:00:00.000Z"
  }
}

Update Webhook URL

Update your webhook configuration.

PUT /v1/account/webhook

Headers:

HeaderTypeRequiredDescription
X-API-KeystringYesYour API key
Content-TypestringYesapplication/json

Request Body:

json
{
  "webhookUrl": "https://yourapp.com/webhooks/yeboverify",
  "webhookSecret": "your_webhook_secret"
}

Response:

json
{
  "success": true,
  "data": {
    "webhookUrl": "https://yourapp.com/webhooks/yeboverify",
    "message": "Webhook configuration updated"
  }
}

File Requirements

Supported Formats

  • JPEG (.jpg, .jpeg)
  • PNG (.png)
  • WebP (.webp)

Size Limits

  • Maximum file size: 10MB per file
  • Recommended resolution: 640x480 to 1920x1080

Image Quality Tips

  • Ensure good lighting
  • Face should be clearly visible
  • ID documents should be flat and fully visible
  • Avoid blur, glare, or shadows