ID VERIFICATION API

ID Verification API — Verifikasi Data KTP dengan Data Dukcapil

Cocokkan NIK, nama, dan tanggal lahir ke sumber data kependudukan resmi lewat mitra Penyelenggara Sertifikasi Elektronik. Rp 4.000 (~$0,25 USD) per verifikasi diproses — hasil verified atau rejected beserta alasannya dalam hitungan detik.

Penyelenggara Sertifikasi Elektronik Transport terenkripsi · gambar tidak disimpan Tanpa setup fee · tanpa langganan

Verifikasi Identitas Indonesia yang Siap Compliance

ID Verification API memeriksa apakah kombinasi NIK, nama, dan tanggal lahir milik seseorang benar-benar cocok dengan data kependudukan resmi, lalu mengembalikan satu hasil final: verified atau rejected . Inilah yang biasa dicari tim compliance sebagai dukcapil check — pengecekan keabsahan data penduduk — namun dikemas sebagai REST API yang bisa dipanggil langsung dari alur onboarding Anda.

Berbeda dengan OCR yang hanyamembacatulisan di kartu, verifikasi inimencocokkandata tersebut ke sumber resmi. OCR bisa memberi tahu bahwa sebuah KTP tertulis atas nama tertentu; ID Verification memberi tahu apakah identitas itu memang valid dan terdaftar.

Harga tetap: Rp 4.000 per verifikasi diproses provider (4.000 points) . Tidak ada setup fee, tidak ada retainer bulanan, tidak ada biaya komitmen. Isi points di dashboard, panggil endpoint, dan bayar saat provider selesai memproses request.

Layanan ini dijalankan bersama Penyelenggara Sertifikasi Elektronik, sehingga setiap permintaan melewati jalur penyedia yang terverifikasi dan tercatat. Pasangkan dengan KTP OCR API untuk mengisi form otomatis, lalu Face Matching API untuk mencocokkan wajah selfie.

Cocok ke Sumber Resmi

NIK, nama, dan tanggal lahir diperiksa ke data kependudukan — bukan sekadar validasi format 16 digit.

Reject Reason Transparan

Saat ditolak, response menyertakan reject_reason berisi kode dan alasan, jadi tim review tahu langkah berikutnya.

Bayar Per Keberhasilan

Rp 4.000 per verifikasi diproses. Tanpa minimum bulanan, tanpa biaya integrasi di depan.

Satu Endpoint Saja

Satu POST multipart, satu response. Reference number, email, dan nomor telepon diisi otomatis oleh sistem.

Cara Kerja Dukcapil Check dalam 3 Langkah

1
Daftar & dapatkan API key

Buat akun di dashboard dan salin API key untuk header x-api-co-id .

2
Kirim NIK, nama, tanggal lahir + foto

POST ke /id-verification/verify dengan field nik , name , date_of_birth , dan file identity .

3
Terima hasil verified / rejected

Response memuat result , reference_number , dan reject_reason bila ditolak.

Alur singkat dari pengiriman data identitas hingga hasil verifikasi dan pengurangan points.

Harga

Rp 4.000 Per Verifikasi. Tanpa Kejutan.

Perhitungan tetap dapat diprediksi baik Anda memverifikasi 100 identitas per bulan maupun 100 ribu.

Points dipotong setelah provider memproses

Rp 4.000

≈ $0,25 USD · Rp 4.000 per verifikasi diproses provider (4.000 points) · Tanpa setup fee, tanpa langganan

Tanpa Biaya Tambahan

Tidak ada biaya setup, tidak ada “biaya komitmen”, tidak ada credit lockup. Cukup isi points dan build.

Satu Integrasi

Satu endpoint REST, satu API key. Tidak perlu menyambung ke banyak penyedia terpisah untuk alur identitas.

Jalur Resmi

Diproses bersama Penyelenggara Sertifikasi Elektronik, dengan pencatatan permintaan di sisi penyedia.

