Skip to content

API Reference

All public endpoints live under /v1. The API is read-only and supports GET and OPTIONS.

Endpoints reject query parameters that are not documented for that endpoint.

Headers

Read-only responses include:

http
Cache-Control: public, max-age=3600, s-maxage=86400
Access-Control-Allow-Origin: *

GET /v1/health

Returns service health.

sh
curl "https://titimangsa.sangkan.dev/v1/health"

GET /v1/holidays

Query parameters:

ParamRequiredDefaultDescription
yearNocurrent yearDataset year
typeNoallnational_holiday or collective_leave
includeSourcesNofalseInclude source metadata

Example:

sh
curl "https://titimangsa.sangkan.dev/v1/holidays?year=2026&type=national_holiday"

Response excerpt:

json
{
  "meta": {
    "version": "v1",
    "countryCode": "ID",
    "year": 2026,
    "revision": 1,
    "status": "verified",
    "total": 17
  },
  "data": [
    {
      "date": "2026-01-01",
      "day": "Thursday",
      "localDay": "Kamis",
      "localName": "Tahun Baru 2026 Masehi",
      "name": "New Year's Day 2026",
      "type": "national_holiday",
      "isNationalHoliday": true,
      "isCollectiveLeave": false
    }
  ]
}

GET /v1/holidays/check

Query parameters:

ParamRequiredDefaultDescription
dateYesnoneDate in YYYY-MM-DD
includeCollectiveLeaveNotrueCount collective leave as holiday
includeSourcesNofalseInclude source metadata

Example:

sh
curl "https://titimangsa.sangkan.dev/v1/holidays/check?date=2026-03-20"

GET /v1/workdays/check

Query parameters:

ParamRequiredDefaultDescription
dateYesnoneDate in YYYY-MM-DD
includeCollectiveLeaveNotrueCount collective leave as non-workday
weekendNosat,sunComma-separated weekend days

Example:

sh
curl "https://titimangsa.sangkan.dev/v1/workdays/check?date=2026-03-20"

GET /v1/workdays/add

Query parameters:

ParamRequiredDefaultDescription
dateYesnoneStart date
daysYesnonePositive integer
includeCollectiveLeaveNotrueCount collective leave as non-workday
weekendNosat,sunComma-separated weekend days

Example:

sh
curl "https://titimangsa.sangkan.dev/v1/workdays/add?date=2026-03-18&days=5"

GET /v1/workdays/diff

Query parameters:

ParamRequiredDefaultDescription
startYesnoneStart date
endYesnoneEnd date
includeCollectiveLeaveNotrueCount collective leave as non-workday
weekendNosat,sunComma-separated weekend days
inclusiveNotrueInclude boundary dates

Example:

sh
curl "https://titimangsa.sangkan.dev/v1/workdays/diff?start=2026-01-01&end=2026-01-05"

GET /v1/sources

Query parameters:

ParamRequiredDefaultDescription
yearNocurrent yearDataset year

Example:

sh
curl "https://titimangsa.sangkan.dev/v1/sources?year=2026"

Error Codes

CodeHTTPDescription
INVALID_DATE400Date format is invalid
INVALID_YEAR400Year is invalid
INVALID_TYPE400Query value or holiday type is unsupported
DATASET_NOT_FOUND404Dataset for requested year is not available
INVALID_RANGE400Date range is invalid
INTERNAL_ERROR500Internal error

Titimangsa is not an official government API. Always refer to original public documents for legal or administrative certainty.