Developers
One endpoint answers “what Hijri date is it?”
Free JSON API, no key, CORS open for GET. Base URL https://globalhilal.com/api/v1.
5 months published — and counting by testimony, never by forecast.
GET /today
Today's Hijri date. Query tz (IANA, default UTC) and date (YYYY-MM-DD, for testing).
curl "https://globalhilal.com/api/v1/today?tz=Asia/Jakarta"
GET /convert
Hijri date for any Gregorian date: ?gregorian=YYYY-MM-DD&tz=…
curl "https://globalhilal.com/api/v1/convert?gregorian=2026-03-20"
GET /months
History, newest first. Query hijri_year, status, perPage, page.
curl "https://globalhilal.com/api/v1/months?hijri_year=1447"
GET /months/current · /months/:year/:month
The running month, or full detail with testimonies and references.
curl "https://globalhilal.com/api/v1/months/1447/9"
Errors are { error: { code, message } } — INVALID_TZ, INVALID_DATE, NOT_FOUND, OUT_OF_RANGE.
Dates beyond confirmed testimony return OUT_OF_RANGE: the API will not guess the future. Breaking changes ship as /v2; /v1 stays for at least 12 months.