Service API · API Docs · eKYC Platform
eKYC full checks (Deprecated)
POST/portal/ekyc/full_checks
Deprecated — runs OCR, face compare, liveness, sanity and tampering checks over an ID card and a set of selfies in one request, and returns each check's result.
Request
MethodPOST
Path/portal/ekyc/full_checks
Content-Typeapplication/json
Auth requiredYes — JWT access token
Send the JWT access token in the Authorization header.
| Name | Type | Required | Description |
|---|---|---|---|
card_type | string | Required | Card type of the image as described at Card types table |
image1 | ImageData | Required | Image of the identity card's front side |
image2 | ImageData | Optional | Image of the identity card's back side |
selfies | []ImageData | Optional | List of selfie images of the customer. Max 3 images. |
metadata | json | Required | More information of the identity, e.g. client_uid, phone_number, dob, name. client_uid must not be empty |
{
"card_type": string,
"image1": {
"base64": string,
"label": string,
"metadata": JSON
},
"image2": {
"base64": string,
"label": string,
"metadata": JSON
},
"selfies": [
{
"base64": string,
"label": string,
"metadata": JSON
},
...
{
"base64": string,
"label": string,
"metadata": JSON
}
]
"metadata": JSON
}
The ImageData object
image1, image2 and each element of selfies accept:
| Name | Type | Required | Description |
|---|---|---|---|
base64 | string | Required | Base64 encoded text of image data |
label | string | Optional | Label of the image as described at Label table |
metadata | json | Optional | Key-value string; keys must be strings, values may be string, int, float, or bool. Example "{\"id\":\"123456789\",\"type\":1}" |
Response
On success case: 200 OK
{
"data": {
"request_id": "538cdfe9-7009-4bcf-b514-6faf8904e82c",
"card_information": [
{
"field": "id",
"value": "123456789012",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "name",
"value": "FULL NAME",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "date_of_birth",
"value": "2005/03/02",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "gender",
"value": "F",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "address",
"value": "RD 1000 NDC COMPOUND,, SITH DISTRICT",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "last_name",
"value": "LAST NAME",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "first_name",
"value": "FIRST NAME",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "middle_name",
"value": "MIDDLE NAME",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "card_type",
"value": "ph.philhealth",
"confidence_verdict": "",
"confidence_score": 0
},
{
"field": "card_label",
"value": "ph.philhealth.qr.front",
"confidence_verdict": "",
"confidence_score": 0
}
],
"compare_faces": [
{
"face1_id": "7d71e6e2-a6bb-4ea6-8826-be0947afd6f4",
"face2_id": "1647fae2-7ff2-4500-89cc-4196e42512ce",
"result": "matched",
"score": 0.8136464
}
],
"liveness_check": {
"is_live": true,
"score": 0.99999917
},
"portrait_sanity": {
"verdict": "good",
"score": 1
},
"card_sanity": {
"verdict": "photo_not_qualified",
"score": 0.8199463,
"score_details": [
{
"verdict": "good",
"score": 1
},
{
"verdict": "photo_not_qualified",
"score": 0.8199463
}
],
"verdict_details": {}
},
"card_tampering": {
"verdict": "alert",
"score": 1,
"details": [
{
"verdict": "non_liveness",
"score": 0.99,
"name": "alert_1",
"info": "image1"
}
]
}
},
"message": "fully check eKYC successfully",
"time": "2026-01-27T18:03:56+07:00",
"verdict": "success"
}
The top-level verdict maps as follows:
| verdict | Description |
|---|---|
| success | Process the request successfully. |
| failure | Process the request failure. |
Failure codes
Parameter, auth, method, rate-limit and server errors are the same on every JWT-authenticated call — see Common objects & errors.