Penting: points dipotong setelah provider memproses request — termasuk saat hasilnya rejected , karena verifikasinya tetap dijalankan. Yang tidak memotong points adalah request yang berhenti lebih dulu (API key salah, saldo kurang, eKYC belum approved) serta error dari sisi provider.
Contoh: 1.000 verifikasi bulanan menghabiskan Rp 4.000.000. Kombinasikan dengan KTP OCR (Rp 150) untuk menyaring input lebih dulu, sehingga hanya data yang sudah rapi yang dikirim ke verifikasi berbayar lebih tinggi.

Untuk Setiap Alur yang Butuh Identitas Terverifikasi

Dipakai di titik ketika menebak identitas pengguna terlalu mahal risikonya.

Fintech & Lending
Pastikan pemohon pinjaman, pembukaan rekening, atau BNPL memakai identitas yang benar-benar valid sebelum dana cair.
Platform e-KYC
Tawarkan verifikasi identitas sebagai layanan dengan unit economics yang dapat diprediksi dan tanpa vendor lock-in.
Marketplace & Seller
Saring seller dan merchant fiktif di titik pendaftaran, bukan setelah kerugian terjadi.
On-demand & Logistik
Verifikasi driver, rider, dan mitra pengantaran sebelum mereka memegang barang atau uang pelanggan.
Asuransi & Klaim
Cocokkan identitas tertanggung dan pengaju klaim untuk menekan klaim atas nama orang lain.
HR & Screening
Validasi identitas kandidat dan kontraktor sebelum kontrak diteken atau akses sistem diberikan.

Dokumentasi ID Verification API

Satu endpoint, harga transparan, respons JSON yang konsisten.

Authentication

Semua request memerlukan header x-api-co-id dengan API key Anda. Dapatkan API key di dashboard . Produk identitas juga memerlukan akun yang sudah lolos verifikasi eKYC — lihat tabel error di bawah. Referensi teknis lengkap, spesifikasi OpenAPI, dan Postman collection tersedia di docs.api.co.id .

POST{{base-url}}/id-verification/verify

Verifikasi data identitas Indonesia menggunakan NIK, nama, tanggal lahir, dan foto identitas. reference_number , email, serta nomor telepon diisi otomatis di sisi server.

Properti Nilai
Base URL {{base-url}}
Auth x-api-co-id: YOUR_API_KEY
Content-Type multipart/form-data
Pricing Rp 4.000 per verifikasi diproses provider (4.000 points)
Field Tipe Deskripsi
nik string (wajib) Nomor Induk Kependudukan, tepat 16 digit angka.
name string (wajib) Nama lengkap sesuai kartu identitas.
date_of_birth string (wajib) Tanggal lahir dengan format DD-MM-YYYY , contoh 01-10-1990 .
identity file (wajib) Foto kartu identitas. JPG/JPEG/PNG hingga 5 MB.

Diisi otomatis oleh API.CO.ID — jangan dikirim di request:

  • reference_number — dibuat per request dengan awalan IDV .
  • email — diambil dari akun pemilik API key.
  • phone — diambil dari data eKYC akun yang telah disetujui.
Contoh request

 curl --location '{{base-url}}/id-verification/verify' \
  --header 'x-api-co-id: YOUR_API_KEY' \
  --form 'nik="1203122810970002"' \
  --form 'name="User Info"' \
  --form 'date_of_birth="01-10-1990"' \
  --form 'identity=@"/path/to/ktp.jpg"' 
 package main

