Lompat ke konten

Dokumentasi API Jadwal Salat

Rujukan teknis lengkap: endpoint, parameter, contoh balasan, contoh kode, dan arti setiap kode galat.

Ajukan Akses

Memulai

Seluruh endpoint hanya membaca, memakai metode GET, dan membalas JSON. Alamat dasarnya:

alamat dasar
https://sihat.kemenag.dev/api/v1/public

Simpan hasilnya di sisi Anda

Jadwal untuk satu tanggal tidak pernah berubah. Mengunduh sekali lalu menyimpannya membuat halaman Anda lebih cepat, hemat kuota, dan tetap jalan ketika layanan ini sedang terganggu. Unduh per bulan — bukan bertahun-tahun dalam satu permintaan.

Spesifikasi lengkapnya tersedia dalam bentuk OpenAPI 3.0, siap diimpor ke Postman atau dipakai membangkitkan kode klien: jadwal-salat.json

Menyertakan Token

Setiap permintaan wajib menyertakan token, dengan salah satu dari dua cara berikut. Keduanya setara — pakai yang lebih mudah di klien Anda.

tajuk permintaan
Authorization: Bearer sihat_a1b2c3…

# atau

X-API-Key: sihat_a1b2c3…

Daftar Alamat IP

Bila alamat IP didaftarkan pada token Anda, permintaan dari alamat lain ditolak. Pesan penolakannya menyebut alamat yang terlihat oleh layanan — pakai alamat itu saat meminta pendaftaran, karena perangkat jaringan di jalur sering menggantinya.

Sisa Kuota

Setiap balasan membawa X-RateLimit-Remaining. Pantau angka itu, dan perlambat sebelum habis — jangan menunggu balasan 429.

Dipakai hanya untuk tombol “Jalankan” di halaman ini. Token tidak disimpan di mana pun dan hilang begitu halaman ditutup.

GET/api/v1/public/wilayah/provinsi

Daftar Provinsi

38 provinsi beserta kode nasionalnya.

Daftar ini jarang berubah. Unduh sekali, simpan di sisi Anda, dan segarkan paling sering sebulan sekali.

curl
curl -s "https://sihat.kemenag.dev/api/v1/public/wilayah/provinsi" \
  -H "Authorization: Bearer $SIHAT_TOKEN"

Contoh balasan

200 OK
{
  "status": "ok",
  "data": [
    { "kode": 11, "nama": "Aceh" },
    { "kode": 12, "nama": "Sumatera Utara" },
    { "kode": 31, "nama": "Daerah Khusus Ibukota Jakarta" }
  ],
  "sumber": "Ditjen Bimas Islam, Kementerian Agama RI"
}

/api/v1/public/wilayah/provinsi

Tempel token Anda di bagian atas halaman untuk menjalankan contoh ini.

GET/api/v1/public/wilayah/kabupaten

Daftar Kabupaten/Kota

514 kabupaten/kota, dapat disaring per provinsi.

ParameterJenisWajibKeterangan
provinsiangkaTidakKode provinsi, 2 digit. Dikosongkan berarti seluruh Indonesia.
curl
curl -s "https://sihat.kemenag.dev/api/v1/public/wilayah/kabupaten?provinsi=31" \
  -H "Authorization: Bearer $SIHAT_TOKEN"

Contoh balasan

200 OK
{
  "status": "ok",
  "data": [
    { "kode": 3171, "kode_provinsi": 31, "nama": "Kota Administrasi Jakarta Pusat" },
    { "kode": 3172, "kode_provinsi": 31, "nama": "Kota Administrasi Jakarta Utara" }
  ],
  "sumber": "Ditjen Bimas Islam, Kementerian Agama RI"
}

/api/v1/public/wilayah/kabupaten?provinsi=31

Tempel token Anda di bagian atas halaman untuk menjalankan contoh ini.

GET/api/v1/public/wilayah/kecamatan

Daftar Kecamatan

Kecamatan pada satu kabupaten/kota.

Kecamatan wajib disaring per kabupaten/kota — seluruh Indonesia berisi lebih dari tujuh ribu baris dan tidak dilayani sekaligus.

ParameterJenisWajibKeterangan
kabupatenangkaYaKode kabupaten/kota, 4 digit.
curl
curl -s "https://sihat.kemenag.dev/api/v1/public/wilayah/kecamatan?kabupaten=3171" \
  -H "Authorization: Bearer $SIHAT_TOKEN"

Contoh balasan

200 OK
{
  "status": "ok",
  "data": [
    { "kode": 317101, "kode_kabupaten": 3171, "nama": "Gambir" },
    { "kode": 317102, "kode_kabupaten": 3171, "nama": "Sawah Besar" }
  ],
  "sumber": "Ditjen Bimas Islam, Kementerian Agama RI"
}

/api/v1/public/wilayah/kecamatan?kabupaten=3171

Tempel token Anda di bagian atas halaman untuk menjalankan contoh ini.

GET/api/v1/public/jadwal-salat/harian

Jadwal Satu Hari

Delapan waktu untuk satu tanggal pada satu wilayah.

