All APIs
Passport MRZ Validator
ICAO · Identity · 1 endpoint
Parse and checksum-verify a passport's machine-readable zone — document number, dates, and the composite check — before a KYC flow trusts it.
Base URL
https://api.diraz.ae
3 requestsNo cache1 credit / request
Endpoint
GET/v1/id/mrz
Snippet
Request — cURL
v1
curl https://api.diraz.ae/v1/id/mrz \
-H "Authorization: Bearer drz_live_…"Query parameters
- mrzstring · required
- The two (TD3, passport) or three (TD1, ID card) MRZ lines, newline-separated.
Example response
200 OK
v1
{
"data": {
"format": "TD3",
"valid": true,
"document_number": "X1234567",
"birth_date": "1990-08-15",
"expiry_date": "2027-03-20",
"nationality": "IDN",
"surname": "SANTOSO",
"given_names": "BUDI",
"checks": [
{ "field": "document_number", "valid": true },
{ "field": "birth_date", "valid": true },
{ "field": "expiry_date", "valid": true },
{ "field": "composite", "valid": true }
],
"issues": []
},
"meta": {
"request_id": "req_7Q2fK4mZ"
}
}- format
- `TD3` (passport) or `TD1` (ID card), as detected from the line lengths.
- valid
- True only when every check digit verifies.
- document_number / birth_date / expiry_date
- Parsed, with each field's check digit reported separately in `checks`.
- checks[].field
- One row per check digit: `document_number`, `birth_date`, `expiry_date`, `composite` — valid or not.
- nationality / surname / given_names
- As read off the zone, three-letter ICAO codes for nationality.
Errors
401 Unauthorized
v1
{
"error": {
"code": "UNAUTHORIZED",
"message": "The API key is invalid, expired, or revoked."
},
"meta": {
"request_id": "req_7Q2fK4mZ"
}
}Every failure carries a stable machine-readable code before the human message, and the same meta.request_id the successful responses carry. Quote it and we can find your exact request.
Errors are free
Nothing on this page is billed. You are charged for a 2xx and nothing else — a rejected key, a bad parameter, a rate limit, or an outage on our side all cost you zero. Retry without watching the meter.
- UNAUTHORIZEDHTTP 401
- Missing, malformed, expired, or revoked API key.
- FORBIDDENHTTP 403
- The key is valid but lacks the scope this product needs.
- VALIDATION_ERRORHTTP 422
- A query parameter is the wrong type or out of range.
- RATE_LIMITEDHTTP 429
- Rate limit exhausted. `Retry-After` says how long to wait.
- SERVICE_UNAVAILABLEHTTP 503
- No data recent enough to serve. Carries `Retry-After`, and is never billed.
Total requests3
CacheNone
- Status
- Operational
- Category
- Identity
- Scope
- market:read
- Rate limit
- 300 requests / 60s per key
- Pricing
- 1 credit / request
- Passport MRZ Validator
1/1 passing