Dokumentasi API Jadwal Salat
Rujukan teknis lengkap: endpoint, parameter, contoh balasan, contoh kode, dan arti setiap kode galat.
Memulai
Seluruh endpoint hanya membaca, memakai metode GET, dan membalas JSON. Alamat dasarnya:
https://sihat.kemenag.dev/api/v1/publicSimpan 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.
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.
/api/v1/public/wilayah/provinsiDaftar Provinsi
38 provinsi beserta kode nasionalnya.
Daftar ini jarang berubah. Unduh sekali, simpan di sisi Anda, dan segarkan paling sering sebulan sekali.
curl -s "https://sihat.kemenag.dev/api/v1/public/wilayah/provinsi" \
-H "Authorization: Bearer $SIHAT_TOKEN"Contoh balasan
{
"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.
/api/v1/public/wilayah/kabupatenDaftar Kabupaten/Kota
514 kabupaten/kota, dapat disaring per provinsi.
| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| provinsi | angka | Tidak | Kode provinsi, 2 digit. Dikosongkan berarti seluruh Indonesia. |
curl -s "https://sihat.kemenag.dev/api/v1/public/wilayah/kabupaten?provinsi=31" \
-H "Authorization: Bearer $SIHAT_TOKEN"Contoh balasan
{
"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.
/api/v1/public/wilayah/kecamatanDaftar Kecamatan
Kecamatan pada satu kabupaten/kota.
Kecamatan wajib disaring per kabupaten/kota — seluruh Indonesia berisi lebih dari tujuh ribu baris dan tidak dilayani sekaligus.
| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| kabupaten | angka | Ya | Kode kabupaten/kota, 4 digit. |
curl -s "https://sihat.kemenag.dev/api/v1/public/wilayah/kecamatan?kabupaten=3171" \
-H "Authorization: Bearer $SIHAT_TOKEN"Contoh balasan
{
"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.
/api/v1/public/jadwal-salat/harianJadwal 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.
| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| wilayah | angka | Ya | Kode kabupaten/kota (4 digit) atau kecamatan (6 digit). |
| tanggal | tanggal | Tidak | YYYY-MM-DD. Dikosongkan berarti hari ini menurut zona waktu wilayah tersebut. |
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
{
"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.
/api/v1/public/jadwal-salat/bulananJadwal 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.
| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| wilayah | angka | Ya | Kode kabupaten/kota (4 digit) atau kecamatan (6 digit). |
| tahun | angka | Ya | Empat digit. |
| bulan | angka | Ya | 1 sampai 12. |
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
{
"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.
/api/v1/public/imsakiyahJadwal 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.
| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| wilayah | angka | Ya | Kode kabupaten/kota (4 digit) atau kecamatan (6 digit). |
| tahun | angka | Ya | Tahun HIJRIAH empat angka, mis. 1447. |
curl -s "https://sihat.kemenag.dev/api/v1/public/imsakiyah?wilayah=3171&tahun=1447" \
-H "Authorization: Bearer $SIHAT_TOKEN"Contoh balasan
{
"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.
| Kode | Sebab | Artinya | Yang Perlu Dilakukan |
|---|---|---|---|
| 401 | token_tidak_sah | Token tidak disertakan, tidak dikenal, atau sudah dicabut. | Periksa ejaan token. Bila yakin benar, hubungi Subdit Hisab dan Rukyat. |
| 403 | ip_tidak_terdaftar | Permintaan 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. |
| 403 | token_nonaktif | Token dihentikan sementara. | Hubungi Subdit Hisab dan Rukyat untuk mengaktifkannya kembali. Token ini masih bisa hidup lagi, jadi tidak perlu mengajukan yang baru. |
| 403 | token_dicabut | Token sudah dicabut dan tidak akan hidup lagi. | Berhenti mencobanya — pengulangan tidak akan berhasil. Ajukan permohonan akses baru bila masih memerlukannya. |
| 403 | token_kedaluwarsa | Masa berlaku token sudah lewat. | Ajukan perpanjangan dengan menyebutkan nomor tiket Anda. |
| 404 | wilayah_tidak_ditemukan | Kode wilayah tidak ada. | Ambil kode dari endpoint daftar wilayah, jangan disusun sendiri. |
| 422 | isian_keliru | Ada parameter yang salah nama, kosong, atau di luar rentang. | Balasannya memuat errors yang menyebut isian mana yang bermasalah beserta alasannya, satu per satu. |
| 429 | kuota_menit_habis | Kuota 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. |
| 429 | kuota_harian_habis | Kuota harian terlampaui. | Kuota berganti pukul 00:00 WIB. Ajukan kenaikan bila pemakaian wajarnya memang sebesar itu. |
| 503 | sumber_terganggu | Sumber perhitungan falak sedang tidak dapat dihubungi. | Coba lagi beberapa saat kemudian. Jadwal yang sudah Anda simpan tetap sah dipakai. |
| 404 | taqwim_belum_terbit | Awal 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. |


