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. Akun baru mendapat bonus 3.000 kredit sekali saja (Rp3.000) setelah email diverifikasi, dan bonusnya tidak pernah kedaluwarsa. Tidak ada jatah gratis bulanan untuk paket mana pun, jadi pemakaian diambil dari saldo kredit Anda: satu kredit sama dengan Rp1, satu request data publik yang sukses memakai 2 kredit (Rp2), dan request yang gagal, error validasi, atau timeout tidak dikenakan biaya.

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, untuk paket berbayar, kuota kredit bulanan.

Rate Limit

20 req/detik

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

Kuota Bulanan

50.000 kredit/bulan (Pro)

Tidak ada jatah gratis bulanan untuk paket mana pun: akun baru mendapat bonus sekali 3.000 kredit (Rp3.000) setelah email diverifikasi, dan bonusnya tidak pernah kedaluwarsa. Kuota berbayar yang habis menjawab 402 QUOTA_EXCEEDED. Paket Promemberi 50.000 kredit (Rp50.000) per bulan dan Business memberi 250.000 kredit (Rp250.000) per bulan. Satu kredit sama dengan Rp1 dan satu request data publik yang sukses memakai 2 kredit, jadi 50.000 kredit setara 25.000 request sukses dan 250.000 kredit setara 125.000 request sukses. Kuota berbayar 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.
402INSUFFICIENT_CREDITSSaldo kredit habis. Setiap request data publik yang sukses memakai 2 kredit (Rp2) dan satu kredit sama dengan Rp1, jadi saldo diisi dari dashboard.
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 APIPublik

Metadata Dataset

Metadata snapshot dan provenance dataset, termasuk sumber, versi, jumlah item, waktu sinkronisasi, checksum, status, dan peringatan.

GET/api/v1/meta/datasets

List metadata dataset

Mengembalikan metadata untuk semua dataset yang telah terdaftar. Endpoint ini tidak memerlukan API key.

