Mulai cepat
- Masuk ke Portal Mitra dan buka menu API Keys.
- Buat key baru, pilih scope yang dibutuhkan, lalu simpan key di environment variable server Anda.
- Panggil GET /me untuk memastikan key berfungsi.
Base URL: https://sipakasidi.ssyubix.com/api/public/v1
Spesifikasi lengkap tersedia dalam format OpenAPI 3.1 di /api/public/v1/openapi.json — impor ke Postman, Insomnia, Swagger UI, atau generator SDK (mis. openapi-generator).
Autentikasi
Setiap request wajib menyertakan API key sebagai Bearer token: Authorization: Bearer sipk_…. Header alternatif X-API-Key juga diterima. Key hanya ditampilkan sekali saat dibuat; server hanya menyimpan hash-nya.
Perlakukan key seperti password: simpan di sisi server, jangan disematkan di aplikasi frontend/mobile, dan cabut segera dari portal bila bocor. Semua data yang dikembalikan bersifat agregat — tanpa NIK, nama, atau data pribadi warga.
Scope & jangkauan wilayah
Scope membatasi endpoint yang boleh dipanggil sebuah key. Scope maksimum dan jangkauan wilayah (satu kelurahan, satu kecamatan, atau semua) ditetapkan admin untuk akun mitra Anda.
| Scope | Akses |
|---|---|
| wilayah:read | Daftar kelurahan & kecamatan dalam jangkauan key |
| stats:read | Jumlah warga & rekap status pengajuan layanan |
| penduduk:read | Demografi agregat (tanpa NIK/nama), sel kecil disamarkan |
| layanan:read | Katalog jenis layanan & persyaratannya |
Rate limit
Kuota dihitung per akun mitra (semua key dijumlahkan) dalam jendela 60 detik; default 60 request/menit. Setiap response menyertakan X-RateLimit-Limit dan X-RateLimit-Remaining. Saat kuota habis, API membalas 429 dengan header Retry-After — tunggu lalu ulangi dengan exponential backoff.
Error
Semua error memakai format yang sama. Sertakan request_id saat menghubungi admin.
| HTTP | type | code | Arti |
|---|---|---|---|
| 400 | invalid_request_error | invalid_parameter | Parameter query tidak valid |
| 401 | authentication_error | missing_api_key / invalid_api_key | Key tidak ada, salah, dicabut, kedaluwarsa, atau akun ditangguhkan |
| 403 | permission_error | insufficient_scope | Key tidak punya scope untuk endpoint ini |
| 404 | invalid_request_error | kelurahan_not_found | Kelurahan di luar jangkauan key |
| 429 | rate_limit_error | rate_limit_exceeded | Kuota per menit habis |
| 500 | api_error | internal_error | Kesalahan di server kami |
Detail API key yang sedang dipakai: scope efektif, jangkauan wilayah, dan rate limit. Tidak butuh scope khusus — cocok untuk tes koneksi.
Kelurahan aktif dalam jangkauan API key, beserta kecamatannya. Gunakan `id` kelurahan sebagai filter `kelurahan_id` di endpoint lain.
| Parameter | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| kelurahan_id | query | string (uuid) | Persempit hasil ke satu kelurahan (harus di dalam jangkauan API key). Kosongkan untuk semua kelurahan dalam jangkauan. |
Jumlah warga terdaftar dan rekap pengajuan layanan per kelurahan, termasuk jumlah selesai & rata-rata durasi penyelesaian bulan berjalan.
| Parameter | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| kelurahan_id | query | string (uuid) | Persempit hasil ke satu kelurahan (harus di dalam jangkauan API key). Kosongkan untuk semua kelurahan dalam jangkauan. |
Distribusi warga terdaftar per jenis kelamin, kelompok umur, agama, pendidikan, pekerjaan, dan status perkawinan. Kategori dengan jumlah di bawah `ambang_penyamaran` digabung menjadi `LAINNYA_DISAMARKAN` untuk mencegah identifikasi individu.
| Parameter | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| kelurahan_id | query | string (uuid) | Persempit hasil ke satu kelurahan (harus di dalam jangkauan API key). Kosongkan untuk semua kelurahan dalam jangkauan. |
Jenis layanan aktif beserta persyaratannya di setiap kelurahan dalam jangkauan.
| Parameter | Lokasi | Tipe | Keterangan |
|---|---|---|---|
| kelurahan_id | query | string (uuid) | Persempit hasil ke satu kelurahan (harus di dalam jangkauan API key). Kosongkan untuk semua kelurahan dalam jangkauan. |