The GraceBase API is live and currently read-only. Generate a key under Settings → Developers. Write endpoints and an official SDK are coming next.
A RESTful API for reading your church data — members, giving, funds, and events. Authenticate with an API key and start building.
Create a key, send your first request, and you're reading data.
Generate scoped keys in Settings → Developers and pass them as a Bearer token. Keys are shown once and can be revoked anytime.
Standard HTTP methods and status codes. Lists use cursor pagination with a consistent response envelope.
Each key is limited to the scopes you choose (e.g. members:read). Up to 100 requests per 10 seconds per key.
An official TypeScript SDK (@gracebase/api) is on the way. For now, any HTTP client works.
// 1. Create an API key in the dashboard:
// Settings → Developers → Create key (shown once)
// 2. Call the API with your key as a Bearer token:
const res = await fetch(
"https://www.gracebase.co/api/v1/members?limit=10",
{ headers: { Authorization: "Bearer gb_live_..." } }
);
const { data, pagination } = await res.json();
console.log(data);Every request requires an API key in the Authorization header. Generate keys from Settings → Developers in your dashboard. A key only grants the scopes you select.
Base URL
https://www.gracebase.co/api/v1const response = await fetch("https://www.gracebase.co/api/v1/members", {
headers: {
Authorization: "Bearer gb_live_your_key",
},
});
const { data, pagination } = await response.json();Read endpoints for your church data. Write endpoints are coming in v2.
/v1/membersList members (filters: status, updatedSince, cursor, limit)
/v1/members/:idGet a specific member by ID
/v1/donationsList donations (filters: from, to, fundId). Includes refund metadata
/v1/donations/:idGet a specific donation by ID
/v1/fundsList giving funds
/v1/funds/:idGet a specific fund by ID
/v1/eventsList events (filters: from, to)
/v1/events/:idGet a specific event by ID
Lists return a data array plus a pagination object. Pass the nextCursor back as ?cursor= to page through results. Errors use a consistent { error } envelope with standard HTTP status codes.
// Every list response is shaped consistently:
{
"data": [ /* records */ ],
"pagination": { "nextCursor": "abc123", "hasMore": true }
}
// Fetch the next page with the cursor:
// GET https://www.gracebase.co/api/v1/donations?cursor=abc123&limit=50
// Errors use a matching envelope:
{ "error": { "code": "forbidden", "message": "..." } }Read access opens up reporting, sync, and custom experiences.
Pull members, giving, and events into your own analytics platform or build custom reports.
Sync giving data (with refund metadata) into your accounting tools or a data warehouse.
Power a member directory or giving dashboard with secure, scoped read access.
Use Zapier or Make to read GraceBase data on a schedule and pipe it elsewhere.
Create your first API key in the dashboard and start reading your church data in minutes.