~/blog $ cat kyc-verify-ktp-selfie-satu-panggilan.md

Read a KTP and match a selfie, in one API call

5 August 2026

Reading an Indonesian KTP and checking that the face on it matches a selfie usually means a sales call, a contract, and a minimum commitment. We built the version where you just call it.

One call

curl https://api.glianalabs.com/v1/tools/kyc-verify \
  -H "content-type: application/json" \
  -d '{
    "id_image": { "image_base64": "<KTP>" },
    "selfie":   { "image_base64": "<SELFIE>" }
  }'

What comes back:

{
  "document": {
    "fields": { "document_type": "KTP", "nik": "...", "nama": "...", "...": "..." },
    "verification": {
      "ok": true,
      "region": { "kabupaten_kota": "Kota Bandar Lampung", "provinsi": "Lampung" },
      "agrees": { "birth_date": true, "gender": true }
    }
  },
  "face": { "similarity": 0.62, "match": true, "threshold": 0.35 }
}

The verification block is the interesting part

A NIK is not a random number. It encodes the region that issued it, the holder's date of birth and their gender. So the printed fields can be checked against the number itself, and agrees reports whether they line up.

That is a confidence signal for the read — it catches a misread digit or a poor photo. It is not proof the document is genuine, and we say so in the response rather than letting the word "verified" imply more than it should.

What it does not do

There is no liveness check. A photograph of a photograph can match. And we return a similarity score, never a pass or fail — because the threshold that matters is yours. A bank wants 0.6; a marketplace is fine with 0.4. We measure; you decide.

That is a deliberate line. The moment an API answers "this person is verified", it has made an identity determination on your behalf, on a stack that cannot support the claim.

Price

Service Per check
Local population-data check ~Rp 4,000
Global document + biometric session $0.10 – $2.00
GlianaAI kyc-verify $0.015 (~Rp 270)

Cheaper because it does less: no Dukcapil lookup, no liveness. If you need those, you need a different product. If you need to read a document and match a face, this is the whole thing.

Nothing is stored

The identity endpoints hold your images in memory for the duration of the call and keep no copy — no face database, no gallery, no index. If you upload a file to get a URL, it is deleted as soon as it has been read.

No signup

Payment is an HTTP 402 handshake. Pay per call from your own wallet, or top up a prepaid balance. There is no account to create to try it, and no contract to sign to keep using it.

GlianaAI is a pay-per-call AI API: 90+ models plus Indonesian identity tools, no signup.

See the product API reference Gliana Labs products

← All posts