Attribution
The API is free on one condition: wherever you show Masjidbox data, say where it comes from. In return, the times your users see stay exact.
Why it keeps the times right
The attribution carries two links. Report an error lets anyone, your users included, flag a time that looks wrong. Claim this masjid lets the masjid take over its page and publish its exact times. A fix made once reaches every app on the API, yours too, with no work on your side.
The snippet
Show it next to the times or the masjid details, on every screen that shows them:
<p>
Prayer times provided by <a href="https://masjidbox.com">Masjidbox</a> ·
<a href="{masjid.links.report}">Report an error</a> ·
<a href="{masjid.links.claim}">Claim this masjid</a>
</p>Take both URLs from the masjid you display: GET /v1/masjids/{id}, search and nearby return them in links. For masjid details without times, write "Masjid data provided by Masjidbox".
The report link
links.report is on every masjid, whatever its state, and on every timetable: today, weekly, monthly and jumu'ah times all carry links.report, so a screen that reads only prayer times needs no second call. Link it as it is and never branch on the masjid: the page decides what to show, the report form when the masjid publishes its own times, an invitation to claim the masjid or to invite its manager otherwise.
Put Report an error next to the attribution, on the same line or right under it, on every screen that shows times. Not in a settings page, not behind a menu: a user who doubts a time looks for the link where the time is.
Open the form on the right time
When your user taps a link next to a given time, you may append prayer, kind and day to links.report so the form opens with them chosen:
| Parameter | Values |
|---|---|
prayer | fajr, dhuhr, asr, maghrib, isha, jumua, other |
kind | adhan, iqamah |
day | YYYY-MM-DD, from a week before the masjid's today to 30 days after |
// timetable: the answer of GET /v1/masjids/{id}/prayer-times
const reportUrl = new URL(timetable.links.report);
reportUrl.searchParams.set('prayer', 'maghrib');
reportUrl.searchParams.set('kind', 'iqamah');
reportUrl.searchParams.set('day', timetable.date);
// https://hub.masjidbox.com/report/msj_123?prayer=maghrib&kind=iqamah&day=2026-10-16All three are optional. A value the form does not accept is ignored: that field opens as it would without the link (no prayer chosen, adhan, the masjid's today). The reporter can change every preselected field before sending. Build the URL from links.report as received, never from a masjid id.
Rules
- Keep it visible: on the same screen as the data, not behind a menu or in an "about" page.
- Keep the links working: do not strip them, or point them elsewhere.
- In an app without links (a TV screen, a printed timetable), print "Prayer times provided by Masjidbox" in full.
- Showing the data without attribution breaks the developer terms. See what is not allowed.