curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=MYS" \
-F "services=mys_national_id" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=John Doe" \
-F "date_of_birth=1990-01-01" \
-F "national_id=111111111111"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "MYS",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"identification_number": "SAMPLE-ID-12345",
"postal_code": "10001",
"state": "Sample State",
"street": "sample_value"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "MYS",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"identification_number": "SAMPLE-ID-12345",
"postal_code": "10001",
"state": "Sample State",
"street": "sample_value"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "MYS",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
🇲🇾 Malaysia
Malaysia National ID
Verifies input data against a Government agency database consisting of Malaysian citizens data. Authoritative real-time identity lookup for Malaysia. Real-time lookup, pay-per-call.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=MYS" \
-F "services=mys_national_id" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=John Doe" \
-F "date_of_birth=1990-01-01" \
-F "national_id=111111111111"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "MYS",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"identification_number": "SAMPLE-ID-12345",
"postal_code": "10001",
"state": "Sample State",
"street": "sample_value"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "MYS",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"identification_number": "SAMPLE-ID-12345",
"postal_code": "10001",
"state": "Sample State",
"street": "sample_value"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "MYS",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
Verifies input data against a Government agency database consisting of Malaysian citizens data. Didit exposes this service through
POST /v3/database-validation/ so you can verify the submitted data against the authoritative source and receive normalized match results.
Coverage
- Coverage: > 75%
- Country: Malaysia
- Service ID:
mys_national_id - Data domain: Identity
- Category: NationalIDRegistry
Inputs
| Field | Required | Example |
|---|---|---|
full_name | Yes | John Doe |
date_of_birth | Yes | 1990-01-01 |
national_id | Yes | 111111111111 |
address.street_1 | No | 123 Sample Street |
address.street_2 | No | Unit 4 |
address.city | No | Sample City |
address.region | No | Sample State |
address.postal_code | No | 10001 |
phone | No | +15550101000 |
vendor_data | No | user-1234 |
- Required inputs:
full_name,date_of_birth,national_id - Optional inputs:
address.street_1,address.street_2,address.city,address.region,address.postal_code,phone,vendor_data - Consent: Required
- Workflow availability: Available in workflow
- Coverage: > 75%
- Price: $0.35 per successful query
Body parameters
string
default:"MYS"
required
ISO 3166-1 alpha-3 country code for this database service.Example:
MYSstring
default:"mys_national_id"
required
Array containing this service ID. Pinning the service keeps the request scoped to this exact database.Example:
mys_national_idboolean
default:"true"
required
Explicit end-user consent for this service.Example:
truestring
default:"John Doe"
required
Full legal name to validate.Example:
John Doestring
default:"1990-01-01"
required
Date of birth in
YYYY-MM-DD format.Example: 1990-01-01string
default:"111111111111"
required
National identity number for this service.Example:
111111111111object
Structured residential address object. Use
street_1, street_2, city, region, postal_code, and country. A complete legacy address string is still accepted but not recommended.Example: {"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}string
default:"+15550101000"
Phone number in international format.Example:
+15550101000string
default:"user-1234"
Your stable user reference for this person, such as your internal user ID. Didit uses it to link standalone checks to the same end user and reduce duplicate-detection noise.Example:
user-1234Input rules & validation notes
addressis optional for this service. You can send one completeaddressstring and Didit will split it into structured address elements when possible, or you can send the structured fields explicitly.national_idmust contain digits only; remove spaces, hyphens, and punctuation before sending the request.national_idmust be exactly 12 characters long.- For address services, send structured address fields instead of a single
addressstring when possible. address.street_1is the street address, including street number and street type.address.street_2is apartment, unit, building, floor, or extra address line. Send it only when you have it.address.cityis city, suburb, district, locality, or neighborhood.address.regionis state, province, region, or town.address.postal_codeis postcode or postal code.- Address-based database services require at least street address and postal code; requests rejected before source lookup are not charged.
How to call it
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=MYS" \
-F "services=mys_national_id" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=John Doe" \
-F "date_of_birth=1990-01-01" \
-F "national_id=111111111111"
Every successful call returns HTTP 200. The outcome_code field tells you what actually happened — distinguishing, for example, a real biometric mismatch (BIOMETRIC_NO_MATCH) from a selfie that could not be read (BIOMETRIC_IMAGE_UNUSABLE). The status shown is the default feature status; your configured Partial Match / No Match actions can override it.MATCH — The registry confirmed the identity and every checked field matched.{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "MYS",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"identification_number": "SAMPLE-ID-12345",
"postal_code": "10001",
"state": "Sample State",
"street": "sample_value"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
PARTIAL_MATCH — The identification number was found but one or more personal fields (usually name or date of birth) did not fully match.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "MYS",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"identification_number": "SAMPLE-ID-12345",
"postal_code": "10001",
"state": "Sample State",
"street": "sample_value"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
NO_MATCH — The registry returned no match for the submitted data.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "MYS",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "mys_national_id",
"service_name": "Malaysia National ID",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
Returned data
The exact fields surfaced insource_data depend on what the registry returns. The generated example for mys_national_id currently documents this normalized shape:
addressaddress_match_scorecitydate_of_birthidentification_numberpostal_codestatestreet
Pricing & SLAs
Malaysia National ID queries are billed only when Didit receives a conclusive result from the validation source.- Per-call price: $0.35 USD.
- Billing: per successful query. You are not charged when the registry is unreachable, when required fields are missing, or when the request is rejected before reaching the source.
- Latency: typical p95 < 2 s.
- Availability: 99.9% per quarter on Didit’s side; downstream source availability varies by country and dataset.