Request
curl "https://use.apiindonesia.id/api/v1/meta/datasets"
Respons · 200 OK
{
  "success": true,
  "data": [
    {
      "dataset": "sekolah",
      "source_url": "https://example.go.id/sekolah.csv",
      "source_kind": "snapshot",
      "source_version": "2026-09-18",
      "source_year": 2026,
      "total_items": 200123,
      "synced_at": "2026-09-18T01:02:03.000Z",
      "schema_version": "1",
      "payload_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "status": "ready",
      "warnings": []
    }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/meta/datasets/:dataset

Detail metadata dataset

Mengembalikan metadata snapshot dan provenance untuk satu dataset.

Path Parameter

datasetstringWajib
ID dataset, contoh: sekolah.
Request
curl "https://use.apiindonesia.id/api/v1/meta/datasets/sekolah"
Respons · 200 OK
{
  "success": true,
  "data": {
    "dataset": "sekolah",
    "source_url": null,
    "source_kind": "unknown",
    "source_version": null,
    "source_year": null,
    "total_items": 200123,
    "synced_at": null,
    "schema_version": null,
    "payload_sha256": null,
    "status": "unknown",
    "warnings": [
      "Backfilled from an existing table; original sync provenance is unavailable."
    ]
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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/provinsi/:id/kabupaten

Kabupaten/kota dalam provinsi

Alias bertingkat untuk mengambil kabupaten/kota berdasarkan kode provinsi.

Path Parameter

idstringWajib
Kode provinsi.

Query Parameter

pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/provinsi/94/kabupaten" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "data": [{ "id": "9401", "province_id": "94", "name": "Kabupaten Nabire", "type": "kabupaten" }], "meta": { "total": 8, "page": 1, "per_page": 20, "total_pages": 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: YOUR_API_KEY"
Respons · 200 OK
{
  "data": [
    {
      "id": "3273",
      "province_id": "32",
      "code": "3273",
      "name": "KOTA BANDUNG",
      "alt_name": "Kota Bandung",
      "type": "kota",
      "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: YOUR_API_KEY"
Respons · 200 OK
{
  "data": {
    "id": "3273",
    "province_id": "32",
    "code": "3273",
    "name": "KOTA BANDUNG",
    "alt_name": "Kota Bandung",
    "type": "kota",
    "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/kabupaten/:id/kecamatan

Kecamatan dalam kabupaten/kota

Alias bertingkat untuk mengambil kecamatan berdasarkan kode kabupaten/kota.

Path Parameter

idstringWajib
Kode kabupaten/kota.

Query Parameter

pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kabupaten/9401/kecamatan" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "data": [{ "id": "940101", "regency_id": "9401", "name": "Nabire" }], "meta": { "total": 15, "page": 1, "per_page": 20, "total_pages": 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: YOUR_API_KEY"
Respons · 200 OK
{
  "data": [
    {
      "id": "327301",
      "regency_id": "3273",
      "code": "327301",
      "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: 327301.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kecamatan/327301" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": {
    "id": "327301",
    "regency_id": "3273",
    "code": "327301",
    "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/kecamatan/:id/kelurahan

Kelurahan/desa dalam kecamatan

Alias bertingkat untuk mengambil kelurahan, desa, dan desa adat berdasarkan kode kecamatan.

Path Parameter

idstringWajib
Kode kecamatan.

Query Parameter

pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kecamatan/940101/kelurahan" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "data": [{ "id": "9401011001", "district_id": "940101", "name": "Wonorejo", "type": "kelurahan" }], "meta": { "total": 11, "page": 1, "per_page": 20, "total_pages": 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=327301" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": [
    {
      "id": "3273011001",
      "district_id": "327301",
      "code": "3273011001",
      "name": "ISOLA",
      "alt_name": "Isola",
      "type": "kelurahan",
      "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: 3273011001.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah/kelurahan/3273011001" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": {
    "id": "3273011001",
    "district_id": "327301",
    "code": "3273011001",
    "name": "ISOLA",
    "alt_name": "Isola",
    "type": "kelurahan",
    "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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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, pencarian nama/NPSN, dan filter wilayah, jenjang, status, serta akreditasi.

Query Parameter

provinsi_idstring
Filter berdasarkan kode provinsi.
kabupaten_idstring
Filter berdasarkan kode kabupaten/kota.
district_idstring
Filter berdasarkan ID kecamatan. Alias Indonesia: kecamatan_id.
district_codestring
Filter berdasarkan kode kecamatan. Alias Indonesia: kecamatan_code.
jenisstring
Jenjang sekolah: SD, SMP, SMA, SMK, atau SLB.
gradestring
Alias bahasa Inggris untuk jenis/jenjang.
typestring
Alias tambahan untuk jenis/jenjang.
statusstring
Status sekolah: Negeri atau Swasta.
accreditationstring
Filter nilai akreditasi. Alias Indonesia: akreditasi.
qstring
NPSN persis atau awalan nama sekolah, minimal 2 karakter.
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?district_id=3273190&grade=SMA&status=Negeri&accreditation=A&q=SMA" \
  -H "x-api-key: YOUR_API_KEY"
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",
      "source_name": "kemendikbud-reference",
      "source_url": "https://referensi.data.kemdikbud.go.id/",
      "source_synced_at": "2026-09-18T00:00:00Z",
      "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, kabupaten/kota, kecamatan, dan desa/kelurahan.

Path Parameter

npsnstringWajib
Nomor Pokok Sekolah Nasional.
Request
curl "https://use.apiindonesia.id/api/v1/sekolah/20219557" \
  -H "x-api-key: YOUR_API_KEY"
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",
    "district_name": "SUMUR BANDUNG",
    "village_name": "MERDEKA"
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kampus

Direktori 2.100+ perguruan tinggi kelompok PTN, PTS, PTA, dan PTK: 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

qstring
Cari berdasarkan nama atau singkatan.
provincestring
Filter berdasarkan kode provinsi. Alias lama: provinsi_id.
regencystring
Filter berdasarkan kode kabupaten/kota. Alias lama: kabupaten_id.
typestring
Jenis: universitas, institut, politeknik, akademi, atau sekolah_tinggi. Alias lama: jenis.
groupstring
Kelompok: PTN, PTS, PTA, atau PTK. Alias lama: kelompok.
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?province=32&group=PTN&q=teknologi" \
  -H "x-api-key: YOUR_API_KEY"
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: YOUR_API_KEY"
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 2.900+ rumah sakit dari ekspor Pusdatin Kemenkes, dengan kode RS, jenis, lokasi, kontak, kapasitas tempat tidur, dan metadata sumber.

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

List rumah sakit

Daftar ringkas dengan pencarian nama/kode dan filter wilayah, jenis, kelas, kepemilikan, serta status BLU. Gunakan endpoint detail untuk koleksi layanan, tenaga, tempat tidur, dan fasilitas.

Query Parameter

qstring
Cari sebagian nama atau kode RS.
codestring
Filter kode SIRS secara persis.
province_idstring
Filter kode provinsi. Alias lama: provinsi_id.
regency_idstring
Filter kode kabupaten/kota. Alias lama: kabupaten_id.
typestring
Filter jenis RS mentah dari SIRS atau kode jenis lama. Alias: jenis.
classstring
Filter kelas RS. Alias: kelas.
ownershipstring
Filter kepemilikan. Alias: kepemilikan.
blustring
Filter status BLU/BLUD; menerima label SIRS atau boolean. Alias: blu_status/is_blu.
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?q=al+ihsan&province_id=32" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": [
    {
      "id": "rs-3204086",
      "code": "3204086",
      "name": "RS UMUM DAERAH AL IHSAN PROVINSI JAWA BARAT",
      "jenis": "RSUM",
      "hospital_type": "RS_RUJUKAN_PROVINSI",
      "kelas": null,
      "ownership": null,
      "is_blu": 0,
      "blu_status": null,
      "province_id": "32",
      "regency_id": "3204",
      "lat": -7.0081,
      "lng": 107.624,
      "beds_total": 462,
      "province_name": "JAWA BARAT",
      "regency_name": "KABUPATEN BANDUNG"
    }
  ],
  "meta": {
    "total": 1,
    "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 profil lengkap berdasarkan ID internal atau kode SIRS, termasuk rincian tempat tidur, layanan, tenaga, fasilitas, provenance, dan waktu sinkronisasi yang tersedia.

Path Parameter

idstringWajib
ID internal atau kode SIRS.
Request
curl "https://use.apiindonesia.id/api/v1/rumah-sakit/3204086" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": {
    "id": "rs-3204086",
    "code": "3204086",
    "name": "RS UMUM DAERAH AL IHSAN PROVINSI JAWA BARAT",
    "jenis": "RSUM",
    "hospital_type": "RS_RUJUKAN_PROVINSI",
    "kelas": null,
    "ownership": null,
    "is_blu": 0,
    "blu_status": null,
    "director": null,
    "address": "JL. KI ASTRAMANGGALA BALE ENDAH KAB. BANDUNG",
    "phone": "(022) 5940872",
    "beds_total": 462,
    "source_name": "Pusdatin Kemenkes export via zakiego/data-pusdatin-kemenkes",
    "source_url": "https://github.com/zakiego/data-pusdatin-kemenkes",
    "province_name": "JAWA BARAT",
    "regency_name": "KABUPATEN BANDUNG",
    "beds": [],
    "services": [],
    "staff": [],
    "facilities": [],
    "provenance": {
      "source_record_code": "3204086"
    }
  }
}
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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 dan kode wilayah BPS serta Kemendagri yang eksplisit.

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.
kode_posstring
Filter kode pos 5 digit.
bps_province_codestring
Kode provinsi BPS.
bps_regency_codestring
Kode kabupaten/kota BPS.
bps_district_codestring
Kode kecamatan BPS.
bps_village_codestring
Kode desa/kelurahan BPS.
kemendagri_province_codestring
Kode provinsi Kemendagri.
kemendagri_regency_codestring
Kode kabupaten/kota Kemendagri.
kemendagri_district_codestring
Kode kecamatan Kemendagri.
kemendagri_village_codestring
Kode desa/kelurahan Kemendagri.
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: YOUR_API_KEY"
Respons · 200 OK
{
  "data": [
    {
      "id": "kp_3273011001",
      "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",
      "kode_pos": "40154",
      "bps_village_code": "3273010001",
      "kemendagri_village_code": "32.73.01.1001",
      "source_version": "2026.06",
      "crosswalk_source_version": "BPS Semester 1 2025 / Kemendagri 2025",
      "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/lookup

Lookup kode lintas sistem

Lookup tepat berdasarkan kode pos atau kode wilayah BPS/Kemendagri. Sedikitnya satu filter wajib diisi.

Query Parameter

kode_posstring
Kode pos 5 digit.
bps_province_codestring
Kode provinsi BPS.
bps_regency_codestring
Kode kabupaten/kota BPS.
bps_district_codestring
Kode kecamatan BPS.
bps_village_codestring
Kode desa/kelurahan BPS.
kemendagri_province_codestring
Kode provinsi Kemendagri.
kemendagri_regency_codestring
Kode kabupaten/kota Kemendagri.
kemendagri_district_codestring
Kode kecamatan Kemendagri.
kemendagri_village_codestring
Kode desa/kelurahan Kemendagri.
pageinteger
Halaman. Default 1.
per_pageinteger
Jumlah per halaman. Maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/kodepos/lookup?kemendagri_village_code=32.73.01.1001" \\
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": [{
    "id": "kp_3273010001",
    "kode_pos": "40154",
    "bps_village_code": "3273010001",
    "kemendagri_village_code": "32.73.01.1001",
    "source_version": "2026.06",
    "crosswalk_source_version": "BPS Semester 1 2025 / Kemendagri 2025"
  }]
}
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_3273011001.
Request
curl "https://use.apiindonesia.id/api/v1/kodepos/kp_3273011001" \\
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "data": {
    "id": "kp_3273011001",
    "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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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 61 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 61 kode plat nomor kendaraan, diurutkan berdasarkan kode.

Request
curl "https://use.apiindonesia.id/api/v1/plates" \\
  -H "x-api-key: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY" -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: YOUR_API_KEY" -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: YOUR_API_KEY" -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: YOUR_API_KEY" -H "Content-Type: application/json" \
  -d '{"payload":"0002010102115204581253033605802ID5910TOKO CONTO6007JAKARTA630451E9"}'
Respons · 200 OK
{
  "success": true, "data": { "valid": true, "fields": [{ "id": "00", "length": 2, "value": "01" }, { "id": "01", "length": 2, "value": "11" }, { "id": "52", "length": 4, "value": "5812" }, { "id": "53", "length": 3, "value": "360" }, { "id": "58", "length": 2, "value": "ID" }, { "id": "59", "length": 10, "value": "TOKO CONTO" }, { "id": "60", "length": 7, "value": "JAKARTA" }, { "id": "63", "length": 4, "value": "51E9" }], "merchant_name": "TOKO CONTO", "merchant_city": "JAKARTA" }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/rupiah/parse

Parse Rupiah

Mengubah teks Rupiah menjadi angka.

Body (JSON)

textstringWajib
Teks Rupiah.
Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/rupiah/parse"   -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"text":"Rp125.000"}'
Respons · 200 OK
{ "success": true, "data": { "amount": 125000 } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/rupiah/terbilang

Terbilang Rupiah

Mengubah nominal menjadi teks.

Body (JSON)

amountnumberWajib
Nominal.
Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/rupiah/terbilang"   -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"amount":125000}'
Respons · 200 OK
{ "success": true, "data": { "terbilang": "seratus dua puluh lima ribu rupiah" } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/dummy/nik

Generator dummy NIK

Data sintetis untuk pengujian, bukan verifikasi resmi.

Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/dummy/nik" -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{}'
Respons · 200 OK
{ "data": {}, "meta": { "disclaimer": "Data sintetis untuk testing. Bukan data Dukcapil/DJP." } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/dummy/npwp

Generator dummy NPWP

Data sintetis untuk pengujian, bukan verifikasi resmi.

Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/dummy/npwp" -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{}'
Respons · 200 OK
{ "data": {}, "meta": { "disclaimer": "Data sintetis untuk testing. Bukan data Dukcapil/DJP." } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/dummy/telepon

Generator dummy TELEPON

Data sintetis untuk pengujian, bukan verifikasi resmi.

Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/dummy/telepon" -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{}'
Respons · 200 OK
{ "data": {}, "meta": { "disclaimer": "Data sintetis untuk testing. Bukan data Dukcapil/DJP." } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
POST/api/v1/util/qris/to-dynamic

QRIS dinamis

Menambahkan nominal ke QRIS statis dan menghitung ulang CRC.

Body (JSON)

payloadstringWajib
Payload QRIS statis.
amountnumberWajib
Nominal Rupiah.
feenumber
Biaya tambahan opsional.
Request
curl -X POST "https://use.apiindonesia.id/api/v1/util/qris/to-dynamic" -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"payload":"0002010102115204581253033605802ID5910TOKO CONTO6007JAKARTA630451E9","amount":50000}'
Respons · 200 OK
{ "success": true, "data": { "payload": "0002010102125204581253033605405500005802ID5910TOKO CONTO6007JAKARTA6304BB73" } }
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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. Satu kredit sama dengan Rp1, dan harganya dihitung per produk per hit: request data publik yang sukses memakai 2 kredit (Rp2). Request yang gagal tidak dikenakan biaya. Saldo AI berdiri sendiri dan dihitung per token, terpisah dari kredit ini.

GET/billing/plans

Daftar paket

Mengembalikan daftar paket, harga bulanan/tahunan, kuota kredit bulanan, dan rate limit yang tersedia, serta paket kredit pay as you go. Paket Free tidak punya jatah bulanan (monthlyQuota 0); bonus sekali 3.000 kredit diberikan setelah verifikasi email. Semua angka kredit adalah rupiah, karena satu kredit sama dengan Rp1.

Request
curl "https://use.apiindonesia.id/billing/plans"
Respons · 200 OK
{
  "data": {
    "plans": {
      "free": { "monthlyPrice": 0, "monthlyQuota": 0 },
      "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": 29000, "amount": 29000 },
      "standard": { "credits": 59000, "amount": 59000 },
      "growth": { "credits": 109000, "amount": 109000 },
      "scale": { "credits": 249000, "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, dan satu kredit sama dengan Rp1, jadi Pro bulanan memberi 50.000 kredit (Rp50.000).

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. Satu kredit sama dengan Rp1, jadi paket Rp59.000 memberi 59.000 kredit. 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": 59000,
    "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, harga per produk, dan 50 mutasi terakhir dari produk data publik. Satu kredit sama dengan Rp1: request data publik yang sukses memotong 2 kredit, dan request yang gagal dikembalikan otomatis.

Request
curl "https://use.apiindonesia.id/billing/credits" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Respons · 200 OK
{
  "data": {
    "balance": 48750,
    "credits_per_rupiah": 1,
    "cost_per_successful_request": 2,
    "free_monthly_included_credits": 0,
    "product_prices": {
      "default": { "credits": 2, "unit": "request" }
    },
    "ledger": [
      {
        "id": "8f1c...",
        "product": "api",
        "type": "usage",
        "amount": -2,
        "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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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: YOUR_API_KEY"
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.
Referensi APIx-api-key

Boundary Wilayah

GeoJSON batas wilayah provinsi hingga desa.

Sumber: open-admin-data/indonesia-administrative-divisions oleh jakkrapongt, versi 2026.06, CC BY 4.0. Pertahankan atribusi.

← Lihat landing page
GET/api/v1/wilayah-boundary

Daftar boundary

Metadata boundary aktif.

Query Parameter

levelstring
province, regency, district, village.
pageinteger
Halaman, default 1.
per_pageinteger
Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah-boundary?level=province" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "success": true, "data": [{ "code": "31", "name": "DKI Jakarta", "level": "province", "centroid_lat": -6.2, "centroid_lng": 106.8, "source_version": "2026.06", "license": "CC BY 4.0", "attribution": "Data boundary dari open-admin-data/indonesia-administrative-divisions oleh jakkrapongt, dilisensikan CC BY 4.0", "geometry_type": "MultiPolygon" }], "meta": { "page": 1, "per_page": 20, "total": 1, "total_pages": 1 } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah-boundary/:code/metadata

Metadata boundary

Sumber, lisensi, URL GeoJSON.

Path Parameter

codestringWajib
Kode bertitik, contoh 31.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah-boundary/31/metadata" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "success": true, "data": { "code": "31", "name": "DKI Jakarta", "level": "province", "source": "open-admin-data/indonesia-administrative-divisions", "source_version": "2026.06", "license": "CC BY 4.0", "attribution": "Data boundary dari open-admin-data/indonesia-administrative-divisions oleh jakkrapongt, dilisensikan CC BY 4.0", "geometry_type": "MultiPolygon", "status": "active", "url": "https://cdn.apiindonesia.id/api/v1/wilayah-boundary/31" } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/wilayah-boundary/:code

GeoJSON boundary

GeoJSON application/geo+json; header X-Data-* memuat sumber, versi, lisensi dan atribusi. Contoh geometri ilustratif.

Path Parameter

codestringWajib
Kode wilayah bertitik.
Request
curl "https://use.apiindonesia.id/api/v1/wilayah-boundary/31" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "type": "FeatureCollection", "features": [] }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Kualitas Udara

Daftar hanya bacaan yang di-cache hari ini; pencarian kota mengambil bacaan terakhir yang mungkin lebih lama.

Sumber per bacaan ada pada field source: BMKG-CAMS atau AQICN/WAQI. Periksa cached_at dan updated_at sebelum menganggap data terkini.

← Lihat landing page
GET/api/v1/kualitas-udara

Bacaan hari ini

Daftar dapat kosong.

Request
curl "https://use.apiindonesia.id/api/v1/kualitas-udara" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "success": true, "data": [] }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/kualitas-udara/:city

Bacaan kota terakhir

Pencarian sebagian nama kota, 404 jika tidak ditemukan.

Path Parameter

citystringWajib
Nama kota.
Request
curl "https://use.apiindonesia.id/api/v1/kualitas-udara/Jakarta" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{ "success": true, "data": { "city": "Jakarta", "aqi": 75, "source": "BMKG-CAMS", "cached_at": "2026-09-27 00:00:00" } }
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Harga Pangan & Indeks Anomali (Badan Pangan Nasional)

Data harga pangan resmi Badan Pangan Nasional: rata-rata harga bulanan tingkat konsumen (sejak 2021) dan produsen (sejak 2019), nasional maupun per provinsi. Seri harga terbuka terakhir yang tersedia sampai Januari 2026, bukan harga real-time, plus Indeks Anomali Harga (QIPA/AIPA/IFPA) untuk mendeteksi lonjakan/penurunan harga yang menyimpang. Bersumber dari Open Data Pangan BPN.

Sumber data: Badan Pangan Nasional, Open Data Pangan (data.badanpangan.go.id). Data mengikuti rilis resmi BPN dan dapat berubah sesuai pembaruan lembaga. API Indonesia menambahkan lapisan akses dan agregasi, bukan pengganti kanal resmi untuk pengambilan keputusan pemerintah.

← Lihat landing page
GET/api/v1/harga-pangan

Ringkasan seri harga pangan

Mengembalikan ringkasan tiap seri (tingkat konsumen/produsen x wilayah nasional/provinsi): jumlah komoditas, jumlah baris, dan rentang bulan yang tersedia.

Request
curl "https://use.apiindonesia.id/api/v1/harga-pangan" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "tingkat": "konsumen", "wilayah": "nasional", "komoditas": 46, "rows": 1146, "dari": "2021-01", "sampai": "2026-01" },
    { "tingkat": "konsumen", "wilayah": "provinsi", "komoditas": 27, "rows": 36348, "dari": "2021-01", "sampai": "2026-01" }
  ]
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/harga-pangan/harga

Cari harga pangan bulanan

Mengembalikan harga rata-rata bulanan komoditas pangan dengan filter tingkat, wilayah, komoditas, provinsi, dan rentang bulan. Harga dalam rupiah (INTEGER), "-" di sumber menjadi null.

Query Parameter

tingkatstring
tingkat=konsumen atau tingkat=produsen.
wilayahstring
wilayah=nasional atau wilayah=provinsi.
komoditasstring
Filter nama komoditas, contoh: beras premium (pencarian sebagian).
provinsistring
Filter provinsi berdasarkan nama atau kode, contoh: aceh atau 11.
daristring
Bulan awal, format yyyy-mm, contoh: 2025-01.
sampaistring
Bulan akhir, format yyyy-mm, contoh: 2026-01.
pageinteger
Halaman yang diambil. Default 1.
limitinteger
Jumlah data per halaman. Default 20, maks 100.
Request
curl "https://use.apiindonesia.id/api/v1/harga-pangan/harga?tingkat=konsumen&wilayah=nasional&komoditas=beras&dari=2025-01&sampai=2026-01&limit=3" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "tingkat": "konsumen", "wilayah": "nasional", "kode_provinsi": null, "provinsi": null, "komoditas": "Beras Premium", "tanggal": "2026-01", "harga": 16080, "harga_raw": "Rp16,080" },
    { "tingkat": "konsumen", "wilayah": "nasional", "kode_provinsi": null, "provinsi": null, "komoditas": "Beras Medium", "tanggal": "2026-01", "harga": 15100, "harga_raw": "Rp15,100" }
  ],
  "meta": { "total": 36, "page": 1, "per_page": 3, "total_pages": 12 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/harga-pangan/anomali

Indeks anomali harga pangan

Indeks Anomali Harga Pangan Strategis per komoditas (QIPA, AIPA, IFPA) beserta status Alert (Low/High Price) atau Normal. Berasal dari rilis bulanan Badan Pangan Nasional (periksa tanggal terbaru pada respons); bernilai untuk mendeteksi lonjakan atau penurunan harga yang menyimpang dari pola.

Query Parameter

komoditasstring
Filter nama komoditas, contoh: beras premium.
daristring
Bulan awal, format yyyy-mm.
sampaistring
Bulan akhir, format yyyy-mm.
pageinteger
Halaman yang diambil. Default 1.
limitinteger
Jumlah data per halaman. Default 20.
Request
curl "https://use.apiindonesia.id/api/v1/harga-pangan/anomali?komoditas=beras&limit=3" -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "tanggal": "2026-08", "komoditas": "Beras Premium", "qipa": -1.97, "aipa": -0.86, "ifpa": -1.30, "status": "Alert (Low Price)" }
  ],
  "meta": { "total": 105, "page": 1, "per_page": 20, "total_pages": 6 }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
Referensi APIx-api-key

Transjakarta (GTFS Resmi PT Transportasi Jakarta)

Kategori transportasi publik: rute bus Transjakarta beserta halte yang dilayani, pencarian halte terdekat dari sebuah koordinat, tarif, dan jadwal keberangkatan (headway) per rute. Datanya adalah GTFS statis resmi dari PT Transportasi Jakarta, yang dilisensikan CC BY 4.0 sehingga boleh dipakai ulang secara komersial asalkan atribusi disertakan.

Sumber data: GTFS Static Transjakarta (c) 2026 oleh PT Transportasi Jakarta, dilisensikan di bawah Creative Commons Attribution 4.0 International (CC BY 4.0). Pernyataan lisensi ada di https://ppid.transjakarta.co.id/informasi/berkala dan berkasnya diunduh dari https://gtfs.transjakarta.co.id/files/file_gtfs.zip. Karena lisensi itu mewajibkan atribusi, tautan lisensi, dan penandaan perubahan, setiap respons sukses menyertakan meta.attribution berisi nama penerbit, nama lisensi, tautan lisensi, tautan berkas sumber, halaman pernyataan lisensi, serta penandaan perubahan "Data diubah: dinormalisasi ke format JSON API Indonesia" — jadi Anda tidak perlu menyusun atribusi sendiri, cukup teruskan objek tersebut pada setiap penyajian ulang. Yang diubah API Indonesia: GTFS dinormalisasi ke JSON, baris stop_times diringkas menjadi satu daftar halte per rute dan arah, dan shapes.txt (geometri) tidak disertakan pada versi ini.

← Lihat landing page
GET/api/v1/transjakarta/rute

Daftar rute

Mengembalikan 240 rute Transjakarta dengan nama pendek dan nama panjang, deskripsi jenis layanan (BRT, Angkutan Umum Integrasi, Mikrotrans, Transjabodetabek, Bus Wisata), tipe rute GTFS, warna korporat beserta warna teksnya, dan jumlah halte unik yang dilayani rute tersebut (dihitung dari kedua arah, bukan jumlah baris).

Query Parameter

qstring
Cari nama rute, sebagian dan tanpa membedakan huruf besar/kecil, contoh: blok (23 rute).
pageinteger
Halaman yang diambil. Default 1; halaman yang terlalu dalam dijawab 400 PAGINATION_LIMIT.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/rute?q=blok&per_page=2" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "id": "1", "short_name": "1", "long_name": "Blok M - Kota", "description": "BRT", "route_type": 3, "color": "D62126", "text_color": "FFFFFF", "jumlah_halte": 59 },
    { "id": "1C", "short_name": "1C", "long_name": "Pesanggrahan - Blok M", "description": "Angkutan Umum Integrasi", "route_type": 3, "color": "D65E62", "text_color": "000000", "jumlah_halte": 76 }
  ],
  "meta": {
    "total": 23,
    "page": 1,
    "per_page": 2,
    "total_pages": 12,
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/transjakarta/rute/:id

Detail rute

Satu rute lengkap dengan tarif yang berlaku untuknya (dari fare_rules), frekuensi keberangkatan (headway per trip), dan daftar halte kedua arah: "ke" untuk direction_id 0 dan "kembali" untuk direction_id 1, masing-masing urut menaik menurut stop_sequence. Rute yang tidak dikenal dijawab 404 NOT_FOUND. Rilis resminya tidak memuat geometri jalan, jadi jarak tempuh per ruas tidak tersedia di sini.

Path Parameter

idstringWajib
ID rute, contoh: 1, 1C, 10A, atau JAK.79.
Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/rute/1" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": {
    "id": "1",
    "short_name": "1",
    "long_name": "Blok M - Kota",
    "description": "BRT",
    "route_type": 3,
    "color": "D62126",
    "text_color": "FFFFFF",
    "tarif": [
      { "id": "FP", "price": 3500, "currency": "IDR" }
    ],
    "frekuensi": [
      { "trip_id": "1-P23", "start_time": "00:00:00", "end_time": "23:59:59", "headway_secs": 900 },
      { "trip_id": "1-P28", "start_time": "00:00:00", "end_time": "23:59:59", "headway_secs": 900 }
    ],
    "halte": {
      "ke": [
        { "stop_id": "P00017", "name": "Blok M", "lat": -6.243312, "lng": 106.80175, "stop_sequence": 0 },
        { "stop_id": "G00012", "name": "Asean", "lat": -6.239911, "lng": 106.79897, "stop_sequence": 1 }
      ],
      "kembali": [
        { "stop_id": "G00060", "name": "Kali Besar", "lat": -6.135355, "lng": 106.81143, "stop_sequence": 0 },
        { "stop_id": "G00064", "name": "Museum Sejarah Jakarta", "lat": -6.133882, "lng": 106.81214, "stop_sequence": 1 }
      ]
    }
  },
  "meta": {
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/transjakarta/halte

Daftar halte

Mengembalikan 8.091 halte Transjakarta dengan kode, nama, koordinat, dan tipe halte GTFS. Filter q mencocokkan nama, kode, atau ID halte secara sebagian.

Query Parameter

qstring
Cari halte berdasarkan nama, kode, atau ID, contoh: monas atau B02475P.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/halte?q=monas&per_page=3" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "id": "B02475P", "code": null, "name": "Monas 1", "lat": -6.172531, "lng": 106.82315, "stop_type": 0 },
    { "id": "B02476P", "code": null, "name": "Monas 2", "lat": -6.175999, "lng": 106.82311, "stop_type": 0 },
    { "id": "B02477P", "code": null, "name": "Monas 3", "lat": -6.178787, "lng": 106.82304, "stop_type": 0 }
  ],
  "meta": {
    "total": 3,
    "page": 1,
    "per_page": 3,
    "total_pages": 1,
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/transjakarta/halte/nearby

Halte terdekat

Mencari halte di sekitar sebuah koordinat, hasilnya urut dari yang paling dekat dengan jarak meter (distance_m). Pencarian memakai kotak pembatas lebih dulu lalu jarak lingkaran besar yang tepat, jadi radius 5 km tetap murah. Radius default 1.000 meter (maksimum 5.000) dan limit default 20 (maksimum 100); lat atau lng yang hilang/bukan angka, radius di luar 1-5.000, atau limit di luar 1-100 dijawab 400 VALIDATION_ERROR.

Query Parameter

latnumberWajib
Lintang titik acuan, -90 sampai 90, contoh: -6.172531.
lngnumberWajib
Bujur titik acuan, -180 sampai 180, contoh: 106.82315.
radiusinteger
Radius pencarian dalam meter, 1 sampai 5.000. Default 1.000.
limitinteger
Jumlah halte maksimum yang dikembalikan, 1 sampai 100. Default 20.
Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/halte/nearby?lat=-6.172531&lng=106.82315&radius=1000&limit=3" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "id": "B02475P", "code": null, "name": "Monas 1", "lat": -6.172531, "lng": 106.82315, "stop_type": 0, "distance_m": 0 },
    { "id": "B01649P", "code": null, "name": "Jln. Tanah Abang I", "lat": -6.173433, "lng": 106.8214, "stop_type": 0, "distance_m": 218 },
    { "id": "B02983P", "code": null, "name": "PPI", "lat": -6.170855, "lng": 106.82136, "stop_type": 0, "distance_m": 272 }
  ],
  "meta": {
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/transjakarta/halte/:id

Detail halte

Satu halte beserta rute yang berhenti di sana, satu baris per kombinasi rute dan arah (direction_id). Halte yang dilayani dua arah akan muncul dua kali, dan halte tujuan wisata bisa dilayani beberapa rute. Halte yang tidak dikenal dijawab 404 NOT_FOUND.

Path Parameter

idstringWajib
ID halte, contoh: B02475P.
Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/halte/B02475P" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": {
    "id": "B02475P",
    "code": null,
    "name": "Monas 1",
    "lat": -6.172531,
    "lng": 106.82315,
    "stop_type": 0,
    "rute": [
      { "route_id": "BW2", "short_name": "BW2", "long_name": "Monas Explorer", "direction_id": 0 },
      { "route_id": "BW4", "short_name": "BW4", "long_name": "Pencakar Langit", "direction_id": 0 }
    ]
  },
  "meta": {
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/transjakarta/tarif

Daftar tarif

Enam tarif GTFS beserta harganya dalam rupiah: FP (Rp3.500, tarif flat Transjakarta), GR (Rp0, gratis untuk rute tertentu), PP (Rp20.000) dan PP2/PP3 untuk layanan bandara, plus jumlah transfer yang diizinkan (kosong berarti tarif berlaku sekali jalan). Endpoint ini tidak berpaginasi, jadi meta hanya berisi atribusi.

Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/tarif" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "id": "GR", "price": 0, "currency": "IDR", "payment_method": 0, "transfers": null, "transfer_duration": 10800 },
    { "id": "FP", "price": 3500, "currency": "IDR", "payment_method": 0, "transfers": null, "transfer_duration": 10800 },
    { "id": "FP2", "price": 3500, "currency": "IDR", "payment_method": 0, "transfers": 1, "transfer_duration": 10800 },
    { "id": "PP", "price": 20000, "currency": "IDR", "payment_method": 0, "transfers": null, "transfer_duration": 10800 },
    { "id": "PP2", "price": 25000, "currency": "IDR", "payment_method": 0, "transfers": null, "transfer_duration": 10800 },
    { "id": "PP3", "price": 35000, "currency": "IDR", "payment_method": 0, "transfers": null, "transfer_duration": 10800 }
  ],
  "meta": {
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.
GET/api/v1/transjakarta/jadwal

Jadwal keberangkatan (headway)

Frekuensi keberangkatan dari GTFS frequencies.txt: satu baris per trip yang melayani rute tersebut, berisi rentang waktu operasi dan headway dalam detik (misalnya 900 detik berarti bus tiap 15 menit). Filter rute membatasi hasil ke satu rute; rute yang tidak punya baris frekuensi dijawab daftar kosong, bukan 404. Jam ditampilkan sebagai string "HH:MM:SS" apa adanya dari sumber, sehingga bisa melewati 24:00:00 untuk layanan malam.

Query Parameter

rutestring
ID rute untuk membatasi hasil, contoh: 10A.
pageinteger
Halaman yang diambil. Default 1.
per_pageinteger
Jumlah data per halaman. Default 20, maksimum 100.
Request
curl "https://use.apiindonesia.id/api/v1/transjakarta/jadwal?rute=10A" \
  -H "x-api-key: YOUR_API_KEY"
Respons · 200 OK
{
  "success": true,
  "data": [
    { "trip_id": "10A-L02", "route_id": "10A", "start_time": "05:00:00", "end_time": "22:00:00", "headway_secs": 2180, "exact_times": 0 },
    { "trip_id": "10A-R01", "route_id": "10A", "start_time": "05:00:00", "end_time": "22:00:00", "headway_secs": 1200, "exact_times": 0 }
  ],
  "meta": {
    "total": 2,
    "page": 1,
    "per_page": 20,
    "total_pages": 1,
    "attribution": {
      "source": "PT Transportasi Jakarta (Transjakarta) GTFS",
      "license": "CC BY 4.0",
      "license_url": "https://creativecommons.org/licenses/by/4.0/",
      "source_url": "https://gtfs.transjakarta.co.id/files/file_gtfs.zip",
      "attribution_page": "https://ppid.transjakarta.co.id/informasi/berkala",
      "notice": "Data diubah: dinormalisasi ke format JSON API Indonesia"
    }
  }
}
Coba endpoint
Siap dikirim
Respons akan tampil di sini.

Siap membangun?

Daftar gratis dan dapatkan bonus 3.000 kredit (Rp3.000) setelah email diverifikasi. Tanpa kartu kredit, tanpa komitmen.