Dokumentasi API · v1

Referensi API

Semua yang Anda butuhkan untuk mengintegrasikan data publik Indonesia: autentikasi, format respons, dan referensi lengkap setiap endpoint.

Base URLhttps://use.apiindonesia.id
OpenAPI JSON
Tersedia juga di RapidAPI
Daftar Isi
Memulai

Pengenalan

API Indonesia adalah REST API untuk data publik Indonesia: wilayah administratif, hari libur nasional, jadwal sholat, sekolah, kampus, rumah sakit, gempa, prakiraan cuaca, kode pos, kurs, Al-Quran, peringatan dini, plat nomor, dan UMP. Semua respons dalam format JSON dengan encoding UTF-8.

Semua endpoint data berada di bawah prefix /api/v1dan memerlukan API key. Paket gratis mendapat 1.000 hits per bulan, cukup untuk mulai membangun.

Quickstart

  1. 1

    Daftar akun gratis— API key pertama Anda otomatis dibuat saat registrasi.

  2. 2

    Simpan API key Anda (format aip_live_...) — key hanya ditampilkan sekali.

  3. 3

    Kirim request pertama Anda dengan header x-api-key:

Terminal
curl "https://use.apiindonesia.id/api/v1/wilayah/provinsi" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Untuk memantau ketersediaan layanan, endpointGET /healthbisa diakses tanpa autentikasi.

RapidAPI

Jika tim Anda sudah memakai RapidAPI, API Indonesia juga tersedia di marketplace dengan API key dan billing RapidAPI.

Buka listing RapidAPI
OpenAPI 3.1

Kontrak API

Spesifikasi mencakup endpoint publik, endpoint data, autentikasi akun, parameter, request body, dan contoh respons. Gunakan URL ini pada Postman, Insomnia, atau generator client yang mendukung OpenAPI 3.1.

https://docs.apiindonesia.id/openapi.jsonBuka spesifikasi
Memulai

Autentikasi

API Indonesia memakai dua skema autentikasi tergantung jenis endpoint yang diakses:

x-api-key

Endpoint data

