API hari libur Indonesia dan perhitungan hari kerja, dikurasi dari sumber resmi publik.
Titimangsa provides curated Indonesian national holiday, collective leave, and business day calculation data for developer workflows such as payroll, attendance, SLA, invoices, scheduling, and operational systems.
Titimangsa is not an official government API. The dataset is curated from publicly available official government documents. Always refer to the original documents for legal or administrative certainty.
Titimangsa bukan API resmi pemerintah. Dataset dikurasi dari dokumen resmi pemerintah yang tersedia untuk publik. Untuk kepastian hukum atau administratif, selalu rujuk dokumen sumber asli.
Base URL:
https://titimangsa.sangkan.devCheck service health:
curl "https://titimangsa.sangkan.dev/v1/health"List Indonesian national holidays for 2026:
curl "https://titimangsa.sangkan.dev/v1/holidays?year=2026&type=national_holiday"Check whether a date is a workday:
curl "https://titimangsa.sangkan.dev/v1/workdays/check?date=2026-03-20"Use the npm package:
pnpm add @sangkan-dev/titimangsaimport { addWorkdays, checkWorkday } from "@sangkan-dev/titimangsa";
const workday = checkWorkday("2026-03-20");
const dueDate = addWorkdays("2026-03-18", 5);Add five workdays:
curl "https://titimangsa.sangkan.dev/v1/workdays/add?date=2026-03-18&days=5"Public endpoints live under /v1.
GET /v1/healthGET /v1/holidaysGET /v1/holidays/checkGET /v1/workdays/checkGET /v1/workdays/addGET /v1/workdays/diffGET /v1/sources
Read-only responses are cacheable. Applications should cache responses on the client or application side where possible because Cloudflare Workers Free is not unlimited.
- Public docs: docs.titimangsa.sangkan.dev
- Local docs app: apps/docs
- API contract: API_CONTRACT.md
- Dataset guide: DATASET.md
- Dataset automation guide: AUTOMATION.md
Production domain setup:
- API:
https://titimangsa.sangkan.dev - Docs:
https://docs.titimangsa.sangkan.dev
If the project later needs the root domain as a product/docs landing page, keep
https://titimangsa.sangkan.dev/v1 working and add
https://api.titimangsa.sangkan.dev as an API alias.
Install dependencies and validate the dataset:
corepack pnpm install --frozen-lockfile
corepack pnpm validate:data
corepack pnpm generate:data
corepack pnpm testRun the API locally:
corepack pnpm dev:apiDeploy the Cloudflare Worker:
corepack pnpm --filter @sangkan-dev/titimangsa-api deploy:dry-run
corepack pnpm deploy:apiRequired Cloudflare deployment secrets:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
The source of truth is manually curated YAML in data/sources. Generated JSON
in data/generated is produced by scripts/generate.ts and should not be
edited manually.
Automation output is review-required draft data under data/drafts. Automation
must never write directly to verified source data or generated runtime data.
Current MVP datasets:
- Indonesia 2025
- Indonesia 2026
This repository uses pnpm workspaces.
corepack pnpm install
corepack pnpm test
corepack pnpm typecheck
corepack pnpm format:checkProject documents:
- PRD.md - product requirements.
- TASK.md - implementation backlog.
- ARCHITECTURE.md - system architecture and boundaries.
- DEVELOPMENT.md - local workflow and commands.
- DECISIONS.md - project-level decisions.
- CONTRIBUTING.md - contribution rules.
- SECURITY.md - security posture and reporting.
MIT. The license covers the source code, dataset, and documentation.