Base URL: https://echoverify.ng/api/v1
X-API-Key: ev_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx X-Environment: test | live Content-Type: application/json
Official simulator values for testing in X-Environment: test.
BVN: 11111111111 vNIN: YV111111111111FY NIN: 11111111111 Passport: A11111111 NDL (Driver License): AAA11111AA11 PVC: 11A1A1A111111111111 Phone Number: 08000000001 Bank Account: 1111111111 Company Search (country NG): RC11111111
SSNIT: C987464748983, C037363637123 Drivers License: 070644, 752721 Passport: G0000575, G0000603 Voters Card: 9001330456, 9001332866
Passport: A2081731, A1998653 National ID: 25219798, 28078627, 237721480
BVN: 00000000000 vNIN: YV000000000000FY NIN: 00000000000 Passport: A00000000 NDL (Driver License): AAA00000AA00 PVC: 00A0A0A000000000000 Phone Number: 08000000000 Bank Account: 1000000000 Company Search (country NG): RC00000000 TIN: 00000000-0000
SSNIT: C000000000000 Drivers License: 000000 Passport: G0000000 Voters Card: 0000000000
Passport: AA0000000 National ID: 00000000
GET /products
{
"data": [
{
"id": 1,
"name": "NIN Verification",
"slug": "nin-verification",
"price": 120
},
{
"id": 2,
"name": "BVN Verification",
"slug": "bvn-verification",
"price": 144
}
]
}
GET /listings?type={type}
Supported types: banks, countries, document-types, id-types
Optional query params: country, search
GET /listings?type=banks&country=NG
{
"type": "banks",
"status": true,
"message": "Listing fetched successfully.",
"count": 3,
"data": [
{ "name": "Guaranty Trust Bank", "code": "058", "slug": "" },
{ "name": "Access Bank", "code": "044", "slug": "" },
{ "name": "First Bank", "code": "011", "slug": "" }
]
}
GET /listings?type=countries GET /listings?type=document-types GET /listings?type=id-types&search=passport
POST /verify
{
"product_slug": "nin-verification",
"payload": {
"id": "25082691216",
"isSubjectConsent": true
}
}
{
"product_slug": "bvn-verification",
"payload": {
"id": "22345678901",
"isSubjectConsent": true
}
}
{
"product_slug": "passport-verification",
"payload": {
"id": "A12345678",
"lastName": "DOE",
"isSubjectConsent": true
}
}
{
"product_slug": "driver-license-verification",
"payload": {
"id": "AAA11111AA11",
"isSubjectConsent": true
}
}
{
"product_slug": "bank-account-verification",
"payload": {
"account_number": "0123456789",
"bank_code": "058"
}
}
{
"product_slug": "cac-verification",
"payload": {
"registrationNumber": "RC11111111",
"isConsent": true
}
}
{
"product_slug": "business-verification",
"payload": {
"registrationNumber": "RC11111111",
"countryCode": "NG",
"isConsent": true
}
}
{
"product_slug": "document-verification",
"payload": {
"document_type": "passport",
"document_number": "A12345678",
"country": "NG"
}
}
{
"reference": "EV-VER-ABCDEFG123456",
"status": "success",
"charged": 120,
"image_urls": [
"https://.../selfie.jpg",
"https://.../document.jpg"
],
"echoverify_response": {
"status": true,
"message": "Verification completed successfully.",
"data": {
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1994-01-10"
},
"http_status": 200
}
}
{
"reference": "EV-VER-HIJKLMN654321",
"status": "failed",
"charged": 120,
"image_urls": [],
"echoverify_response": {
"status": false,
"message": "Verification could not be completed.",
"data": null,
"http_status": 404
}
}
POST /verify
{
"product_slug": "face-match-verification",
"payload": {
"image": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"selfie_image": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}
}
{
"reference": "EV-VER-FACEMATCH12345",
"status": "success",
"charged": 264,
"echoverify_response": {
"status": true,
"message": "Verification completed successfully.",
"data": {
"match": true,
"match_score": 0.94
},
"http_status": 200
}
}
POST /verify
{
"product_slug": "liveness-verification",
"payload": {
"image": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"isSubjectConsent": true
}
}
{
"reference": "EV-VER-LIVENESS12345",
"status": "success",
"charged": 264,
"echoverify_response": {
"status": true,
"message": "Verification completed successfully.",
"data": {
"is_live": true,
"confidence": 0.98
},
"http_status": 200
}
}
EchoVerify accepts aliases like first_name/last_name and maps them to provider-required fields automatically.
POST /verify
{
"product_slug": "aml-name-screening",
"payload": {
"query": "John Doe",
"type": "individual",
"advancedSearch": {
"country": "NG"
}
}
}
{
"reference": "EV-VER-AMLNAME123456",
"status": "success",
"charged": 144,
"echoverify_response": {
"status": true,
"message": "Verification completed successfully.",
"data": {
"is_match": false,
"risk_level": "low",
"watchlists_checked": ["pep", "sanctions"]
},
"http_status": 200
}
}
Use domestic-pep-screening for dedicated PEP checks, and AML screening products for sanctions/watchlist checks.
EchoVerify maps common aliases (for example id, wallet_address, full_name) to required provider schema.
POST /verify
{
"product_slug": "domestic-pep-screening",
"payload": {
"fullName": "Jane Smith"
}
}
{
"product_slug": "aml-identity-screening",
"payload": {
"query": "22345678901",
"type": "individual",
"advancedSearch": {
"country": "NG"
}
}
}
{
"product_slug": "aml-crypto-screening",
"payload": {
"query": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"type": "wallet"
}
}
Supported KYT product slugs: kyt-create-individual-client, kyt-create-business-client, kyt-risk-assessment
EchoVerify maps simplified aliases like type, external_id, business_name, and registration_number into provider KYT schema automatically.
POST /verify
{
"product_slug": "kyt-create-individual-client",
"payload": {
"actorType": "individual",
"externalAccountId": "CUST-1001",
"firstName": "Ada",
"lastName": "Okafor",
"KycVerifiedBy": "not_verified"
}
}
{
"product_slug": "kyt-create-business-client",
"payload": {
"actorType": "legal_entity",
"externalAccountId": "BIZ-2044",
"businessName": "Acme Holdings Ltd",
"customerSegmentation": ["business clients"],
"KycVerifiedBy": "not_verified",
"legalEntity": {
"type": "limited liability",
"industryClassification": "general",
"registrationNumber": "RC123456",
"countryOfIncorporation": "NG"
},
"accountNumbers": [
{
"accountType": "business",
"accountNumber": "BIZ-2044",
"domicile": "NG",
"accountCreationDate": "2026-01-01"
}
],
"addresses": [
{
"addressType": "office",
"line1": "N/A",
"postCode": "000000",
"city": "Lagos",
"state": "Lagos",
"country": "NG",
"lengthOfStay": "1"
}
],
"legalEntityDirectors": [
{
"name": "Primary Director",
"sourceOfIncome": "business",
"phoneNumbers": [{"countryCode":"234","phone":"0000000000"}],
"emails": ["director@example.com"],
"uniqueIdentifier": [{"issuingCountry":"NG","idType":"other","idNumber":"N/A"}]
}
]
}
}
{
"product_slug": "kyt-risk-assessment",
"payload": {
"id": "actor_12345",
"country": "NG"
}
}
{
"reference": "EV-VER-KYTRISK998877",
"status": "success",
"charged": 360,
"echoverify_response": {
"status": true,
"message": "Verification completed successfully.",
"data": {
"risk_score": 31,
"risk_level": "medium"
},
"http_status": 200
}
}
GET /verifications/{reference}
{
"reference": "EV-VER-ABCDEFG123456",
"status": "success",
"environment": "test",
"charged": 120,
"outcome_image_url": "https://.../selfie.jpg",
"image_urls": ["https://.../selfie.jpg"],
"product": {
"id": 1,
"name": "NIN Verification",
"slug": "nin-verification"
},
"echoverify_response": {
"status": true,
"message": "Verification completed successfully.",
"data": {
"first_name": "John",
"last_name": "Doe"
},
"http_status": 200
},
"created_at": "2026-02-28T14:40:02.000000Z"
}
GET /me
{
"company": "Acme Corp",
"email": "client@acme.com",
"wallet_balance": 19880,
"active_keys": 2
}
curl -X GET 'https://echoverify.ng/api/v1/listings?type=banks&country=NG' \ -H 'X-API-Key: ev_test_xxxxx' \ -H 'X-Environment: test'
curl -X POST 'https://echoverify.ng/api/v1/verify' \
-H 'X-API-Key: ev_test_xxxxx' \
-H 'X-Environment: test' \
-H 'Content-Type: application/json' \
-d '{"product_slug":"nin-verification","payload":{"id":"25082691216"}}'
curl -X GET 'https://echoverify.ng/api/v1/verifications/EV-VER-ABCDEFG123456' \ -H 'X-API-Key: ev_test_xxxxx' \ -H 'X-Environment: test'