The Temple API
Read and update your church's data from your own systems: keep a website's group list current, sync people with another tool, or pull giving into a report. Available on Growth and Enterprise plans.
Getting a token
A church admin creates one at Settings, System, Integrations, API tokens, and chooses what it may do. It is shown once. Temple keeps only a hash, so a lost token cannot be recovered: revoke it and make a new one. Keep it on a server. Anyone holding it has what it permits.
curl -H "Authorization: Bearer tmpl_your_token" \
https://blvxyvvtoetcvvnakfxi.supabase.co/functions/v1/public-api/v1/me| people:read | People, tags, custom fields and lists |
| people:write | Add and update people, their tags and field values |
| groups:read | Groups, rosters, meetings and attendance |
| events:read | Events and registrations |
| services:read | Services, service plans and songs |
| giving:read | Approved donations |
How it behaves
- Lists take
limit(1 to 100, default 50) andoffset, and say where to go next inmeta.next_offset, which is null on the last page. - Errors look like
{ "error": { "code", "message" } }, and the message says what to fix. - A token sees only its own church. Another church's record reads as
404. - 300 requests a minute per token. Over that you get
429withRetry-After. - Dates are YYYY-MM-DD. Times are ISO 8601 in UTC.
Endpoints
All paths start with https://blvxyvvtoetcvvnakfxi.supabase.co/functions/v1/public-api/v1.
Church
GET /meThe church this token belongs to, and its scopes.
People
GET /peopleFilter with search, email, status, tag (a tag id) or updated_since. Archived people are left out unless you ask with status=archived.
GET /people/:idOne person, with their tags, custom fields and groups.
POST /peoplefirst_name and last_name are required. Also email, phone, address, city, province, postal_code, country, date_of_birth, join_date, status and source.
PATCH /people/:idAny of the same fields.
POST /people/:id/tagsBody: { "tag_id": "..." }
DELETE /people/:id/tags/:tagIdTakes a tag off.
PUT /people/:id/fields/:fieldIdBody: { "value": ... }, in the shape the field's type takes.
DELETE /people/:id/fields/:fieldIdClears a value.
GET /tagsEvery tag.
GET /fieldsCustom field definitions.
GET /listsAudiences and rule-based lists.
GET /lists/:id/peopleWho is on a list. Rule-based lists run live.
Groups
GET /groupsEvery group.
GET /groups/:idOne group.
GET /groups/:id/membersIts roster.
GET /groups/:id/meetingsMeetings and who attended.
Events
GET /eventsEvery event, newest first.
GET /events/:idOne event.
GET /events/:id/registrationsWho registered, and what they paid.
Services
GET /servicesServices on the calendar.
GET /services/:idOne service.
GET /plansService plans.
GET /plans/:idOne plan, with its items in order.
GET /songsThe song library.
GET /songs/:idOne song, with its chart.
Giving
GET /donationsApproved gifts, filtered with from and to. Event fees are not gifts and are not included.
Hearing about changes
To be told when something happens rather than asking, use webhooks, under the same Integrations settings. To put a form on your website, see Temple forms on your website.