Lewati ke konten utama

KTP OCR

Ekstrak NIK, nama, dan alamat dari foto KTP.

Base URL​

https://use.api.co.id

Kirim foto KTP ke POST /ocr/ktp-extract sebagai multipart/form-data (field file) dengan header x-api-co-id. Response berisi NIK, nama, tempat/tanggal lahir, alamat, RT/RW, kelurahan, kecamatan, kota, provinsi, agama, status perkawinan, pekerjaan, kewarganegaraan, dan masa berlaku. Field hasil OCR selalu dikembalikan lengkap.

Format file & batas​

KetentuanNilai
FormatJPG, JPEG, PNG
Ukuran maksimal5 MB per file (file dan selfie)
Isi gambarFoto KTP Indonesia

OCR saja​

curl -X POST "https://use.api.co.id/ocr/ktp-extract" \
-H "x-api-co-id: YOUR_API_KEY" \
-F "file=@/absolute/path/to/ktp.jpg"
{
"is_success": true,
"message": "Success",
"data": {
"nik": "3201012345678901",
"nama": "JOHN DOE",
"tempat_lahir": "JAKARTA",
"tanggal_lahir": "01-01-1990",
"jenis_kelamin": "LAKI-LAKI",
"alamat": "JL. MERDEKA NO. 123",
"rt": "001",
"rw": "002",
"kelurahan": "GAMBIR",
"kecamatan": "GAMBIR",
"kota": "JAKARTA PUSAT",
"provinsi": "DKI JAKARTA",
"berlaku_hingga": "SEUMUR HIDUP"
}
}

OCR + KTP Check​

Set verify_result ke "true" untuk memverifikasi hasil OCR melalui KTP Check (ID Verification). Karena request memakai multipart/form-data, kirim value ini sebagai string form-data "true". Field selfie opsional.

curl -X POST "https://use.api.co.id/ocr/ktp-extract" \
-H "x-api-co-id: YOUR_API_KEY" \
-F "file=@/absolute/path/to/ktp.jpg" \
-F "verify_result=true" \
-F "selfie=@/absolute/path/to/selfie.jpg"

API.CO.ID memakai hasil OCR sebagai input KTP Check:

  • nik, name, dan date_of_birth diambil dari hasil OCR;
  • identity memakai file KTP yang sama;
  • selfie memakai file selfie customer jika dikirim;
  • reference_number, email akun, dan nomor telepon dari KYC approved disiapkan server-side.

Jika selfie dikirim, API.CO.ID meneruskannya ke provider dan response verifikasi dipakai apa adanya. Jika tidak dikirim, API.CO.ID memakai fallback selfie internal untuk menjaga kompatibilitas request lama.

Customer harus punya akses id-verification dan eKYC approved. Jika syarat KTP Check belum terpenuhi, OCR tetap mengembalikan field hasil OCR lengkap dan billing verifikasi ditandai not_charged. Detail verifikasi ada di verification_result, detail billing di billing.

{
"is_success": true,
"message": "Success",
"data": {
"nik": "3201012345678901",
"nama": "JOHN DOE",
"tempat_lahir": "JAKARTA",
"tanggal_lahir": "01-01-1990",
"jenis_kelamin": "LAKI-LAKI",
"alamat": "JL. MERDEKA NO. 123",
"rt": "001",
"rw": "002",
"kelurahan": "GAMBIR",
"kecamatan": "GAMBIR",
"kota": "JAKARTA PUSAT",
"provinsi": "DKI JAKARTA",
"berlaku_hingga": "SEUMUR HIDUP",
"verification_result": {
"result_verified": true,
"result_verified_message": "verified",
"verification_reference_number": "KTP20260725103000"
},
"billing": {
"charged_products": [
{"product_code": "ktp-ocr", "status": "charged"},
{"product_code": "id-verification", "status": "charged"}
]
}
}
}

Jika verifikasi tidak diproses (contoh: KYC belum approved), field OCR tetap lengkap dan bagian verifikasi menjadi:

{
"verification_result": {
"result_verified": false,
"result_verified_message": "ID verification was not processed because KYC for id-verification is kyc_required.",
"verification_reference_number": "KTP20260725103000"
},
"billing": {
"charged_products": [
{"product_code": "ktp-ocr", "status": "charged"},
{"product_code": "id-verification", "status": "not_charged", "reason": "kyc_not_approved"}
]
}
}

Billing​

  • OCR KTP dan KTP Check adalah dua produk billing yang berbeda.
  • OCR KTP dipotong setelah OCR sukses.
  • id-verification hanya dipotong jika KTP Check diproses provider.
  • Jika KTP Check gagal karena KYC, saldo, validasi hasil OCR, atau provider error, id-verification tidak dipotong.

Error umum​

HTTPKondisi
400Bad RequestFile hilang, tipe file tidak didukung, ukuran file terlalu besar, selfie tidak valid, atau verify_result bukan boolean
401UnauthorizedAPI key hilang atau salah
402Payment RequiredSaldo OCR KTP tidak cukup
429Too Many RequestsRate limit/quota terlampaui
500Server ErrorOCR pipeline/provider internal gagal
Apakah halaman ini membantu?