Events API
Kuliah, ceramah, tadarus and other Islamic events at mosques and surau across Malaysia, each checked by the TaubatApp team. Free to use with the credit “Events by TaubatApp” and a link to taubat.app/events.
Start without a key
60 calls an hour per IP address. Answers are cached for 5 minutes.
GET https://www.taubat.app/api/v1/events?state=selangor&category=kuliah GET https://www.taubat.app/api/v1/events?from=2026-10-12&to=2026-10-31 GET https://www.taubat.app/api/v1/venues?state=johor
- state: johor, kedah, kelantan, melaka, negeri-sembilan, pahang, perak, perlis, pulau-pinang, sabah, sarawak, selangor, terengganu, wp-kuala-lumpur, wp-labuan, wp-putrajaya
- category: kuliah, kuliah_kitab, ceramah, tazkirah, forum, majlis_ilmu, kelas, tadarus, qiyamullail, zikir_selawat, solat_hajat_tahlil, seasonal, community, other
- from / to: YYYY-MM-DD (Malaysia dates), up to 120 days; default the next 14 days
- venue: an id from /api/v1/venues; limit up to 500, offset
Each event has its dates in the range. Times are either clock_time or a prayer (prayer_anchor + offset_min) worked out from the venue’s JAKIM zone (venue.jakim_zone), so “after Maghrib” stays right all year.
Calendar feeds
Subscribe in Google Calendar, Apple Calendar or Outlook. One per state or per mosque.
https://www.taubat.app/api/v1/events.ics?state=wp-kuala-lumpur https://www.taubat.app/api/v1/events.ics?venue=<venue id>
Free key: 10,000 calls a day
Send it as the x-api-key header (or ?key=). Each response says how many calls are left today (X-RateLimit-Remaining).
curl -H "x-api-key: tk_…" "https://www.taubat.app/api/v1/events?state=kedah"
Sign in with Google or Apple to make a key.
Sign in to get a keyPartners: send events
Mosques and organisers we’ve agreed with can send events by API: 100 a day, and a moderator checks every one before it’s published. Make a free key above, then email support@taubat.app with its first characters to ask for submit access.
curl -X POST "https://www.taubat.app/api/v1/events" \
-H "x-api-key: tk_…" -H "content-type: application/json" \
-d '{"title":"Kuliah Maghrib","category":"kuliah","speaker":"Ust. Ahmad",
"venue_name":"Masjid Al-Falah","state":"Selangor","jakim_zone":"SGR01",
"repeat":"weekly","weekday":2,"start_date":"2026-10-13",
"time_mode":"prayer","prayer_anchor":"maghrib","offset_min":0}'Answer: 202 with the submission id. Errors come back as a code and a plain sentence, e.g. BAD_STATE.
Rules
Show “Events by TaubatApp” with a link to https://www.taubat.app/events wherever the events appear. The API never includes who sent an event, reports or original posters. We may revoke keys that are abused.