Complete step-by-step tutorial for integrating structural South African ID validation into your application
Structural South African ID validation for your applications: predictable JSON, Luhn-verified results, and a bulk endpoint when you need throughput—without CheckID storing raw ID numbers or decoded validation payloads on our servers.
Check ID API
Validate format, checksum, encoded date of birth, and citizenship indicator where derivable from the number. That helps you catch typos and impossible values early—then layer your own risk, onboarding, and document checks where your policies require them.
Response
<1s
Typical API latency for single checks
Bulk batch
100
IDs per bulk request (Professional)
Privacy posture
Zero ID storage on CheckID
CheckID does not store your submitted ID numbers or decoded validation results as application data on our servers. Your own systems and logs should follow the same discipline: never send raw IDs to analytics or error trackers.
Start with a free test API key for development. No credit card required.
Free test key available! Sign in to view your test API key, or create your own key from the API Keys dashboard.
Get API KeyThe Check ID API offers two validation endpoints to suit your needs:
Perfect for real-time form validation and individual verifications
GET /api/v1/validate/{idNumber}Process up to 100 ID numbers simultaneously - ideal for CSV imports and batch processing
POST /api/v1/validate/bulkChoose your programming language and copy the code examples below:
// Single ID Verification
const verifyID = async (idNumber) => {
const response = await fetch(`https://api.checkid.co.za/api/v1/validate/${idNumber}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
return await response.json();
};
// Bulk ID Verification (up to 100 IDs)
const verifyBulkIDs = async (idNumbers) => {
const response = await fetch('https://api.checkid.co.za/api/v1/validate/bulk', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ idNumbers })
});
return await response.json();
};Pro Tip
Use bulk validation for CSV uploads or database imports - process up to 100 IDs in a single request for maximum efficiency.
Here's the exact response structure you'll receive for each ID verification:
{
"idNumber": "8903075555083",
"isValid": true,
"dob": "1989-03-07T00:00:00",
"age": 35,
"gender": "M",
"citizenship": "SA Citizen"
}| Field | Description | Use Case |
|---|---|---|
isValid | Boolean indicating if ID number is valid | Input validation, error handling |
dob | Extracted birth date | Age verification, demographics |
gender | M/F from ID structure | User personalisation |
citizenship | SA Citizen/Permanent Resident | Internal eligibility rules, age gates |
Join 1,000+ South African businesses automating structural ID validation in their workflows. Get started with 10 free verifications—no credit card required.