Every successful response uses a consistent envelope:
{
"data": { },
"meta": { }
}
data— the payload (object, array, or scalar).meta— present for paginated or attributed responses (pagination, source attribution, cache info).
Errors use:
{
"error": {
"code": "NOT_FOUND",
"message": "Holiday not found"
}
}
Some endpoints (validasi, util, hijriah, kurs-bi, halal, bpom) add meta.disclaimer or meta.attribution alongside data.
Booleans and dates
- SQLite-era
0/1booleans are normalized totrue/falsein PostgreSQL-backed responses. - Dates use ISO-8601 (
YYYY-MM-DDfor dates,YYYY-MM-DDTHH:mm:ss.sssZfor timestamps).