Platform API · API Docs · eKYC Platform
Verify ID
POST/ekyc/platform/verify_id
Uploads ID card images (and optional QR images), runs OCR and tampering checks, and returns the final verification result synchronously.
Request
MethodPOST
Path/ekyc/platform/verify_id
Content-Typeapplication/json
Auth requiredYes — Bearer access_token
| Name | Type | Required | Description |
|---|---|---|---|
card_type | string | Required | Card type to verify (e.g. vn.national_id, vn.passport, ph.philhealth) |
image | object | Required | Front side image: { "base64": "<base64_string>", "metadata": "<string>", "qr_code": [{"result": "...", "from_image_type": "..."}] } |
image2 | object | Optional | Back side image: same structure as image |
qrs | array | Optional | QR code images: [{ "base64": "<base64_string>", "metadata": "<string>" }] |
Response
data.status carries the verification result, and data.label names the image that was processed.
| Field | Type | Description |
|---|---|---|
status | string | Verification result: success, failure, partial_success, etc. |
error_code | string | Error code when status is failure (omitted on success) |
error_message | object | Human-readable error details (omitted on success) |
label | string | Image label that was processed (e.g. vn.national_id.front) |
next_action | string | Action the client should take next (e.g. process_qr_code) — if applicable |
application_state | string | Updated application state after verification |
A completed verification of the front of a Vietnamese national ID:
{
"data": {
"status": "success",
"error_code": "",
"error_message": {},
"label": "vn.national_id.front",
"next_action": "",
"application_state": ""
},
"message": "verify id card completed",
"time": "2026-01-01T00:00:00Z",
"verdict": "success"
}
Failure codes
The top-level verdict names the outcome, alongside the HTTP status code:
verdict | Status code | Description |
|---|---|---|
success | 200 | Verification completed (check data.status for result). |
invalid_parameters | 400 | Missing or invalid card_type, image, or base64 data. |
missing_authorization | 401 | Bearer access_token is missing. |
expired_token | 401 | Access token expired — call Initialize again. |
record_not_found | 404 | Session referenced by the access token no longer exists (expired or reset). |
limit_exceeded | 429 | A verification is already in progress for this session. |
failure | 500 | Internal server error or verification timeout. |