Semua endpoint di bawah /api/v1/* memerlukan headerx-api-key berisi API key Anda.

x-api-key: aip_live_xxxxxxxx...
Bearer JWT

Endpoint akun

Endpoint /user/* dan /billing/*memerlukan token JWT dari login di header Authorization.

Authorization: Bearer eyJhbGci...

Penting
Jangan pernah menaruh API key di kode frontend yang bisa dilihat publik. Panggil API dari server Anda, atau batasi key per aplikasi agar mudah dicabut jika bocor.

Memulai

Format Respons

Semua respons memakai amplop (envelope) yang konsisten. Respons sukses selalu punya fielddata, respons gagal selalu punya fielderror.

Sukses · 200
{
  "data": [ ... ],
  "meta": {
    "total": 514,
    "page": 1,
    "per_page": 20,
    "total_pages": 26
  }
}
Gagal · 4xx / 5xx
{
  "error": {
    "code": "NOT_FOUND",
    "message": "School not found"
  }
}
Memulai

Paginasi

Endpoint list memakai paginasi berbasis halaman lewat query parameterpage danper_page. Informasi paginasi dikembalikan di objek meta.

ParameterDefaultKeterangan
page1Nomor halaman, dimulai dari 1.
per_page20–50Jumlah data per halaman. Maksimum 100 untuk Wilayah, 200 untuk Sekolah, Kampus, dan Rumah Sakit.
Memulai

Rate Limit & Kuota

Dua batasan berlaku di endpoint /api/v1/*: rate limit per detik dan kuota bulanan sesuai paket Anda.

Rate Limit

20 req/detik

Berlaku per API key. Jika terlampaui, API merespons429 RATE_LIMIT_EXCEEDED — cukup tunggu sesaat dan coba lagi.

Kuota Bulanan

1.000 hits/bulan (Gratis)

Jika habis, API merespons 402 QUOTA_EXCEEDED. Paket Promemberi 50.000 hits/bulan, dan Business memberi 250.000 hits/bulan. Kuota di-reset setiap awal bulan (UTC).

Memulai

Kode Error

API memakai kode status HTTP standar. Field error.codememberi detail yang bisa diandalkan secara programatik.

StatusKodeKeterangan
400VALIDATION_ERRORParameter wajib tidak dikirim atau formatnya salah.
400INVALID_QUERYKata kunci pencarian terlalu pendek.
401MISSING_API_KEYHeader x-api-key tidak dikirim.
401INVALID_API_KEYAPI key tidak ditemukan atau sudah dicabut.
401REVOKED_API_KEYAPI key berstatus dicabut (revoked).
401UNAUTHORIZEDToken JWT tidak dikirim, tidak valid, atau kedaluwarsa.
401INVALID_CREDENTIALSEmail atau kata sandi salah saat login.
402QUOTA_EXCEEDEDKuota plan habis. Upgrade ke Pro atau Business.
403ACCOUNT_SUSPENDEDAkun ditangguhkan dan tidak bisa dipakai.
404NOT_FOUNDData yang diminta tidak ditemukan.
409EMAIL_EXISTSEmail sudah terdaftar saat registrasi.
429RATE_LIMIT_EXCEEDEDMelebihi batas 20 request/detik. Coba lagi sesaat kemudian.
500INTERNAL_ERRORTerjadi kesalahan tak terduga di server.
Memulai

MCP Server

Model Context Protocol (MCP) adalah kerangka standar yang memungkinkan AI agent berinteraksi dengan data API Indonesia menggunakan bahasa natural. Dengan MCP, Anda dapat mengotomatiskan workflow, menghubungkan AI tools pihak ketiga, dan mengaktifkan fitur agentic AI — semuanya dengan API key yang sudah Anda miliki.

🧪

Public Beta: MCP server saat ini dalam tahap public beta. Tersedia di semua paket, termasuk Free tier.

Server URL

URL server MCP kami adalah

https://mcp.apiindonesia.id/mcp

Yang bisa Anda lakukan

Dengan MCP server API Indonesia, Anda dapat:

  • Query data wilayah administratif: provinsi, kabupaten, kecamatan, kelurahan, dan kode pos.
  • Pantau gempa terkini dan prakiraan cuaca dari BMKG secara real-time.
  • Cari sekolah, kampus, dan rumah sakit di seluruh Indonesia.
  • Cek jadwal sholat, hari libur nasional, kurs valuta, kurs BI, UMP, dan kalender hijriah.
  • Validasi format NIK/NPWP, parse QRIS, cari sertifikat halal (BPJPH) dan produk BPOM.
  • Akses Kamus Besar Bahasa Indonesia (KBBI), Al-Quran, dan Alkitab — 77 tools total.

MCP Client yang didukung

MCP server kompatibel dengan semua klien MCP utama yang mendukung transport HTTP+SSE:

Claude DesktopCursorVS CodeWindsurfChatGPTDevinPostmanZed

Instruksi setup

Claude Desktop

Tambahkan ke ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "api-indonesia": {
      "url": "https://mcp.apiindonesia.id/mcp",
      "headers": {
        "Authorization": "Bearer aip_live_xxx"
      }
    }
  }
}

Cursor

Buka Settings → MCP → Add new MCP server, isi:

URLhttps://mcp.apiindonesia.id/mcp
HeaderAuthorization: Bearer aip_live_xxx

Rate limit

Penggunaan MCP tunduk pada rate limit yang sama dengan REST API, bergantung pada paket Anda:

PaketHits / bulanRequest / detik
Free1.00010
Pro50.00020
Business250.00060

FAQ

Apakah saya perlu API key terpisah untuk MCP?

Tidak. MCP menggunakan API key yang sama dengan REST API (format aip_live_xxx). Buat key dari dashboard.

Apakah MCP mendukung operasi tulis/hapus?

Sebagian besar tools bersifat read-only (GET). Validasi dan utilitas memakai POST untuk validasi format, format Rupiah, generator dummy, dan parser QRIS — tanpa operasi create/update/delete data publik.

Apakah bisa dipakai untuk local development?

Ya. Selain remote HTTP, tersedia transport stdio untuk dijalankan lokal. Lihat README di repository.

Referensi APIx-api-key

Wilayah

Data wilayah administratif Indonesia dari tingkat provinsi hingga kelurahan/desa, lengkap dengan kode wilayah, kode pos, dan koordinat. Semua endpoint list mendukung paginasi.

← Lihat landing page
GET/api/v1/wilayah/provinsi

List provinsi

Mengembalikan daftar seluruh provinsi di Indonesia.

Query Parameter

pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/provinsi?page=1&per_page=20" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "32",
      "code": "32",
      "name": "JAWA BARAT",
      "alt_name": "Jawa Barat",
      "lat": -6.914744,
      "lng": 107.609811,
      "is_active": 1
    }
  ],
  "meta": {
    "total": 38,
    "page": 1,
    "per_page": 20,
    "total_pages": 2
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/provinsi/:id

Detail provinsi

Mengembalikan satu provinsi berdasarkan kode wilayah.

Path Parameter

idstringWajib
Kode provinsi, contoh: 32.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/provinsi/32" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "32",
    "code": "32",
    "name": "JAWA BARAT",
    "alt_name": "Jawa Barat",
    "lat": -6.914744,
    "lng": 107.609811,
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/kabupaten

List kabupaten/kota

Mengembalikan daftar kabupaten dan kota, bisa difilter berdasarkan provinsi.

Query Parameter

provinsi_idstring
Filter berdasarkan kode provinsi.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kabupaten?provinsi_id=32" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "3273",
      "province_id": "32",
      "code": "32.73",
      "name": "KOTA BANDUNG",
      "alt_name": "Kota Bandung",
      "is_city": 1,
      "lat": -6.9175,
      "lng": 107.6191,
      "is_active": 1
    }
  ],
  "meta": {
    "total": 27,
    "page": 1,
    "per_page": 20,
    "total_pages": 2
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/kabupaten/:id

Detail kabupaten/kota

Mengembalikan satu kabupaten/kota berdasarkan kode wilayah.

Path Parameter

idstringWajib
Kode kabupaten/kota, contoh: 3273.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kabupaten/3273" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "3273",
    "province_id": "32",
    "code": "32.73",
    "name": "KOTA BANDUNG",
    "alt_name": "Kota Bandung",
    "is_city": 1,
    "lat": -6.9175,
    "lng": 107.6191,
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/kecamatan

List kecamatan

Mengembalikan daftar kecamatan, bisa difilter berdasarkan kabupaten/kota.

Query Parameter

kabupaten_idstring
Filter berdasarkan kode kabupaten/kota.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kecamatan?kabupaten_id=3273" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "3273010",
      "regency_id": "3273",
      "code": "32.73.01",
      "name": "SUKASARI",
      "alt_name": "Sukasari",
      "lat": -6.8636,
      "lng": 107.5843,
      "is_active": 1
    }
  ],
  "meta": {
    "total": 30,
    "page": 1,
    "per_page": 20,
    "total_pages": 2
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/kecamatan/:id

Detail kecamatan

Mengembalikan satu kecamatan berdasarkan kode wilayah.

Path Parameter

idstringWajib
Kode kecamatan, contoh: 3273010.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kecamatan/3273010" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "3273010",
    "regency_id": "3273",
    "code": "32.73.01",
    "name": "SUKASARI",
    "alt_name": "Sukasari",
    "lat": -6.8636,
    "lng": 107.5843,
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/kelurahan

List kelurahan/desa

Mengembalikan daftar kelurahan/desa lengkap dengan kode pos, bisa difilter berdasarkan kecamatan.

Query Parameter

kecamatan_idstring
Filter berdasarkan kode kecamatan.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kelurahan?kecamatan_id=3273010" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "3273010001",
      "district_id": "3273010",
      "code": "32.73.01.1001",
      "name": "ISOLA",
      "alt_name": "Isola",
      "postal_code": "40154",
      "is_courier_support": 1,
      "lat": -6.8593,
      "lng": 107.5921,
      "is_active": 1
    }
  ],
  "meta": {
    "total": 4,
    "page": 1,
    "per_page": 20,
    "total_pages": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah/kelurahan/:id

Detail kelurahan/desa

Mengembalikan satu kelurahan/desa berdasarkan kode wilayah.

Path Parameter

idstringWajib
Kode kelurahan/desa, contoh: 3273010001.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kelurahan/3273010001" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "3273010001",
    "district_id": "3273010",
    "code": "32.73.01.1001",
    "name": "ISOLA",
    "alt_name": "Isola",
    "postal_code": "40154",
    "is_courier_support": 1,
    "lat": -6.8593,
    "lng": 107.5921,
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Hari Libur

Kalender hari libur nasional, hari besar keagamaan, dan cuti bersama berdasarkan SKB 3 Menteri.

← Lihat landing page
GET/api/v1/libur

List hari libur

Mengembalikan daftar hari libur, diurutkan berdasarkan tanggal. Bisa difilter per tahun dan bulan.

Query Parameter

tahuninteger
Filter berdasarkan tahun, contoh: 2026.
bulanstring
Filter berdasarkan bulan (dua digit), contoh: 06.
Request
curl "https://use.apiindonesia.id/api/v1/libur?tahun=2026" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "hol_2026_001",
      "date": "2026-01-01",
      "name": "Tahun Baru 2026 Masehi",
      "type": "nasional",
      "is_joint_leave": 0,
      "description": null,
      "source": "SKB 3 Menteri",
      "year": 2026,
      "is_active": 1
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/libur/upcoming

Hari libur terdekat

Mengembalikan maksimal 10 hari libur berikutnya, dihitung dari hari ini.

Request
curl "https://use.apiindonesia.id/api/v1/libur/upcoming" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "hol_2026_014",
      "date": "2026-08-17",
      "name": "Hari Kemerdekaan RI",
      "type": "nasional",
      "is_joint_leave": 0,
      "source": "SKB 3 Menteri",
      "year": 2026,
      "is_active": 1
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/libur/:id

Detail hari libur

Mengembalikan satu hari libur berdasarkan ID.

Path Parameter

idstringWajib
ID hari libur.
Request
curl "https://use.apiindonesia.id/api/v1/libur/hol_2026_014" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "hol_2026_014",
    "date": "2026-08-17",
    "name": "Hari Kemerdekaan RI",
    "type": "nasional",
    "is_joint_leave": 0,
    "description": null,
    "source": "SKB 3 Menteri",
    "year": 2026,
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Jadwal Sholat

Jadwal sholat harian dan bulanan untuk 514 kabupaten/kota di Indonesia. Data bersumber dari Kemenag.

← Lihat landing page
GET/api/v1/sholat/list-kota

List kota tersedia

Mengembalikan daftar kabupaten/kota yang memiliki data jadwal sholat. Gunakan regency_id dari respons ini untuk endpoint jadwal.

Request
curl "https://use.apiindonesia.id/api/v1/sholat/list-kota" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "regency_id": "3273",
      "regency_name": "KOTA BANDUNG",
      "province_id": "32",
      "province_name": "JAWA BARAT"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/sholat

Jadwal sholat harian

Mengembalikan jadwal sholat satu hari untuk kabupaten/kota tertentu.

Query Parameter

kabupaten_idstringWajib
Kode kabupaten/kota, contoh: 3273.
tanggalstring
Tanggal format YYYY-MM-DD. Default hari ini.
Request
curl "https://use.apiindonesia.id/api/v1/sholat?kabupaten_id=3273&tanggal=2026-07-03" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "pt_3273_2026-07-03",
    "regency_id": "3273",
    "date": "2026-07-03",
    "imsyak": "04:29",
    "shubuh": "04:39",
    "terbit": "05:58",
    "dhuha": "06:26",
    "dzuhur": "11:56",
    "ashr": "15:17",
    "maghrib": "17:47",
    "isya": "19:01",
    "source": "Kemenag"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/sholat/monthly

Jadwal sholat bulanan

Mengembalikan jadwal sholat satu bulan penuh untuk kabupaten/kota tertentu, diurutkan berdasarkan tanggal.

Query Parameter

kabupaten_idstringWajib
Kode kabupaten/kota, contoh: 3273.
tahunintegerWajib
Tahun, contoh: 2026.
bulanintegerWajib
Bulan (1–12), contoh: 7.
Request
curl "https://use.apiindonesia.id/api/v1/sholat/monthly?kabupaten_id=3273&tahun=2026&bulan=7" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "pt_3273_2026-07-01",
      "regency_id": "3273",
      "date": "2026-07-01",
      "imsyak": "04:28",
      "shubuh": "04:38",
      "terbit": "05:57",
      "dhuha": "06:25",
      "dzuhur": "11:55",
      "ashr": "15:17",
      "maghrib": "17:46",
      "isya": "19:00",
      "source": "Kemenag"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Sekolah

Direktori 200.000+ sekolah se-Indonesia (SD, SMP, SMA, SMK, SLB) dengan NPSN, alamat, akreditasi, dan koordinat.

← Lihat landing page
GET/api/v1/sekolah

List sekolah

Mengembalikan daftar sekolah dengan paginasi dan filter wilayah, jenjang, serta status.

Query Parameter

provinsi_idstring
Filter berdasarkan kode provinsi.
kabupaten_idstring
Filter berdasarkan kode kabupaten/kota.
jenisstring
Jenjang sekolah: SD, SMP, SMA, SMK, atau SLB.
statusstring
Status sekolah: Negeri atau Swasta.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 50, maksimum 200.
Request
curl "https://use.apiindonesia.id/api/v1/sekolah?kabupaten_id=3273&jenis=SMA&status=Negeri" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "npsn": "20219557",
      "name": "SMA NEGERI 3 BANDUNG",
      "jenis": "SMA",
      "status": "Negeri",
      "province_id": "32",
      "regency_id": "3273",
      "district_id": "3273190",
      "village_id": "3273190004",
      "address": "Jl. Belitung No. 8",
      "postal_code": "40113",
      "lat": -6.9106,
      "lng": 107.6183,
      "phone": "0224235154",
      "email": null,
      "website": null,
      "accreditation": "A",
      "is_active": 1
    }
  ],
  "meta": {
    "total": 27,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/sekolah/:npsn

Detail sekolah

Mengembalikan satu sekolah berdasarkan NPSN, dilengkapi nama provinsi dan kabupaten/kota.

Path Parameter

npsnstringWajib
Nomor Pokok Sekolah Nasional.
Request
curl "https://use.apiindonesia.id/api/v1/sekolah/20219557" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "npsn": "20219557",
    "name": "SMA NEGERI 3 BANDUNG",
    "jenis": "SMA",
    "status": "Negeri",
    "province_id": "32",
    "regency_id": "3273",
    "address": "Jl. Belitung No. 8",
    "postal_code": "40113",
    "accreditation": "A",
    "is_active": 1,
    "province_name": "JAWA BARAT",
    "regency_name": "KOTA BANDUNG"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kampus

Direktori 4.300+ perguruan tinggi negeri dan swasta: universitas, institut, politeknik, akademi, dan sekolah tinggi.

← Lihat landing page
GET/api/v1/kampus

List kampus

Mengembalikan daftar perguruan tinggi dengan paginasi dan filter, dilengkapi nama provinsi dan kabupaten/kota.

Query Parameter

provinsi_idstring
Filter berdasarkan kode provinsi.
kabupaten_idstring
Filter berdasarkan kode kabupaten/kota.
jenisstring
Jenis: universitas, institut, politeknik, akademi, atau sekolah_tinggi.
kelompokstring
Kelompok: PTN atau PTS.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 50, maksimum 200.
Request
curl "https://use.apiindonesia.id/api/v1/kampus?provinsi_id=32&kelompok=PTN" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "pt_001",
      "name": "INSTITUT TEKNOLOGI BANDUNG",
      "short_name": "ITB",
      "jenis": "institut",
      "kelompok": "PTN",
      "province_id": "32",
      "regency_id": "3273",
      "address": "Jl. Ganesha No. 10",
      "postal_code": "40132",
      "website": "https://itb.ac.id",
      "accreditation": "Unggul",
      "is_active": 1,
      "province_name": "JAWA BARAT",
      "regency_name": "KOTA BANDUNG"
    }
  ],
  "meta": {
    "total": 12,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/kampus/:id

Detail kampus

Mengembalikan satu perguruan tinggi berdasarkan ID, dilengkapi nama provinsi dan kabupaten/kota.

Path Parameter

idstringWajib
ID perguruan tinggi.
Request
curl "https://use.apiindonesia.id/api/v1/kampus/pt_001" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "pt_001",
    "name": "INSTITUT TEKNOLOGI BANDUNG",
    "short_name": "ITB",
    "jenis": "institut",
    "kelompok": "PTN",
    "province_id": "32",
    "regency_id": "3273",
    "address": "Jl. Ganesha No. 10",
    "postal_code": "40132",
    "website": "https://itb.ac.id",
    "accreditation": "Unggul",
    "is_active": 1,
    "province_name": "JAWA BARAT",
    "regency_name": "KOTA BANDUNG"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Rumah Sakit

Direktori 3.000+ rumah sakit se-Indonesia dengan jenis, kelas, kepemilikan, kapasitas tempat tidur, dan kontak.

← Lihat landing page
GET/api/v1/rumah-sakit

List rumah sakit

Mengembalikan daftar rumah sakit dengan paginasi dan filter, dilengkapi nama provinsi dan kabupaten/kota.

Query Parameter

provinsi_idstring
Filter berdasarkan kode provinsi.
kabupaten_idstring
Filter berdasarkan kode kabupaten/kota.
jenisstring
Jenis RS: RSUM (umum), RSWS (wilayah/swasta), RSP (pendidikan), RSJ (jiwa), RSK (khusus).
kelasstring
Kelas RS: A, B, C, D, atau Pratama.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 50, maksimum 200.
Request
curl "https://use.apiindonesia.id/api/v1/rumah-sakit?kabupaten_id=3273&kelas=A" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "rs_3273_001",
      "name": "RSUP Dr. Hasan Sadikin",
      "jenis": "RSUM",
      "kelas": "A",
      "ownership": "Kemenkes",
      "is_blu": 1,
      "province_id": "32",
      "regency_id": "3273",
      "address": "Jl. Pasteur No. 38",
      "postal_code": "40161",
      "phone": "0222034953",
      "beds_total": 944,
      "icu_beds": 40,
      "is_active": 1,
      "province_name": "JAWA BARAT",
      "regency_name": "KOTA BANDUNG"
    }
  ],
  "meta": {
    "total": 3,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/rumah-sakit/:id

Detail rumah sakit

Mengembalikan satu rumah sakit berdasarkan ID, dilengkapi nama provinsi dan kabupaten/kota.

Path Parameter

idstringWajib
ID rumah sakit.
Request
curl "https://use.apiindonesia.id/api/v1/rumah-sakit/rs_3273_001" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "rs_3273_001",
    "name": "RSUP Dr. Hasan Sadikin",
    "jenis": "RSUM",
    "kelas": "A",
    "ownership": "Kemenkes",
    "is_blu": 1,
    "province_id": "32",
    "regency_id": "3273",
    "address": "Jl. Pasteur No. 38",
    "postal_code": "40161",
    "phone": "0222034953",
    "beds_total": 944,
    "icu_beds": 40,
    "doctors_gp": 78,
    "doctors_spec": 312,
    "is_active": 1,
    "province_name": "JAWA BARAT",
    "regency_name": "KOTA BANDUNG"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Gempa

Data gempa bumi realtime bersumber dari BMKG, diperbarui otomatis setiap jam lewat cron.

← Lihat landing page
GET/api/v1/gempa/terkini

Gempa terkini

Mengembalikan 15 gempa terbaru, diurutkan dari yang paling baru.

Request
curl "https://use.apiindonesia.id/api/v1/gempa/terkini" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "eq_20260702_0413",
      "datetime": "2026-07-02 04:13:21",
      "magnitude": 5.4,
      "depth_km": 10,
      "lat": -8.12,
      "lng": 110.34,
      "region": "Pacitan, Jawa Timur",
      "potential": "Tidak berpotensi tsunami",
      "is_felt": 1,
      "felt_areas": "III Yogyakarta, II-III Pacitan",
      "source": "BMKG"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/gempa/dirasakan

Gempa dirasakan

Mengembalikan 15 gempa terbaru yang dirasakan masyarakat, lengkap dengan skala MMI per wilayah.

Request
curl "https://use.apiindonesia.id/api/v1/gempa/dirasakan" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "eq_20260702_0413",
      "datetime": "2026-07-02 04:13:21",
      "magnitude": 5.4,
      "depth_km": 10,
      "lat": -8.12,
      "lng": 110.34,
      "region": "Pacitan, Jawa Timur",
      "potential": "Tidak berpotensi tsunami",
      "is_felt": 1,
      "felt_areas": "III Yogyakarta, II-III Pacitan",
      "source": "BMKG"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/gempa/history

Riwayat gempa

Mengembalikan gempa dalam rentang tanggal tertentu, maksimal 100 data, diurutkan dari yang paling baru.

Query Parameter

startstringWajib
Tanggal awal, format YYYY-MM-DD.
endstringWajib
Tanggal akhir, format YYYY-MM-DD.
Request
curl "https://use.apiindonesia.id/api/v1/gempa/history?start=2026-06-01&end=2026-06-30" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "eq_20260628_2205",
      "datetime": "2026-06-28 22:05:44",
      "magnitude": 4.8,
      "depth_km": 22,
      "lat": -3.51,
      "lng": 128.09,
      "region": "Ambon, Maluku",
      "potential": "Tidak berpotensi tsunami",
      "is_felt": 0,
      "felt_areas": null,
      "source": "BMKG"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Prakiraan Cuaca

Prakiraan cuaca 3 hari dari BMKG untuk seluruh desa/kelurahan di Indonesia. Data diambil on-demand lalu di-cache selama 6 jam. Gunakan kode desa (adm4) dari endpoint Wilayah.

← Lihat landing page
GET/api/v1/cuaca

Prakiraan cuaca desa

Mengembalikan prakiraan cuaca 3 hari untuk satu desa/kelurahan. Pilih antara adm4 (kode desa) atau kabupaten_id untuk mengambil data perwakilan kabupaten.

Query Parameter

adm4string
Kode desa dari endpoint Wilayah, contoh: 32.73.01.1001.
kabupaten_idstring
Kode kabupaten/kota (alternatif adm4), contoh: 3273.
Request
curl "https://use.apiindonesia.id/api/v1/cuaca?adm4=32.73.01.1001" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "w_327301100120260706010000",
      "adm4": "32.73.01.1001",
      "provinsi": "Jawa Barat",
      "kotkab": "Kota Bandung",
      "kecamatan": "Sukasari",
      "desa": "Isola",
      "datetime": "2026-07-06T01:00:00",
      "local_datetime": "2026-07-06 08:00:00",
      "weather": "Cerah",
      "weather_code": "0",
      "weather_desc": "Cerah Berawan",
      "weather_desc_en": "Partly Cloudy",
      "temperature_c": 29,
      "humidity_percent": 62,
      "cloud_cover_percent": 2,
      "precipitation_mm": 0,
      "wind_direction": "E",
      "wind_direction_to": "W",
      "wind_direction_degrees": 125,
      "wind_speed": 3.5,
      "visibility_m": 15060,
      "visibility_text": "> 10 km",
      "analysis_date": "2026-07-05T12:00:00",
      "source": "BMKG"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Peringatan Dini Cuaca

Peringatan dini cuaca ekstrem dari BMKG dalam RSS/CAP. Data diperbarui otomatis setiap jam dan akan refresh on-demand saat cache kosong.

← Lihat landing page
GET/api/v1/peringatan-dini

List peringatan dini

Mengembalikan semua peringatan dini cuaca yang masih aktif. Bisa difilter berdasarkan nama provinsi.

Query Parameter

provinsistring
Filter berdasarkan nama provinsi, contoh: Jawa Barat.
Request
curl "https://use.apiindonesia.id/api/v1/peringatan-dini?provinsi=Jawa+Barat" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "warn_2-49-0-1-360-0-2026-07-05-21-18-003",
      "alert_id": "2.49.0.1.360.0.2026.07.05.21.18.003",
      "event": "Hujan Lebat disertai Petir",
      "urgency": "Expected",
      "severity": "Moderate",
      "certainty": "Likely",
      "area": "Batanghari, Bumi Waras, Enggal",
      "province": "Lampung",
      "effective": "2026-07-05T21:00:00.000Z",
      "expires": "06 July 2026, 07:30 WIB",
      "headline": "Hujan Lebat disertai Petir di Lampung",
      "description": "Hujan lebat disertai petir akan terjadi...",
      "instruction": "Ikuti informasi resmi BMKG dan arahan petugas setempat.",
      "source": "BMKG-CAP",
      "is_active": 1
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kode Pos

Direktori 83.000+ kode pos se-Indonesia lengkap dengan hierarki wilayah dari provinsi hingga desa. Data statis bersumber dari dataset resmi.

← Lihat landing page
GET/api/v1/kodepos

List kode pos

Mengembalikan daftar kode pos dengan paginasi. Bisa difilter per provinsi, kabupaten/kota, atau kecamatan.

Query Parameter

provinsi_idstring
Filter berdasarkan kode provinsi, contoh: 32.
kabupaten_idstring
Filter berdasarkan kode kabupaten/kota, contoh: 3273.
kecamatan_idstring
Filter berdasarkan kode kecamatan, contoh: 3273010.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/kodepos?kabupaten_id=3273" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "kp_3273010001",
      "village_code": "32.73.01.1001",
      "village_name": "ISOLA",
      "district_code": "32.73.01",
      "district_name": "SUKASARI",
      "regency_code": "32.73",
      "regency_name": "KOTA BANDUNG",
      "province_code": "32",
      "province_name": "JAWA BARAT",
      "postal_code": "40154",
      "is_active": 1
    }
  ],
  "meta": {
    "total": 151,
    "page": 1,
    "per_page": 20,
    "total_pages": 8
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/kodepos/:id

Detail kode pos

Mengembalikan satu entri kode pos berdasarkan ID.

Path Parameter

idstringWajib
ID kode pos, contoh: kp_3273010001.
Request
curl "https://use.apiindonesia.id/api/v1/kodepos/kp_3273010001" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "kp_3273010001",
    "village_code": "32.73.01.1001",
    "village_name": "ISOLA",
    "district_code": "32.73.01",
    "district_name": "SUKASARI",
    "regency_code": "32.73",
    "regency_name": "KOTA BANDUNG",
    "province_code": "32",
    "province_name": "JAWA BARAT",
    "postal_code": "40154",
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kurs / Nilai Tukar

Nilai tukar mata uang asing terhadap Rupiah (IDR) dari Frankfurter/ECB. Data diperbarui otomatis setiap hari lewat cron. Tersedia USD, EUR, SGD, GBP ke IDR.

← Lihat landing page
GET/api/v1/kurs/latest

Kurs terbaru

Mengembalikan nilai tukar terbaru untuk pasangan mata uang tertentu.

Query Parameter

basestring
Mata uang asal. Default USD.
targetstring
Mata uang tujuan. Default IDR.
Request
curl "https://use.apiindonesia.id/api/v1/kurs/latest?base=USD&target=IDR" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "kr_2026-07-03_USD_IDR",
    "date": "2026-07-03",
    "base": "USD",
    "target": "IDR",
    "rate": 16350.5,
    "source": "Frankfurter/ECB"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/kurs/history

Riwayat kurs

Mengembalikan nilai tukar historis dalam rentang tanggal tertentu.

Query Parameter

basestring
Mata uang asal. Default USD.
targetstring
Mata uang tujuan. Default IDR.
startstringWajib
Tanggal awal, format YYYY-MM-DD.
endstringWajib
Tanggal akhir, format YYYY-MM-DD.
Request
curl "https://use.apiindonesia.id/api/v1/kurs/history?base=USD&target=IDR&start=2026-06-01&end=2026-06-30" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "kr_2026-06-01_USD_IDR",
      "date": "2026-06-01",
      "base": "USD",
      "target": "IDR",
      "rate": 16290.0,
      "source": "Frankfurter/ECB"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Al-Quran

Daftar 114 surah Al-Quran lengkap dengan nama Arab, Latin, arti, jumlah ayat, dan tempat turun. Data statis bersumber dari quran.gading.dev.

← Lihat landing page
GET/api/v1/quran/list-surah

List surah

Mengembalikan daftar seluruh 114 surah Al-Quran, diurutkan berdasarkan nomor.

Request
curl "https://use.apiindonesia.id/api/v1/quran/list-surah" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 1,
      "name": "الفاتحة",
      "name_latin": "Al-Fatihah",
      "name_arabic": "الفاتحة",
      "name_translation": "Pembukaan",
      "number_of_ayahs": 7,
      "revelation_place": "mecca",
      "revelation_order": 5,
      "audio_url": "https://cdn.islamic.network/quran/audio/128/ar.alafasy/1.mp3"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/quran/surah/:id

Detail surah

Mengembalikan metadata satu surah berdasarkan nomor (1–114).

Path Parameter

idintegerWajib
Nomor surah, 1–114.
Request
curl "https://use.apiindonesia.id/api/v1/quran/surah/1" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": 1,
    "name": "الفاتحة",
    "name_latin": "Al-Fatihah",
    "name_arabic": "الفاتحة",
    "name_translation": "Pembukaan",
    "number_of_ayahs": 7,
    "revelation_place": "mecca",
    "revelation_order": 5,
    "audio_url": "https://cdn.islamic.network/quran/audio/128/ar.alafasy/1.mp3",
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Alkitab

Alkitab Terjemahan Baru (TB) — 66 kitab (39 Perjanjian Lama + 27 Perjanjian Baru) dengan 31.104 ayat. Data bersumber dari alkitab.sabda.org.

← Lihat landing page
GET/api/v1/alkitab/books

List kitab

Mengembalikan daftar seluruh 66 kitab Alkitab beserta jumlah pasal dan klasifikasi perjanjian (PL/PB).

Request
curl "https://use.apiindonesia.id/api/v1/alkitab/books" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 1,
      "abbr": "Kej",
      "name": "Kejadian",
      "chapter_count": 50,
      "testament": "PL"
    },
    {
      "id": 40,
      "abbr": "Mat",
      "name": "Matius",
      "chapter_count": 28,
      "testament": "PB"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/alkitab/books/:testament

List kitab per perjanjian

Filter kitab berdasarkan perjanjian: PL (Perjanjian Lama) atau PB (Perjanjian Baru).

Path Parameter

testamentstringWajib
PL atau PB.
Request
curl "https://use.apiindonesia.id/api/v1/alkitab/books/PB" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 40,
      "abbr": "Mat",
      "name": "Matius",
      "chapter_count": 28,
      "testament": "PB"
    },
    {
      "id": 41,
      "abbr": "Mrk",
      "name": "Markus",
      "chapter_count": 16,
      "testament": "PB"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/alkitab/passage/:bookAbbr/:chapter

Baca pasal

Mengembalikan seluruh ayat dalam satu pasal. Gunakan singkatan kitab (contoh: Kej, Yoh, Mzm) atau nama lengkap.

Path Parameter

bookAbbrstringWajib
Singkatan atau nama kitab, contoh: Kej, Yoh, Mzm.
chapterintegerWajib
Nomor pasal.
Request
curl "https://use.apiindonesia.id/api/v1/alkitab/passage/Kej/1" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "book": { "id": 1, "abbr": "Kej", "name": "Kejadian" },
    "chapter": 1,
    "total_verses": 31,
    "verses": [
      { "verse_number": 1, "title": null, "text": "Pada mulanya Allah menciptakan langit dan bumi." },
      { "verse_number": 2, "title": null, "text": "Bumi itu batal dan kosong, gelap gulita menutupi samudera raya..." }
    ]
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/alkitab/verse/:bookAbbr/:chapter/:verse

Baca satu ayat

Mengembalikan satu ayat spesifik berdasarkan kitab, pasal, dan nomor ayat.

Path Parameter

bookAbbrstringWajib
Singkatan atau nama kitab.
chapterintegerWajib
Nomor pasal.
verseintegerWajib
Nomor ayat.
Request
curl "https://use.apiindonesia.id/api/v1/alkitab/verse/Yoh/3/16" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "book": { "id": 43, "abbr": "Yoh", "name": "Yohanes" },
    "chapter": 3,
    "verse_number": 16,
    "title": null,
    "text": "Karena begitu besar kasih Allah akan dunia ini, sehingga Ia telah mengaruniakan Anak-Nya yang tunggal, supaya setiap orang yang percaya kepada-Nya tidak binasa, melainkan beroleh hidup yang kekal."
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

KBBI (Kamus Besar Bahasa Indonesia)

Kamus Besar Bahasa Indonesia (KBBI) dengan 62.850+ entri kata. Mendukung pencarian kata, lookup kata spesifik, dan kata acak. Data bersumber dari github.com/dyazincahya/KBBI-SQL-database (MIT License).

← Lihat landing page
GET/api/v1/kbbi/word/:word

Lookup kata

Mengembalikan semua entri KBBI untuk kata spesifik (beberapa kata bisa punya multiple entri).

Path Parameter

wordstringWajib
Kata yang dicari, contoh: rumah.
Request
curl "https://use.apiindonesia.id/api/v1/kbbi/word/rumah" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 50001,
      "word": "rumah",
      "arti": "Nomina (kata benda)\n(1) bangunan untuk tempat tinggal manusia",
      "type": 2
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/kbbi/random

Kata acak

Mengembalikan kata acak dari KBBI. Berguna untuk game atau aplikasi pembelajaran.

Query Parameter

countinteger
Jumlah kata (default 1, max 20).
Request
curl "https://use.apiindonesia.id/api/v1/kbbi/random?count=3" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 12345,
      "word": "budaya",
      "arti": "Nomina (kata benda)\n(1) pikiran; akal budi",
      "type": 2
    },
    {
      "id": 67890,
      "word": "karya",
      "arti": "Nomina (kata benda)\n(1) hasil perbuatan; cipta",
      "type": 2
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Plat Nomor

Daftar 56 kode plat nomor kendaraan Indonesia lengkap dengan nama wilayah dan provinsi. Data statis bersumber dari dataset terbuka.

← Lihat landing page
GET/api/v1/plates

List plat nomor

Mengembalikan semua 56 kode plat nomor kendaraan, diurutkan berdasarkan kode.

Request
curl "https://use.apiindonesia.id/api/v1/plates" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": "plate_B",
      "plate_code": "B",
      "region": "Jakarta",
      "province": "DKI Jakarta",
      "cities": "Jakarta Pusat, Jakarta Utara, Jakarta Barat, Jakarta Selatan, Jakarta Timur, Kepulauan Seribu",
      "is_active": 1
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/plates/:code

Detail plat nomor

Mengembalikan detail satu kode plat nomor.

Path Parameter

codestringWajib
Kode plat, contoh: B, DK, L.
Request
curl "https://use.apiindonesia.id/api/v1/plates/B" \\
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": "plate_B",
    "plate_code": "B",
    "region": "Jakarta",
    "province": "DKI Jakarta",
    "cities": "Jakarta Pusat, Jakarta Utara, Jakarta Barat, Jakarta Selatan, Jakarta Timur, Kepulauan Seribu",
    "is_active": 1
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

UMP — Upah Minimum Provinsi

Data Upah Minimum Provinsi (UMP) dari 1997 hingga 2025 untuk 38 provinsi di Indonesia. Sumber: Kaggle "Indonesian Salary by Region" (Apache 2.0). Endpoint ini mendukung filter berdasarkan tahun, nama provinsi, dan rentang gaji.

← Lihat landing page
GET/api/v1/ump

List UMP (terbaru dulu)

Semua data upah minimum provinsi. Gunakan query parameter untuk filter.

Query Parameter

yearnumber
Tahun spesifik (1997–2025)
province_namestring
Nama provinsi (case-insensitive, partial)
min_salarynumber
Batas bawah gaji (Rp)
max_salarynumber
Batas atas gaji (Rp)
Request
curl "https://use.apiindonesia.id/api/v1/ump?year=2025&province_name=jawa" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    { "id": "ump-32-2025", "province_code": "32", "province_name": "JAWA BARAT", "year": 2025, "salary": 2500000 },
    { "id": "ump-35-2025", "province_code": "35", "province_name": "JAWA TIMUR", "year": 2025, "salary": 2305984 }
  ],
  "meta": { "total": 2, "page": 1, "per_page": 20, "total_pages": 1 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ump/:province_code

UMP per provinsi (semua tahun)

Semua data UMP untuk satu provinsi, diurutkan tahun terbaru.

Path Parameter

province_codestringWajib
Kode provinsi (contoh: 32 = Jawa Barat)
Request
curl "https://use.apiindonesia.id/api/v1/ump/32" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    { "id": "ump-32-2025", "province_code": "32", "province_name": "JAWA BARAT", "year": 2025, "salary": 2500000 },
    { "id": "ump-32-2024", "province_code": "32", "province_name": "JAWA BARAT", "year": 2024, "salary": 2200000 }
  ],
  "meta": { "total": 2, "page": 1, "per_page": 20, "total_pages": 1 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ump/:province_code/:year

UMP provinsi × tahun

Satu record UMP untuk provinsi dan tahun tertentu.

Path Parameter

province_codestringWajib
Kode provinsi
yearnumberWajib
Tahun (1997–2025)
Request
curl "https://use.apiindonesia.id/api/v1/ump/32/2025" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": { "id": "ump-32-2025", "province_code": "32", "province_name": "JAWA BARAT", "year": 2025, "salary": 2500000 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Validasi Format

Validasi struktural NIK, NPWP, nomor telepon, dan rekening bank — tanpa lookup ke database resmi. Termasuk daftar kode bank Indonesia.

← Lihat landing page
GET/api/v1/validasi/bank

Daftar bank

Mengembalikan daftar kode bank dengan panjang digit rekening yang valid.

Request
curl "https://use.apiindonesia.id/api/v1/validasi/bank" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    { "code": "014", "name": "Bank BCA", "short_name": "BCA", "min_account_length": 10, "max_account_length": 10 }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/validasi/nik

Validasi NIK

Memeriksa format 16 digit NIK dan mengekstrak kode wilayah/tanggal lahir. Bukan verifikasi Dukcapil.

Body (JSON)

nikstringWajib
Nomor NIK 16 digit
Request
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"}'
Respons · 200 OK
{
  "data": { "valid": true, "province_code": "32", "birth_date": "1990-01-01" },
  "meta": { "disclaimer": "Validasi struktural saja..." }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/validasi/npwp

Validasi NPWP

Memeriksa format NPWP 15 digit. Bukan verifikasi DJP.

Body (JSON)

npwpstringWajib
Nomor NPWP
Request
curl -X POST "https://use.apiindonesia.id/api/v1/validasi/npwp" \
  -H "x-api-key: aip_live_xxx" -H "Content-Type: application/json" \
  -d '{"npwp":"01.234.567.8-901.000"}'
Respons · 200 OK
{
  "data": { "valid": true, "formatted": "01.234.567.8-901.000" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Developer Utilities

Utilitas murni lokal: format/parse Rupiah, generator data dummy (NIK/NPWP/telepon), dan parser QRIS.

← Lihat landing page
POST/api/v1/util/rupiah/format

Format Rupiah

Mengubah angka menjadi string Rupiah Indonesia.

Body (JSON)

amountnumberWajib
Jumlah dalam Rupiah
Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/rupiah/format" \
  -H "x-api-key: aip_live_xxx" -H "Content-Type: application/json" \
  -d '{"amount":125000}'
Respons · 200 OK
{
  "data": { "formatted": "Rp125.000", "amount": 125000 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/qris/parse

Parse QRIS

Mendekode payload string QRIS EMVCo.

Body (JSON)

payloadstringWajib
String QRIS
Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/qris/parse" \
  -H "x-api-key: aip_live_xxx" -H "Content-Type: application/json" \
  -d '{"payload":"000201..."}'
Respons · 200 OK
{
  "data": { "merchant_name": "TOKO", "amount": 50000, "currency": "360" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kurs BI

Kurs resmi Bank Indonesia (kurs transaksi). Data di-cache di D1 dan diperbarui otomatis via cron. Wajib atribusi BM/BI.

← Lihat landing page
GET/api/v1/kurs-bi/latest

Kurs terbaru

Kurs transaksi terbaru untuk USD/EUR/SGD (default) atau mata uang lain.

Query Parameter

currenciesstring
Kode ISO dipisah koma, contoh USD,EUR,SGD
Request
curl "https://use.apiindonesia.id/api/v1/kurs-bi/latest?currencies=USD,EUR,SGD" \
  -H "x-api-key: aip_live_xxx"
Respons · 200 OK
{
  "data": [{ "date": "2026-07-09", "currency": "USD", "buy_rate": 18090, "sell_rate": 18095 }],
  "meta": { "attribution": "Sumber: Bank Indonesia", "source": "Bank Indonesia" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/kurs-bi/history

Riwayat kurs

Riwayat kurs harian untuk satu mata uang (maks. 366 hari).

Query Parameter

currencystring
Kode ISO, default USD
startstringWajib
YYYY-MM-DD
endstringWajib
YYYY-MM-DD
Request
curl "https://use.apiindonesia.id/api/v1/kurs-bi/history?currency=USD&start=2026-07-01&end=2026-07-09" \
  -H "x-api-key: aip_live_xxx"
Respons · 200 OK
{
  "data": [{ "date": "2026-07-09", "currency": "USD", "mid_rate": 18092.52 }],
  "meta": { "attribution": "Sumber: Bank Indonesia" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Halal BPJPH

Pencarian penyelia/pelaku usaha halal dari portal BPJPH. On-demand: fetch upstream saat cache miss, TTL 24 jam per keyword.

← Lihat landing page
GET/api/v1/halal/:id

Detail penyelia

Ambil satu record berdasarkan UUID id_penyelia.

Path Parameter

idstringWajib
UUID penyelia
Request
curl "https://use.apiindonesia.id/api/v1/halal/C7A753BB-3282-4D57-A485-B2B724D8267C" \
  -H "x-api-key: aip_live_xxx"
Respons · 200 OK
{
  "data": { "id_penyelia": "...", "company_name": "...", "issuer": "BPJPH" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Produk BPOM

Pencarian produk terdaftar BPOM (NIE, nama, bahan). On-demand dengan cache 24 jam per keyword.

← Lihat landing page
GET/api/v1/bpom/:nie

Detail NIE

Ambil produk berdasarkan Nomor Izin Edar (NIE).

Path Parameter

niestringWajib
NIE, contoh DBL9424502004A1
Request
curl "https://use.apiindonesia.id/api/v1/bpom/DBL9424502004A1" \
  -H "x-api-key: aip_live_xxx"
Respons · 200 OK
{
  "data": { "nie": "DBL9424502004A1", "product_name": "PANADOL EXTRA", "category": "Obat" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kalender Hijriah

Konversi tanggal Masehi ↔ Hijriah berdasarkan Kalender Hijriah Indonesia (Kemenag, hisab MABIMS). Data statis tahun 2026.

← Lihat landing page
GET/api/v1/hijriah/konversi

Konversi tanggal

Konversi satu tanggal Masehi ke Hijriah.

Query Parameter

tanggalstringWajib
YYYY-MM-DD
Request
curl "https://use.apiindonesia.id/api/v1/hijriah/konversi?tanggal=2026-07-11" \
  -H "x-api-key: aip_live_xxx"
Respons · 200 OK
{
  "data": { "gregorian_date": "2026-07-11", "hijri_formatted": "26 Muharram 1448 H" },
  "meta": { "disclaimer": "Berdasarkan Kalender Hijriah Indonesia (hisab MABIMS)..." }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/hijriah/kalender

Kalender tahun

Seluruh mapping tanggal untuk satu tahun Masehi (saat ini 2026).

Query Parameter

tahunintegerWajib
Tahun Masehi, contoh 2026
Request
curl "https://use.apiindonesia.id/api/v1/hijriah/kalender?tahun=2026" \
  -H "x-api-key: aip_live_xxx"
Respons · 200 OK
{
  "data": [{ "gregorian_date": "2026-01-01", "hijri_day": 12, "hijri_month_name": "Rajab", "hijri_year": 1447 }],
  "meta": { "tahun": 2026, "total_days": 365 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Akun & BillingPublik

Autentikasi Akun

Registrasi dan login untuk mendapatkan token JWT. Token dipakai untuk mengelola API key, melihat penggunaan, dan berlangganan.

POST/auth/register

Registrasi

Membuat akun baru. Endpoint ini dilindungi Turnstile; gunakan token dari dashboard. API key pertama otomatis dibuat dan dikembalikan sekali di respons ini.

Body (JSON)

emailstringWajib
Alamat email, harus unik.
passwordstringWajib
Kata sandi akun.
namestring
Nama lengkap (opsional).
turnstileTokenstringWajib
Token Cloudflare Turnstile dari form dashboard.
Request
curl -X POST "https://use.apiindonesia.id/auth/register" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "anda@perusahaan.com",
    "password": "rahasia123",
    "name": "Budi Santoso",
    "turnstileToken": "0.xxxxx"
  }'
Respons · 201 Created
{
  "data": {
    "id": "user_a1b2c3d4e5f6",
    "email": "anda@perusahaan.com",
    "name": "Budi Santoso",
    "plan": "free"
  },
  "api_key": "aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/auth/login

Login

Menukar email dan kata sandi dengan token JWT. Endpoint ini dilindungi Turnstile; gunakan token dari dashboard.

Body (JSON)

emailstringWajib
Alamat email terdaftar.
passwordstringWajib
Kata sandi akun.
turnstileTokenstringWajib
Token Cloudflare Turnstile dari form dashboard.
Request
curl -X POST "https://use.apiindonesia.id/auth/login" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "anda@perusahaan.com",
    "password": "rahasia123",
    "turnstileToken": "0.xxxxx"
  }'
Respons · 200 OK
{
  "data": {
    "id": "user_a1b2c3d4e5f6",
    "email": "anda@perusahaan.com",
    "name": "Budi Santoso",
    "plan": "free"
  },
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/auth/me

Profil saya

Mengembalikan profil user yang sedang login berdasarkan token JWT.

Request
curl "https://use.apiindonesia.id/auth/me" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": {
    "id": "user_a1b2c3d4e5f6",
    "email": "anda@perusahaan.com",
    "name": "Budi Santoso",
    "plan": "free",
    "status": "active"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Akun & BillingBearer JWT

API Keys

Kelola API key Anda: buat key baru per aplikasi, lihat daftar key, dan cabut key yang tidak dipakai. Semua endpoint memerlukan token JWT.

GET/user/keys

List API key

Mengembalikan semua API key milik user. Key lengkap tidak pernah ditampilkan lagi — hanya prefix-nya.

Request
curl "https://use.apiindonesia.id/user/keys" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": [
    {
      "id": "key_9f8e7d6c5b4a",
      "key_prefix": "aip_live_Ab1",
      "name": "Default",
      "plan": "free",
      "status": "active",
      "created_at": "2026-07-01T08:12:44.000Z",
      "last_used_at": "2026-07-03T02:31:09.000Z"
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/user/keys

Buat API key

Membuat API key baru. Field api_key hanya dikembalikan sekali di respons ini dan tidak bisa dilihat kembali.

Body (JSON)

namestring
Nama key untuk identifikasi, contoh: "Aplikasi Android". Default "Default".
Request
curl -X POST "https://use.apiindonesia.id/user/keys" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "name": "Aplikasi Android" }'
Respons · 201 Created
{
  "data": {
    "id": "key_1a2b3c4d5e6f",
    "key_prefix": "aip_live_Xy9",
    "name": "Aplikasi Android",
    "plan": "free",
    "status": "active",
    "api_key": "aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
DELETE/user/keys/:id

Cabut API key

Mencabut API key secara permanen. Key yang sudah dicabut langsung ditolak di semua endpoint.

Path Parameter

idstringWajib
ID API key yang akan dicabut.
Request
curl -X DELETE "https://use.apiindonesia.id/user/keys/key_1a2b3c4d5e6f" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": {
    "id": "key_1a2b3c4d5e6f",
    "status": "revoked"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/user/usage

Statistik penggunaan

Mengembalikan rekap penggunaan API per bulan dan per produk untuk semua key milik user.

Request
curl "https://use.apiindonesia.id/user/usage" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": [
    {
      "year": 2026,
      "month": 7,
      "api_product": "wilayah",
      "total_hits": 1240,
      "successful_hits": 1233,
      "failed_hits": 7
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

OJK Investasi

Data investasi dari Otoritas Jasa Keuangan (OJK): produk investasi legal (reksa dana), aplikasi investasi legal, dan daftar investasi ilegal yang diawasi OJK. Data bersumber dari Namchee/ojk-invest-api (MIT License).

← Lihat landing page
GET/api/v1/ojk/products

Daftar produk investasi legal

Mengembalikan daftar produk reksa dana legal yang terdaftar di OJK. Mendukung paginasi dan pencarian berdasarkan nama.

Query Parameter

namestring
Cari produk berdasarkan nama (fuzzy match).
limitnumber
Jumlah item per halaman (maks 200, default 50).
offsetnumber
Lewati jumlah item (untuk paginasi).
Request
curl "https://use.apiindonesia.id/api/v1/ojk/products?limit=5" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 1,
      "name": "Schroder Dana Likuid",
      "management": "Schroder Investment Management Indonesia",
      "custodian": "PT Bank HSBC Indonesia",
      "type": "Money Market"
    }
  ],
  "meta": {
    "total": 2189,
    "page": 1,
    "per_page": 5,
    "total_pages": 438
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ojk/products/:id

Detail produk investasi

Mengembalikan detail satu produk reksa dana berdasarkan ID.

Path Parameter

idnumber
ID produk.
Request
curl "https://use.apiindonesia.id/api/v1/ojk/products/1" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": 1,
    "name": "Schroder Dana Likuid",
    "management": "Schroder Investment Management Indonesia",
    "custodian": "PT Bank HSBC Indonesia",
    "type": "Money Market"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ojk/apps

Daftar aplikasi investasi legal

Mengembalikan daftar aplikasi investasi legal yang terdaftar di OJK. Mendukung paginasi dan pencarian berdasarkan nama.

Query Parameter

namestring
Cari aplikasi berdasarkan nama (fuzzy match).
limitnumber
Jumlah item per halaman (maks 200, default 50).
offsetnumber
Lewati jumlah item (untuk paginasi).
Request
curl "https://use.apiindonesia.id/api/v1/ojk/apps?limit=5" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 1,
      "name": "Ajaib",
      "url": "https://ajaib.co.id",
      "owner": "Ajaib Sekuritas Asia"
    }
  ],
  "meta": {
    "total": 93,
    "page": 1,
    "per_page": 5,
    "total_pages": 19
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ojk/apps/:id

Detail aplikasi investasi

Mengembalikan detail satu aplikasi investasi berdasarkan ID.

Path Parameter

idnumber
ID aplikasi.
Request
curl "https://use.apiindonesia.id/api/v1/ojk/apps/1" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": 1,
    "name": "Ajaib",
    "url": "https://ajaib.co.id",
    "owner": "Ajaib Sekuritas Asia"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ojk/illegals

Daftar investasi ilegal

Mengembalikan daftar investasi ilegal yang diawasi OJK. Setiap entri dapat berisi nama alias, alamat, telepon, email, website, jenis entitas, jenis aktivitas, dan deskripsi. Mendukung paginasi dan pencarian berdasarkan nama.

Query Parameter

namestring
Cari investasi ilegal berdasarkan nama (fuzzy match).
limitnumber
Jumlah item per halaman (maks 200, default 50).
offsetnumber
Lewati jumlah item (untuk paginasi).
Request
curl "https://use.apiindonesia.id/api/v1/ojk/illegals?limit=3" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    {
      "id": 1,
      "name": "PT Jelita Harmoni Mas",
      "alias": [],
      "address": ["Jakarta"],
      "phone": [],
      "email": [],
      "web": [],
      "entity_type": "Investasi Bodong",
      "activity_type": ["Penipuan"],
      "input_date": "20/01/2020",
      "description": "SP1/III/INFEST/2019"
    }
  ],
  "meta": {
    "total": 11278,
    "page": 1,
    "per_page": 3,
    "total_pages": 3760
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/ojk/illegals/:id

Detail investasi ilegal

Mengembalikan detail satu investasi ilegal berdasarkan ID.

Path Parameter

idnumber
ID investasi ilegal.
Request
curl "https://use.apiindonesia.id/api/v1/ojk/illegals/1" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "id": 1,
    "name": "PT Jelita Harmoni Mas",
    "alias": [],
    "address": ["Jakarta"],
    "phone": [],
    "email": [],
    "web": [],
    "entity_type": "Investasi Bodong",
    "activity_type": ["Penipuan"],
    "input_date": "20/01/2020",
    "description": "SP1/III/INFEST/2019"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Akun & BillingBearer JWT

Billing

Berlangganan paket Pro atau Business, atau membeli kredit pay as you go, lewat Sumopod. Pembayaran default memakai QRIS. Setiap paket berbayar memberi kredit; request yang melewati kuota bawaan memotong 1 kredit per request sukses.

GET/billing/plans

Daftar paket

Mengembalikan daftar paket, harga bulanan/tahunan, kuota, dan rate limit yang tersedia.

Request
curl "https://use.apiindonesia.id/billing/plans"
Respons · 200 OK
{
  "data": {
    "plans": {
      "free": { "monthlyPrice": 0, "monthlyQuota": 1000 },
      "pro": { "monthlyPrice": 49000, "yearlyPrice": 490000, "monthlyQuota": 50000 },
      "business": { "monthlyPrice": 149000, "yearlyPrice": 1490000, "monthlyQuota": 250000 }
    },
    "checkout_plans": ["pro", "business"],
    "billing_cycles": ["monthly", "yearly"],
    "payg_packages": {
      "starter": { "credits": 25000, "amount": 29000 },
      "standard": { "credits": 50000, "amount": 59000 },
      "growth": { "credits": 100000, "amount": 109000 },
      "scale": { "credits": 250000, "amount": 249000 }
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/billing/subscribe

Mulai checkout

Membuat langganan pending dan menghasilkan payment link Sumopod. Arahkan user ke redirect_url untuk menyelesaikan pembayaran. Kredit paket baru ditambahkan setelah webhook pembayaran lunas diterima.

Body (JSON)

planstring
Paket langganan: "pro" atau "business".
billing_cyclestring
Siklus pembayaran: "monthly" atau "yearly". Default: "monthly".
Request
curl -X POST "https://use.apiindonesia.id/billing/subscribe" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "plan": "pro", "billing_cycle": "monthly" }'
Respons · 200 OK
{
  "data": {
    "subscription_id": "sub_7c1e...",
    "invoice_id": "inv_2f9a...",
    "plan": "pro",
    "billing_cycle": "monthly",
    "amount": 49000,
    "currency": "IDR",
    "payment_provider": "sumopod",
    "payment_url": "https://pay.sumopod.com/...",
    "redirect_url": "https://pay.sumopod.com/...",
    "payment_id": "pay_8b3d...",
    "credits": 50000,
    "expires_at": "2026-07-31T08:15:00.000Z"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/billing/status

Status langganan

Mengembalikan langganan terbaru milik user. Mengembalikan 404 jika belum pernah berlangganan.

Request
curl "https://use.apiindonesia.id/billing/status" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": {
    "id": "sub-7c1e...",
    "user_id": "user_a1b2c3d4e5f6",
    "plan": "pro",
    "status": "active",
    "started_at": "2026-07-01T08:15:00.000Z",
    "expires_at": "2026-07-31T08:15:00.000Z",
    "auto_renew": 0
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/billing/webhook

Webhook Sumopod

Endpoint notifikasi pembayaran dari Sumopod (bukan untuk dipanggil langsung). Daftarkan URL ini sebagai webhook URL di dashboard Sumopod. Request diverifikasi lewat header x-webhook-token atau tanda tangan Svix (svix-id, svix-timestamp, svix-signature) — salah satu yang valid sudah cukup. Saat status pembayaran menjadi lunas, invoice ditandai lunas, plan user di-upgrade, dan kredit ditambahkan.

Request
# Dipanggil otomatis oleh Sumopod, contoh payload:
curl -X POST "https://use.apiindonesia.id/billing/webhook" \
  -H "x-webhook-token: <SUMOPOD_WEBHOOK_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "payment.completed",
    "data": {
      "payment_id": "pay_8b3d...",
      "order_id": "inv_2f9a...",
      "status": "completed",
      "amount": 49000,
      "payment_method": "qris",
      "completed_at": "2026-07-01T08:16:30.000Z"
    }
  }'
Respons · 200 OK
{
  "status": "ok"
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/billing/topup

Beli kredit (pay as you go)

Membeli paket kredit sekali bayar tanpa langganan. Kredit tidak kedaluwarsa dan ditambahkan setelah pembayaran lunas.

Body (JSON)

package_idstring
Paket kredit: "starter", "standard", "growth", atau "scale".
Request
curl -X POST "https://use.apiindonesia.id/billing/topup" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "package_id": "standard" }'
Respons · 200 OK
{
  "data": {
    "invoice_id": "inv_2f9a...",
    "package_id": "standard",
    "credits": 50000,
    "amount": 59000,
    "currency": "IDR",
    "payment_provider": "sumopod",
    "payment_url": "https://pay.sumopod.com/...",
    "redirect_url": "https://pay.sumopod.com/...",
    "payment_id": "pay_8b3d...",
    "expires_at": "2026-07-02T08:15:00.000Z"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/billing/credits

Saldo kredit

Mengembalikan saldo kredit dan 50 mutasi terakhir. Request sukses di atas kuota bawaan memotong 1 kredit; request yang gagal dikembalikan otomatis.

Request
curl "https://use.apiindonesia.id/billing/credits" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": {
    "balance": 48750,
    "cost_per_successful_request": 1,
    "free_monthly_included_credits": 1000,
    "ledger": [
      {
        "id": "8f1c...",
        "type": "usage",
        "amount": 1,
        "balance_after": 48750,
        "description": "GET /api/v1/wilayah/provinces",
        "created_at": "2026-07-01T09:02:11.000Z"
      }
    ]
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Astronomi

Data astronomi terhitung dari rumus publik NOAA/USNO: terbit/terbenam matahari, siang hari, senja (twilight), fase bulan, fase bulan berikutnya, dan prediksi gerhana. Murni komputasi lokal — tanpa sumber data eksternal, cocok untuk penggunaan komersial.

← Lihat landing page
GET/api/v1/astronomi/sun

Terbit & terbenam matahari

Mengembalikan waktu terbit, terbenam, siang hari (solar noon), dan panjang hari untuk lat/lon dan tanggal tertentu. Mendukung polar night / midnight sun.

Query Parameter

latnumberWajib
Lintang desimal (-90..90), contoh: -6.2.
lonnumberWajib
Bujur desimal (-180..180), contoh: 106.8.
tanggalstring
Tanggal YYYY-MM-DD. Default hari ini.
tzstring
Offset zona waktu ISO, contoh: +07:00. Default +00:00.
Request
curl "https://use.apiindonesia.id/api/v1/astronomi/sun?lat=-6.2&lon=106.8&tanggal=2025-06-21&tz=%2B07:00" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "date": "2025-06-21",
    "latitude": -6.2,
    "longitude": 106.8,
    "timezone": "+07:00",
    "sunrise": "06:00",
    "sunset": "17:46",
    "solarNoon": "11:53",
    "dayLength": 42343,
    "declination": 23.44,
    "equationOfTime": -0.76,
    "polarPhase": "normal"
  },
  "meta": {
    "disclaimer": "Hasil dihitung dari rumus astronomi publik (NOAA/USNO). Aksen ±2 menit adalah normal untuk terbit/terbenam.",
    "source": "Computed (NOAA/USNO)"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/astronomi/twilight

Waktu senja

Mengembalikan batas senja sipil, nautika, dan astronomi untuk fotografi/observasi.

Query Parameter

latnumberWajib
Lintang desimal.
lonnumberWajib
Bujur desimal.
tanggalstring
Tanggal YYYY-MM-DD. Default hari ini.
tzstring
Offset zona waktu ISO, contoh: +07:00.
Request
curl "https://use.apiindonesia.id/api/v1/astronomi/twilight?lat=-6.2&lon=106.8&tanggal=2025-06-21&tz=%2B07:00" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "civilDawn": "05:35",
    "civilDusk": "18:11",
    "nauticalDawn": "05:06",
    "nauticalDusk": "18:40",
    "astronomicalDawn": "04:37",
    "astronomicalDusk": "19:09"
  },
  "meta": { "disclaimer": "Hasil dihitung dari rumus astronomi publik (NOAA/USNO)...", "source": "Computed (NOAA/USNO)" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/astronomi/moon

Fase bulan

Mengembalikan fase bulan (penerangan, nama fase, usia, jarak) untuk tanggal tertentu.

Query Parameter

tanggalstring
Tanggal YYYY-MM-DD. Default hari ini.
Request
curl "https://use.apiindonesia.id/api/v1/astronomi/moon?tanggal=2025-02-12" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": {
    "date": "2025-02-12",
    "illumination": 0.98,
    "phaseAngle": 178.2,
    "phaseName": "Bulan Purnama",
    "phaseNameEn": "Full Moon",
    "age": 14.7,
    "visiblePercent": 98,
    "trend": "waxing",
    "distanceEarthRadii": 60.3,
    "julianDay": 2460713.5
  },
  "meta": { "source": "Computed (NOAA/USNO)" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/astronomi/moon/next

Fase bulan berikutnya

Mengembalikan fase bulan besar (baru/kuartil awal/purnama/kuartil akhir) berikutnya hingga 12 fase ke depan.

Query Parameter

tanggalstring
Tanggal mulai YYYY-MM-DD. Default hari ini.
countinteger
Jumlah fase (1–12). Default 4.
Request
curl "https://use.apiindonesia.id/api/v1/astronomi/moon/next?tanggal=2025-01-01&count=4" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    { "phase": "first_quarter", "name": "Kuartil Awal", "nameEn": "First Quarter", "date": "2025-01-05", "daysUntil": 4, "phaseAngle": 90 },
    { "phase": "full", "name": "Bulan Purnama", "nameEn": "Full Moon", "date": "2025-01-13", "daysUntil": 12, "phaseAngle": 180 }
  ],
  "meta": { "source": "Computed (NOAA/USNO)" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/astronomi/gerhana

Prediksi gerhana

Mengembalikan gerhana matahari & bulan yang akan datang (prediksi aproximasi berbasis siklus saros/draconic). Tanggal & jenis bersifat indikatif.

Query Parameter

tanggalstring
Tanggal mulai YYYY-MM-DD. Default hari ini.
daysinteger
Jangka waktu dalam hari (1–1825). Default 365.
Request
curl "https://use.apiindonesia.id/api/v1/astronomi/gerhana?tanggal=2025-01-01&days=730" \
  -H "x-api-key: aip_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Respons · 200 OK
{
  "data": [
    { "type": "lunar", "date": "2025-03-14", "kind": "Total", "kindEn": "Total", "magnitude": 0.93 },
    { "type": "solar", "date": "2025-03-29", "kind": "Sebagian", "kindEn": "Partial", "magnitude": 0.71 }
  ],
  "meta": { "source": "Computed (NOAA/USNO)", "note": "Prediksi aproximasi berbasis siklus saros/draconic. Tanggal & jenis bersifat indikatif." }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Merek (DJKI)

Data merek Indonesia dari DJKI/Kemenkumham: 900.000+ merek terdaftar lengkap dengan nomor permohonan, pemilik, kelas NICE, dan konsultan, plus jurnal penerbitan merek (Berita Resmi Merek) untuk pantau permohonan baru pemilik atau kompetitor. Tersedia pencarian nama, pemilik, dan kelas.

← Lihat landing page
GET/api/v1/merek/:appNumber

Detail merek

Mengembalikan detail satu merek berdasarkan nomor permohonan (app_number). Jika nomor hanya muncul di jurnal penerbitan (belum terdaftar), respons tetap 200 dengan data jurnal beserta daftar journal_events.

Path Parameter

appNumberstring
Nomor permohonan merek, contoh: DID2019050403.
Request
curl "https://use.apiindonesia.id/api/v1/merek/DID2019050403"   -H "x-api-key: aip_li...x"
Respons · 200 OK
{
  "success": true,
  "data": {
    "app_number": "DID2019050403",
    "mark_name": "GARUDA SUPER",
    "class": "16",
    "owner": "DARWIN EFFENDY",
    "consultant": null,
    "reg_date": "2019-09-03",
    "journal_events": []
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/merek/journal

Cari jurnal penerbitan merek

Mengembalikan permohonan merek yang terbit di Berita Resmi Merek DJKI. Jendela periode terbatas pada edisi terbaru (sekitar dua kali per bulan, beberapa bulan terakhir). Cocok untuk memantau permohonan baru yang mirip merek Anda sebelum masa keberatan berakhir.

Query Parameter

qstring
Kata kunci pencarian, contoh: garuda.
pageinteger
Halaman yang diambil. Default 1.
limitinteger
Jumlah data per halaman. Default 20.
journal_nostring
Filter berdasarkan nomor jurnal, contoh: 140/P-M/VII/A/2026.
Request
curl "https://use.apiindonesia.id/api/v1/merek/journal?q=garuda&page=1&limit=5"   -H "x-api-key: aip_li...x"
Respons · 200 OK
{
  "success": true,
  "data": [
    {
      "app_number": "DID2026064189",
      "journal_no": "140/P-M/VII/A/2026",
      "journal_date": "2026-07-10",
      "opposition_end": "2026-09-10",
      "mark_name": "GLS Garuda Lintas Segoro + Logo",
      "class": "20",
      "owner": "LILY",
      "filing_date": "2026-07-02"
    },
    {
      "app_number": "JID2026033404",
      "journal_no": "137/P-M/VII/A/2026",
      "journal_date": "2026-07-06",
      "opposition_end": "2026-09-06",
      "mark_name": "Sama Juga Bohong",
      "class": "41",
      "owner": "PT Garuda Film",
      "filing_date": "2026-04-15"
    },
    {
      "app_number": "DID2026061024",
      "journal_no": "141/P-M/VII/A/2026",
      "journal_date": "2026-07-10",
      "opposition_end": "2026-09-10",
      "mark_name": "GARUDAFLY",
      "class": "12",
      "owner": "PT GARUDAFLY AGRI DRONE",
      "filing_date": "2026-06-24"
    }
  ],
  "pagination": { "page": 1, "limit": 5, "total": 51 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.

Siap membangun?

Daftar gratis dan dapatkan 1.000 hits per bulan. Tanpa kartu kredit, tanpa komitmen.