TaubatAppTaubat.App
← Events

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 key

Partners: 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.

Events API for developers · TaubatApp