ID verification Dukcapil is designed to verify the authenticity of user ID information by checking it against the government database, including name, birthdate, and face verification.
API Method
Base URL
Indonesia: https://id-credit.apitd.net/verification/kyc/idverifybiometric/v1
API
URL | Request Methods | Content-Type | Output Format | Character Set |
---|---|---|---|---|
api-base-url?partner_code=xxx&partner_key=xxx | POST | application/json | JSON | UTF-8 |
Authentication
Parameter | Type | Description | Required/Optional | Notes |
---|---|---|---|---|
partner_code | String | Partner Code | Required | Assigned by TD |
partner_key | String | Partner Key | Required | Assigned by TD |
Request
Parameter | Type | Description | Required/Optional | Notes |
---|---|---|---|---|
id_number | String | NIK number | Required | The NIK number of the person; should be 16-digits number only; no negative number allowed; no float number allowed; cannot be empty; cannot start with 0 |
name | String | Name | Required | Name is case-sensitive and must be in uppercase letters. Lowercase letters will not match. |
birth_date | String | Date of birth | Required | "YYYY-MM-DD" format |
face_image | String | Face image | Required | Base64 (NO WRAP) of face image in JPG, JPEG or PNG format, within 3M |
country | String | Country | Required | 2-letter country code according to ISO 3166 Support: ID(Indonesia) |
Request Example
{
"id_number":"5981314208283510000",
"name":"Joe",
"birth_date":"1997-01-01",
"face_image":"/9j/4AAQSkZJRgABAQAAeAB4AAD/********XLiqqauzsw1J3sf/2Q==",
"country":"ID"
}
Response Parameter
Parameter | Type | Description | Required/Optional | Notes |
---|---|---|---|---|
code | Integer | API Status Code | Required | |
message | String | Status Message | Required | Specific reasons will be provided if the API is abnormal |
sequence_id | String | Unique ID of Response | Required | A unique ID used to mark each request |
result | String | Verification Result | Required | Enumeration: 1. pass (name, birthdate match with database, and face_similarity ≥75) 2. fail (name, birthdate do not match with database, or face_similarity ≤75, any one condition not met) |
id_name_match | String | Whether the ID number and name match | Required | Enumeration: 1. pass 2. fail 3. no_record |
id_birthdate_match | String | Whether the ID number and birthdate match | Required | Enumeration: 1. pass 2. fail 3. no_record |
face_similarity | Double | The Similarity of Portrait Comparison | Conditionally Required | Range 0 - 100, can choose your own similarity threshold based on risk appetite regardless of above result value. TD recommends that a result of ≥75 indicates the same person. |
API Status Code
code | Message | Description | Charged |
---|---|---|---|
200 | success | Success | YES |
301 | Service not purchased | Service not purchased | NO |
302 | Service has been suspend | Traffic blocked | NO |
303 | Not enough balance | Traffic insufficient | NO |
304 | Service expired | Service expired | NO |
305 | Daily maximum volume reached | Daily maximum volume reached | NO |
600 | Service Temporarily Unavailable | Service reached limit | NO |
11301 | {parameter} empty | {parameter} empty | NO |
11304 | The country partner located is not open | The country partner located is not open | NO |
11340 | {parameter} error | {parameter} error | NO |
11350 | Internal error | Internal error | NO |
Response Example
- Success(result=pass)
{
"code": 200,
"message": "Success",
"sequence_id": "170427842997****I3167369D6187177",
"result": "pass",
"id_name_match": "pass",
"id_birthday_match": "pass",
"face_similarity": 95.5
}
- Success(result=fail, name fail to match)
{
"code": 200,
"message": "Success",
"sequence_id": "170427842997****I3167369D6187177",
"result": "fail",
"id_name_match": "fail",
"id_birthday_match": "pass",
"face_similarity": 95.5
}
- Success(result=fail, no ID number record in the database)
{
"code": 200,
"message": "Success",
"sequence_id": "170427842997****I3167369D6187177",
"result": "fail",
"id_name_match": "no_record",
"id_birthday_match": "no_record"
}
- Failure
{
"code": 11340,
"sequence_id": "170427842997****I3167369D6187177",
"message": "birth_date error"
}