Hasil untuk satu tanggal tidak pernah berubah, jadi aman disimpan selamanya. Kode kecamatan memberi titik yang lebih tepat daripada kode kabupaten/kota, terutama pada wilayah yang luas. Balasannya memuat tanggal Hijriah: medan ketetapan bernilai resmi bila berasal dari Kalender Hijriah Indonesia hasil sidang isbat, dan perkiraan bila dihitung Ummul Qura — yang dapat meleset satu hari dari ketetapan.

ParameterJenisWajibKeterangan
wilayahangkaYaKode kabupaten/kota (4 digit) atau kecamatan (6 digit).
tanggaltanggalTidakYYYY-MM-DD. Dikosongkan berarti hari ini menurut zona waktu wilayah tersebut.
curl
curl -s "https://sihat.kemenag.dev/api/v1/public/jadwal-salat/harian?wilayah=3171&tanggal=2026-10-10" \
  -H "Authorization: Bearer $SIHAT_TOKEN"

Contoh balasan

200 OK
{
  "status": "ok",
  "data": {
    "tanggal": "Sabtu, 10 Oktober 2026",
    "imsak":   "04:08",
    "subuh":   "04:18",
    "terbit":  "05:30",
    "duha":    "05:57",
    "zuhur":   "11:43",
    "ashar":   "14:44",
    "maghrib": "17:49",
    "isya":    "18:58",
    "tanggal_masehi": "2026-10-10",
    "hijriah": {
      "tahun": 1448, "bulan": 4, "hari": 28,
      "nama_bulan": "Rabiulakhir",
      "teks": "28 Rabiulakhir 1448 H",
      "ketetapan": "resmi"
    }
  },
  "wilayah": {
    "kode": 3171,
    "nama": "Kota Administrasi Jakarta Pusat",
    "tingkat": "kabupaten",
    "zona_waktu": "UTC+7"
  },
  "sumber": "Ditjen Bimas Islam, Kementerian Agama RI"
}

/api/v1/public/jadwal-salat/harian?wilayah=3171&tanggal=2026-10-10

Tempel token Anda di bagian atas halaman untuk menjalankan contoh ini.

GET/api/v1/public/jadwal-salat/bulanan

Jadwal Satu Bulan

Satu bulan penuh dalam satu permintaan.

Untuk menyiapkan jadwal beberapa tahun ke depan, panggil endpoint ini berulang per bulan. Satu permintaan per bulan jauh lebih andal daripada satu permintaan raksasa yang mudah putus di tengah jalan. Tiap baris memuat tanggal Hijriahnya beserta medan ketetapan.

ParameterJenisWajibKeterangan
wilayahangkaYaKode kabupaten/kota (4 digit) atau kecamatan (6 digit).
tahunangkaYaEmpat digit.
bulanangkaYa1 sampai 12.
curl
curl -s "https://sihat.kemenag.dev/api/v1/public/jadwal-salat/bulanan?wilayah=3171&tahun=2026&bulan=10" \
  -H "Authorization: Bearer $SIHAT_TOKEN"

Contoh balasan

200 OK
{
  "status": "ok",
  "data": [
    { "tanggal": "Kamis, 1 Oktober 2026", "tanggal_masehi": "2026-10-01",
      "imsak": "04:11", "subuh": "04:21", "zuhur": "11:44", "ashar": "14:52", "maghrib": "17:47", "isya": "18:56",
      "hijriah": { "tahun": 1448, "bulan": 4, "hari": 19, "nama_bulan": "Rabiulakhir", "teks": "19 Rabiulakhir 1448 H", "ketetapan": "resmi" } },
    { "tanggal": "Jumat, 2 Oktober 2026", "tanggal_masehi": "2026-10-02",
      "imsak": "04:11", "subuh": "04:21", "zuhur": "11:44", "ashar": "14:51", "maghrib": "17:47", "isya": "18:56",
      "hijriah": { "tahun": 1448, "bulan": 4, "hari": 20, "nama_bulan": "Rabiulakhir", "teks": "20 Rabiulakhir 1448 H", "ketetapan": "resmi" } }
  ],
  "wilayah": { "kode": 3171, "nama": "Kota Administrasi Jakarta Pusat", "tingkat": "kabupaten", "zona_waktu": "UTC+7" },
  "sumber": "Ditjen Bimas Islam, Kementerian Agama RI"
}

/api/v1/public/jadwal-salat/bulanan?wilayah=3171&tahun=2026&bulan=10

Tempel token Anda di bagian atas halaman untuk menjalankan contoh ini.

GET/api/v1/public/imsakiyah

Jadwal Imsakiyah Ramadan

Seluruh hari Ramadan dalam satu permintaan, bernomor hari ke-1 sampai ke-30.

Tahunnya HIJRIAH, bukan Masehi — tulis 1447, bukan 2026. Rentang Ramadannya diambil dari taqwim resmi yang ditetapkan melalui sidang isbat, bukan dihitung; untuk tahun yang taqwimnya belum terbit endpoint ini menjawab 404 dengan sebab taqwim_belum_terbit dan menyebutkan tahun yang sudah tersedia. Ia sengaja tidak mengarang perkiraan, sebab imsakiyah adalah tabel yang dicetak lalu ditempel di masjid.

