One call. One decision you can act on.
Selfie and KTP in — approved, review or rejected out.
Why teams use KYC Verify
The whole check, one price
Quality gate, face match, passive liveness and document checks in a single call.
Never approved on a guess
Approval requires every component to pass; anything inconclusive returns review.
Document checks included
Document integrity and data-consistency checks run on every card.
Clear next steps
Stable reason codes and user-safe retake guidance on every non-approval.
From request to result
- Send a selfie and KTP photo in one signed POST.
- Components run in order and feed one decision engine.
- Receive the decision, reason codes and guidance.
One bundle price per completed verification — not billed per component. Photos rejected by the quality gate (422) and errors are free.
Full API reference →POST /v1/kyc/verify
Idempotency-Key: 2e7d…
{
"selfie": { "image": "<base64>" },
"reference": { "image": "<base64 KTP>" },
"clientRef": "user_123"
}// example
{
"data": {
"decision": "approved",
"faceMatch": { "decision": "PASS" },
"liveness": { "decision": "PASS" },
"document": { "authenticity": { "status": "PASS" } },
"reasonCodes": []
}
}Questions
What should I do with "review"?
Hold the application and resolve it with POST /v1/analyses/:id/review. The original automated decision stays in the audit trail.
Can I get the KTP data in the same call?
Yes, with options.extractIdentity. The key also needs the document:ocr scope.
Put KYC Verify into production.
Request access and our team activates your account, or talk to sales about volume.