← Blog
Artikel

API Kalender Indonesia: Integrasi Hari Libur Nasional untuk HR, Payroll, dan Aplikasi

Ambil daftar hari libur nasional, hari besar keagamaan, dan cuti bersama via REST API berbasis SKB 3 Menteri. Hitung hari kerja efektif tanpa update manual tiap tahun.

Setiap awal tahun, tim HR dan developer aplikasi internal menjalankan ritual yang sama: menyalin daftar tanggal merah dari berita, mengetiknya ke spreadsheet atau tabel database, lalu berdoa tidak ada yang salah ketik. Masalahnya, SKB 3 Menteri bisa terbit belakangan, cuti bersama bisa berubah, dan satu tanggal yang terlewat cukup untuk merusak perhitungan payroll atau jadwal SLA.

API Kalender Indonesia dari API Indonesia menyelesaikan ini: daftar hari libur nasional, hari besar keagamaan, dan cuti bersama yang bersumber dari SKB 3 Menteri, diakses lewat REST API. Tidak ada lagi update manual tiap tahun.

Endpoint yang Dipakai

Base URL: https://use.apiindonesia.id/api/v1/libur

Method Endpoint Parameter Keterangan
GET / tahun, bulan (dua digit) Daftar hari libur, bisa difilter per tahun dan bulan
GET /upcoming tanpa parameter Maksimal 10 hari libur berikutnya dari hari ini
GET /:id ID hari libur Detail satu hari libur, contoh: hol_2026_014

Field penting di respons: date, name, type (misal nasional), dan is_joint_leave yang menandai cuti bersama.

Contoh Request dan Response

Ambil semua hari libur tahun 2026:

curl "https://use.apiindonesia.id/api/v1/libur?tahun=2026" \
  -H "x-api-key: aip_li...x"

Response:

{
  "data": [
    {
      "id": "hol_2026_001",
      "date": "2026-01-01",
      "name": "Tahun Baru 2026 Masehi",
      "type": "nasional",
      "is_joint_leave": 0,
      "source": "SKB 3 Menteri"
    }
  ]
}

Untuk banner "libur berikutnya" di dashboard karyawan:

curl "https://use.apiindonesia.id/api/v1/libur/upcoming" \
  -H "x-api-key: aip_li...x"

Integrasi ke Sistem HR/Payroll

Kasus paling umum: menghitung hari kerja efektif dalam satu bulan untuk prorata gaji, jatah cuti, atau SLA tiket.

import requests
from datetime import date, timedelta

def working_days(api_key: str, year: int, month: int) -> int:
    r = requests.get(
        "https://use.apiindonesia.id/api/v1/libur",
        params={"tahun": year, "bulan": f"{month:02d}"},
        headers={"x-api-key": api_key},
    )
    r.raise_for_status()
    holidays = {row["date"] for row in r.json()["data"]}

    first = date(year, month, 1)
    if month == 12:
        nxt = date(year + 1, 1, 1)
    else:
        nxt = date(year, month + 1, 1)

    count = 0
    d = first
    while d < nxt:
        if d.weekday() < 5 and d.isoformat() not in holidays:
            count += 1
        d += timedelta(days=1)
    return count

print(working_days("aip_live_xxx", 2026, 6))

Versi JavaScript untuk aplikasi Node:

async function isWorkingDay(dateStr) {
  const url = `https://use.apiindonesia.id/api/v1/libur?tahun=${dateStr.slice(0, 4)}&bulan=${dateStr.slice(5, 7)}`;
  const res = await fetch(url, {
    headers: { "x-api-key": process.env.API_INDONESIA_KEY },
  });
  const { data } = await res.json();
  const day = new Date(dateStr + "T00:00:00+07:00").getDay();
  const isWeekend = day === 0 || day === 6;
  const isHoliday = data.some((h) => h.date === dateStr);
  return !isWeekend && !isHoliday;
}

Pola yang Sering Dibutuhkan

  • Payroll: hitung hari kerja efektif untuk prorata gaji karyawan yang masuk/keluar di tengah bulan.
  • HR-tech: validasi pengajuan cuti, tolak tanggal yang jatuh di hari libur atau cuti bersama.
  • Logistik dan SLA: hitung tanggal jatuh tempo dengan memperhitungkan tanggal merah, bukan asumsi 30 hari flat.
  • Aplikasi kalender: sinkronkan hari libur ke kalender pengguna dengan job harian yang memanggil /upcoming. Kalau aplikasi Anda menyasar pengguna Muslim, pasangkan juga dengan API Jadwal Sholat untuk 514 kabupaten/kota agar reminder ibadah ikut menghormati hari besar keagamaan.

Catatan Teknis

  • Auth pakai header x-api-key, sama seperti produk API Indonesia lainnya.
  • Simpan source dari respons di log Anda untuk audit; sumbernya SKB 3 Menteri.
  • Cache respons per tahun, hari libur jarang berubah setelah SKB terbit. Tetap refresh berkala untuk menangkap revisi cuti bersama.
  • Field is_joint_leave bernilai 1 untuk cuti bersama; sebagian perusahaan memperlakukannya beda dari libur nasional murni.

FAQ

Apakah mencakup cuti bersama? Ya, ditandai lewat field is_joint_leave.

Tahun yang didukung? Mengikuti terbitnya SKB 3 Menteri; filter tahun yang tersedia di dataset, contoh: 2026.

Berapa biayanya? Tier Free 1.000 hits/bulan, cukup untuk job harian dan environment staging.

Mulai Sekarang

Pelajari detail parameter di halaman produk API Hari Libur, dapatkan API key gratis di dashboard.apiindonesia.id/register, dan baca referensi lengkap di docs.apiindonesia.id.

Mulai Sekarang

Mulai Integrasi
Hari Ini

Daftar gratis, ambil API key, dan langsung call endpoint pertama Anda — tanpa kartu kredit, tanpa proses approval yang ribet.

Visualisasi gelombang titik