ParameterJenisWajibKeterangan
wilayahangkaYaKode kabupaten/kota (4 digit) atau kecamatan (6 digit).
tahunangkaYaTahun HIJRIAH empat angka, mis. 1447.
curl
curl -s "https://sihat.kemenag.dev/api/v1/public/imsakiyah?wilayah=3171&tahun=1447" \
  -H "Authorization: Bearer $SIHAT_TOKEN"

Contoh balasan

200 OK
{
  "status": "ok",
  "data": {
    "tahun_hijriah": 1447,
    "mulai": "2026-02-19",
    "selesai": "2026-03-20",
    "jumlah_hari": 30,
    "ketetapan": "resmi",
    "hari": [
      { "hari_ramadan": 1, "tanggal": "2026-02-19",
        "hijriah": { "tahun": 1447, "bulan": 9, "hari": 1, "nama_bulan": "Ramadan", "teks": "1 Ramadan 1447 H", "ketetapan": "resmi" },
        "imsak": "04:26", "subuh": "04:36", "terbit": "05:52", "duha": "06:20", "zuhur": "12:10", "ashar": "15:29", "maghrib": "18:20", "isya": "19:33" },
      { "hari_ramadan": 2, "tanggal": "2026-02-20",
        "hijriah": { "tahun": 1447, "bulan": 9, "hari": 2, "nama_bulan": "Ramadan", "teks": "2 Ramadan 1447 H", "ketetapan": "resmi" },
        "imsak": "04:26", "subuh": "04:36", "terbit": "05:52", "duha": "06:20", "zuhur": "12:10", "ashar": "15:29", "maghrib": "18:20", "isya": "19:33" }
    ]
  },
  "wilayah": { "kode": 3171, "nama": "Kota Administrasi Jakarta Pusat", "tingkat": "kabupaten", "zona_waktu": "UTC+7" },
  "sumber": "Ditjen Bimas Islam, Kementerian Agama RI"
}

/api/v1/public/imsakiyah?wilayah=3171&tahun=1447

Tempel token Anda di bagian atas halaman untuk menjalankan contoh ini.

Kode Galat

Balasan galat selalu JSON dan selalu memuat sebab. Pakai sebab untuk mengambil keputusan di program Anda, bukan teks pesannya — pesan dapat diperbaiki kalimatnya, sebab tidak berubah.

KodeSebabArtinyaYang Perlu Dilakukan
401token_tidak_sahToken tidak disertakan, tidak dikenal, atau sudah dicabut.Periksa ejaan token. Bila yakin benar, hubungi Subdit Hisab dan Rukyat.
403ip_tidak_terdaftarPermintaan datang dari alamat IP yang tidak terdaftar pada token Anda.Pesan galatnya menyebut alamat yang terlihat oleh layanan. Pakai alamat itu saat meminta pendaftaran — bukan alamat yang Anda lihat di peladen sendiri, karena perangkat jaringan di jalur sering menggantinya.
403token_nonaktifToken dihentikan sementara.Hubungi Subdit Hisab dan Rukyat untuk mengaktifkannya kembali. Token ini masih bisa hidup lagi, jadi tidak perlu mengajukan yang baru.
403token_dicabutToken sudah dicabut dan tidak akan hidup lagi.Berhenti mencobanya — pengulangan tidak akan berhasil. Ajukan permohonan akses baru bila masih memerlukannya.
403token_kedaluwarsaMasa berlaku token sudah lewat.Ajukan perpanjangan dengan menyebutkan nomor tiket Anda.
404wilayah_tidak_ditemukanKode wilayah tidak ada.Ambil kode dari endpoint daftar wilayah, jangan disusun sendiri.
422isian_keliruAda parameter yang salah nama, kosong, atau di luar rentang.Balasannya memuat errors yang menyebut isian mana yang bermasalah beserta alasannya, satu per satu.
429kuota_menit_habisKuota per menit terlampaui.Tunggu sesuai Retry-After. Bila sering terjadi, simpan hasilnya di sisi Anda — bukan menaikkan kuota, karena jadwal yang sama diminta berulang kali.
429kuota_harian_habisKuota harian terlampaui.Kuota berganti pukul 00:00 WIB. Ajukan kenaikan bila pemakaian wajarnya memang sebesar itu.
503sumber_tergangguSumber perhitungan falak sedang tidak dapat dihubungi.Coba lagi beberapa saat kemudian. Jadwal yang sudah Anda simpan tetap sah dipakai.
404taqwim_belum_terbitAwal Ramadan tahun itu belum ditetapkan, sehingga imsakiyahnya belum dapat diterbitkan. Tanggalnya ditetapkan melalui sidang isbat, bukan dihitung.Pakai tahun yang disebutkan pada pesan galat. Jangan menghitung sendiri tanggal mulainya — perkiraan hisab dapat meleset satu hari, dan seluruh tabel ikut bergeser.