import (
    "bytes"
    "fmt"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    file, err := os.Open("ktp.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    _ = writer.WriteField("nik", "1203122810970002")
    _ = writer.WriteField("name", "User Info")
    _ = writer.WriteField("date_of_birth", "01-10-1990")

    part, err := writer.CreateFormFile("identity", "ktp.jpg")
    if err != nil {
        panic(err)
    }
    if _, err := io.Copy(part, file); err != nil {
        panic(err)
    }
    _ = writer.Close()

    req, err := http.NewRequest("POST", "{{base-url}}/id-verification/verify", body)
    if err != nil {
        panic(err)
    }
    req.Header.Set("Content-Type", writer.FormDataContentType())
    req.Header.Set("x-api-co-id", "YOUR_API_KEY")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    out, _ := io.ReadAll(resp.Body)
    fmt.Println(string(out))
} 
 <?php

$file = new CURLFile('ktp.jpg', 'image/jpeg', 'ktp.jpg');
$ch = curl_init('{{base-url}}/id-verification/verify');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => [
        'nik' => '1203122810970002',
        'name' => 'User Info',
        'date_of_birth' => '01-10-1990',
        'identity' => $file,
    ],
    CURLOPT_HTTPHEADER => ['x-api-co-id: YOUR_API_KEY'],
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch); 
 // Node.js 18+ (FormData & Blob native)
const fs = require('node:fs');
const buf = fs.readFileSync('ktp.jpg');

const form = new FormData();
form.append('nik', '1203122810970002');
form.append('name', 'User Info');
form.append('date_of_birth', '01-10-1990');
form.append('identity', new Blob([buf]), 'ktp.jpg');

fetch('{{base-url}}/id-verification/verify', {
  method: 'POST',
  headers: { 'x-api-co-id': 'YOUR_API_KEY' },
  body: form,
})
  .then((r) => r.json())
  .then(console.log); 
 <?php

use Illuminate\Support\Facades\Http;

$response = Http::withHeaders([
    'x-api-co-id' => 'YOUR_API_KEY',
])->attach(
    'identity',
    file_get_contents(storage_path('app/ktp.jpg')),
    'ktp.jpg'
)->post('{{base-url}}/id-verification/verify', [
    'nik' => '1203122810970002',
    'name' => 'User Info',
    'date_of_birth' => '01-10-1990',
]);

return $response->json(); 
Contoh response (sukses)
 {
  "is_success": true,
  "message": "Success",
  "data": {
    "reference_number": "REF-20260725-0001",
    "channel_id": "001",
    "result": "verified",
    "message": "digital certificate has been issued"
  }
} 
Contoh response (ditolak)
 {
  "is_success": true,
  "message": "Success",
  "data": {
    "reference_number": "REF-20260725-0002",
    "channel_id": "001",
    "result": "rejected",
    "message": "identity did not match",
    "reject_reason": {
      "code": "ID_MISMATCH",
      "reason": "identity mismatch"
    }
  }
} 
Error HTTP Pesan Perbaikan
API key hilang 401 User not authenticated Tambahkan header x-api-co-id dari dashboard.
eKYC belum disetujui 403 eKYC approval is required before you can use this product. Selesaikan verifikasi akun di dashboard, lalu ulangi request.
NIK tidak valid 422 nik must be 16 numeric characters Kirim tepat 16 digit angka tanpa spasi atau tanda baca.
Format tanggal salah 422 date_of_birth must use DD-MM-YYYY format Gunakan 01-10-1990 , bukan 1990-10-01 .
Tanpa file identitas 400 identity is required Sertakan field file identity di multipart.
Tipe file tidak valid 400 Invalid identity file type. Only JPG, JPEG, and PNG image files are allowed Konversi gambar ke JPG atau PNG.
File terlalu besar 400 identity file size exceeds maximum limit of 5 MB Kompres atau turunkan resolusi gambar.
Points tidak cukup 402 Insufficient points balance. Please top up to continue. Top up points di dashboard lalu coba lagi.
Channel provider salah konfigurasi 500 provider channel misconfigured Hubungi support — konfigurasi channel di sisi kami perlu diperbaiki.
Error dari provider 502 Provider auth / server / response error Coba ulang beberapa saat lagi; points tidak dipotong.
Provider timeout 504 Provider tidak merespons tepat waktu Ulangi request; points tidak dipotong.

Alur Identitas Lengkap: OCR → ID Check → Face Match

Baca kartu, cocokkan datanya ke sumber resmi, lalu pastikan orangnya benar-benar sama. Tiga langkah, satu stack API.

