# Request Fields

`POST /api/v2/userverification` requires all fields in the following table.

| Field | Requirements |
| --- | --- |
| `trId` | Unique merchant transaction ID; 1–255 ASCII letters, digits, or hyphens. |
| `nik` | Exactly 16 digits. |
| `name` | 1–100 characters matching the user's identity card. |
| `dob` | Date of birth in `dd-mm-yyyy` format. |
| `email` | Valid email address; 5–255 characters. |
| `phone` | 10–16 digits with an optional leading `+`; no spaces. |
| `selfie` | Base64-encoded JPG, JPEG, or PNG; decoded size no larger than 2 MB; width 135–1080 px and height 240–1920 px. |
| `ktp` | Base64-encoded JPG, JPEG, or PNG identity-card image; decoded size no larger than 2 MB; width 480–1920 px and height 270–1080 px. |
| `channel` | Privy-enabled channel; 1–100 ASCII letters, digits, or hyphens. |

## Image guidance

Use the original, clearly visible selfie and identity-card images. Do not send
a file path, multipart upload, or data-URL prefix. Invalid base64, unsupported
image types, and images larger than 2 MB return HTTP `422`.

## Transaction IDs

Generate a unique `trId` for each verification attempt and retain it with the
returned `transaction_id`. The first value identifies the request in the
merchant system; the second identifies the transaction generated by Privy.

## Date and identity data

Send the name and date of birth as they appear on the identity card. `dob` is a
string, not an ISO 8601 date, and uses `dd-mm-yyyy`.

For the exact patterns and length constraints, open the
[API Explorer](/b2b-digital-certificate/api).
