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.