1 · Baca Kartu

KTP OCR API mengisi form otomatis dari foto KTP seharga Rp 150 per scan.

2 · Cocokkan Data

ID Verification memastikan NIK, nama, dan tanggal lahir tersebut memang valid — inti dari dukcapil check.

3 · Cocokkan Wajah

Face Matching API membandingkan foto KTP dengan selfie pengguna.

NPWP Verification API

Pertanyaan seputar verifikasi identitas

Jawaban singkat soal cakupan, akurasi, syarat akun, dan biaya.

Apakah ini dukcapil check?▼

Secara fungsi, ya — inilah yang umumnya orang maksud dengan dukcapil check atau cek NIK: memastikan kombinasi NIK, nama, dan tanggal lahir cocok dengan data kependudukan resmi. API.CO.ID menyediakannya melalui kerja sama dengan Penyelenggara Sertifikasi Elektronik, bukan sebagai layanan resmi milik instansi pemerintah. Hasil yang Anda terima adalah verified atau rejected , bukan salinan data kependudukan.

Apa bedanya dengan KTP OCR API?▼

KTP OCR (Rp 150)membacatulisan di foto KTP dan mengubahnya jadi JSON — berguna untuk mengisi form otomatis, tapi tidak membuktikan data itu benar. ID Verification (Rp 4.000)mencocokkandata tersebut ke sumber resmi. Banyak tim memakai keduanya berurutan: OCR untuk menangkap data, lalu ID Verification untuk membuktikannya.

Apakah data kependudukan lengkap ikut dikembalikan?▼

Tidak. API ini mengembalikan hasil pencocokan ( verified / rejected ), reference_number , channel_id , dan reject_reason bila ditolak. API ini tidak mengembalikan alamat, nama ibu kandung, atau field kependudukan lain.

Apakah akun saya perlu diverifikasi dulu?▼

Ya. Karena produk ini menyentuh data identitas, akun perlu lolos verifikasi eKYC di dashboard sebelum endpoint bisa dipakai. Request dari akun yang belum disetujui akan menerima 403 dengan pesan eKYC approval is required before you can use this product. Nomor telepon pada data eKYC yang disetujui juga dipakai otomatis saat verifikasi.

Berapa biayanya dan apakah ada biaya setup?▼

Rp 4.000 per verifikasi diproses provider (4.000 points). Tidak ada biaya setup, tidak ada langganan bulanan, dan tidak ada minimum komitmen. Lihat detail di halaman harga API .

Kalau hasilnya rejected, apakah tetap kena biaya?▼

Ya. rejected berarti verifikasi berhasil dijalankan dan jawabannya adalah data tidak cocok — provider tetap mengerjakan permintaan Anda, jadi points tetap dipotong dan HTTP-nya tetap 200 . Yang tidak memotong points adalah request yang dihentikan sebelum sampai ke provider (API key salah, saldo kurang, eKYC belum approved) dan kegagalan di sisi provider seperti 502 atau 504 .

Format tanggal lahirnya apa?▼

Gunakan DD-MM-YYYY — misalnya 01-10-1990 untuk 1 Oktober 1990. Format lain seperti 1990-10-01 akan ditolak dengan HTTP 422 .

Bergabung dengan 11.000+ pengguna yang sudah mengandalkan API kami untuk operasional bisnis.

11.000+
Pengguna
100+
Bisnis
12jt+
Panggilan API
99,9%
Uptime SLA

Dipercaya oleh 100+ bisnis di berbagai industri

Dari instansi pemerintah, teknologi, dan pendidikan sampai kesehatan dan telekomunikasi, mencakup 8 sektor industri di seluruh Indonesia.

Mulai Verifikasi Identitas Hari Ini

Isi points, panggil satu endpoint, dan hentikan identitas palsu sebelum masuk ke sistem Anda — Rp 4.000 per verifikasi, tanpa setup fee.

Ke Dashboard

Ditinjau oleh CTO Api.co.idDiperbarui 2 November 2026
Scroll to Top