← Blog
Artikel

API Cek NIK: Validasi Format NIK untuk Onboarding HR dan Fintech

Cara pakai API cek NIK untuk validasi format 16 digit pada onboarding HR dan fintech, lengkap dengan batasan etika: validasi struktural bukan verifikasi Dukcapil.

Kata kunci "api cek nik" biasanya dimasukkan orang dengan dua harapan berbeda: (1) cek apakah format NIK yang diketik user benar, atau (2) cek apakah NIK itu benar-benar milik orang yang mengaku memilikinya. Endpoint ini hanya menjawab nomor satu, dan penting memahami kenapa nomor dua tidak (dan tidak seharusnya) dilakukan lewat API semacam ini.

Apa yang Dilakukan Endpoint Ini

API Validasi dari API Indonesia memeriksa struktur 16 digit NIK dan mengekstrak informasi yang tersimpan di dalam formatnya:

Digit Isi
1 sampai 2 Kode provinsi (11 sampai 97)
3 sampai 4 Kode kabupaten/kota
5 sampai 6 Kode kecamatan
7 sampai 12 Tanggal lahir (tanggal perempuan di-encode +40)
13 sampai 16 Nomor urut (tidak boleh 0000)

Endpoint POST /api/v1/validasi/nik mengembalikan status valid atau tidak, plus hasil parse-nya kalau valid:

curl -X POST "https://use.apiindonesia.id/api/v1/validasi/nik" \
  -H "x-api-key: aip_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"nik":"3201010101900001"}'
{
  "data": { "valid": true, "province_code": "32", "birth_date": "1990-01-01" },
  "meta": { "disclaimer": "Validasi struktural saja, bukan verifikasi identitas." }
}

Contoh NIK tidak valid (kode provinsi di luar rentang):

{
  "error": { "code": "VALIDATION_ERROR", "message": "Kode provinsi 99 tidak valid" }
}

Validasi yang dilakukan mencakup panjang 16 digit, rentang kode provinsi, kevalidan tanggal lahir (termasuk encoding +40 untuk perempuan), dan nomor urut bukan nol. Seluruh proses murni komputasi lokal, tanpa lookup ke database Dukcapil.

Apa yang TIDAK Dilakukan Endpoint Ini

Ini bagian yang sering disalahpahami:

  • Tidak memverifikasi bahwa NIK terdaftar di Dukcapil. NIK yang lolos validasi format belum tentu pernah diterbitkan.
  • Tidak mencocokkan NIK dengan nama. Tidak ada cara yang sah dan murah untuk melakukan itu lewat API publik; verifikasi identitas resmi di Indonesia berjalan lewat layanan Dukcapil yang hanya bisa diakses institusi tertentu dengan perjanjian.
  • Tidak bisa dipakai untuk menilai keaslian dokumen KTP. Foto KTP bisa dipalsukan; format NIK yang valid tidak menjamin kartu fisiknya asli.

Kalau produk Anda butuh kepastian identitas (misalnya pinjaman online yang wajib KYC penuh), jalur yang benar adalah kemitraan resmi dengan Dukcapil atau verifikasi fisik/biometrik, bukan API validasi format.

Etika dan Batasan Penggunaan

Beberapa prinsip yang kami anjurkan:

  1. Validasi format untuk mengurangi typo, bukan untuk menyaring orang. Tolak input yang gagal validasi dengan pesan yang jelas ("format NIK tidak valid, periksa 16 digit"), jangan tuduh user memalsukan identitas.
  2. Jangan menyimpan NIK lebih lama dari kebutuhan. NIK adalah data pribadi spesifik menurut UU PDP; simpan hanya jika memang diwajibkan regulasi, dan amankan (enkripsi at rest).
  3. Transparan di privacy policy. Sebutkan bahwa sistem Anda memvalidasi struktur NIK dan tidak mengirim data ke pihak ketiga untuk verifikasi.
  4. Jangan pakai validasi format sebagai dasar keputusan kredit atau klaim. Format valid bukan bukti identitas.

Use Case yang Tepat

  • Onboarding HR: karyawan baru mengisi form data kepegawaian, sistem menangkap typo NIK sebelum masuk database payroll.
  • Fintech pre-check: form pendaftaran menolak format salah di sisi klien sebelum biaya verifikasi identitas yang mahal dijalankan.
  • Form builder dan aplikasi pemerintahan daerah: kurangi data kependudukan yang kacau di database.
  • E-commerce BNPL: cek format sebelum lanjut ke langkah verifikasi berbayar.

Contoh Integrasi: Middleware Validasi Form di Node.js

const BASE = "https://use.apiindonesia.id";

export async function cekNik(nik) {
  const res = await fetch(`${BASE}/api/v1/validasi/nik`, {
    method: "POST",
    headers: {
      "x-api-key": process.env.API_INDONESIA_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ nik }),
  });
  const body = await res.json();
  return {
    valid: res.ok && body.data?.valid === true,
    message: body.error?.message ?? null,
  };
}

// Di handler onboarding karyawan:
app.post("/api/employees", async (req, res) => {
  const check = await cekNik(req.body.nik);
  if (!check.valid) {
    return res.status(400).json({
      field: "nik",
      hint: "Format NIK tidak valid. Pastikan 16 digit dan tanggal lahir di dalamnya benar.",
    });
  }
  // lanjut simpan...
});

Versi Python

import os
import requests

def cek_nik(nik: str) -> dict:
    r = requests.post(
        "https://use.apiindonesia.id/api/v1/validasi/nik",
        headers={"x-api-key": os.environ["API_INDONESIA_KEY"]},
        json={"nik": nik},
    )
    if r.ok:
        return r.json()["data"]
    return {"valid": False, "error": r.json()["error"]["message"]}

print(cek_nik("3201010101900001"))

Tips tambahan untuk QA: pakai generator NIK dummy untuk menguji integrasi ini tanpa data pribadi asli.

Mulai Sekarang

Pelajari detail parameter di halaman API Validasi Format dan dapatkan API key gratis di dashboard.apiindonesia.id/register.

Mulai Sekarang

Mulai Integrasi
Hari Ini

Daftar gratis, ambil API key, dan langsung call endpoint pertama Anda — tanpa kartu kredit, tanpa proses approval yang ribet.

Visualisasi gelombang titik