Churches, sermons and content
The church list the app starts from, a church's profile and services, sermons and devotions, announcements, verse of the day, today's services, contact details, and the public web routes for church websites.
Church list
curl https://uat-api.mychurch.co.ke/api/v2/churches \
-H "CHURCHES-ACCESS-KEY: <issued to the app team>"{
"message": "Success",
"status": true,
"churches": [
{ "uuid": "00000000-0000-4000-8000-000000000001", "church_name": "Grace Community Church", "physical_address": "Ngong Road, Nairobi",
"logo_url": "https://account.mychurch.co.ke/storage/scarlet/logos/grace.png" }
],
"count": 1
}Active churches that are listed in the app. The CHURCHES-ACCESS-KEY header is required; a missing or wrong key answers HTTP 401 {"message": "Unauthorized", "status": false}. On /api/v1 the same list is public.
Every active church, including those hidden from the app list, without count. Used by the white-label apps.
Church profile
{
"message": "Success",
"status": true,
"data": {
"about_us": "A family church in the heart of Nairobi.",
"mission": "To make disciples.",
"vision": "A transformed city.",
"welcome_message": "Karibu!",
"slogan": "Growing together",
"profile_image": "https://account.mychurch.co.ke/storage/scarlet/logos/grace.png"
}
}{
"message": "Success",
"status": true,
"church": {
"email": "[email protected]",
"phone": "0700000000",
"mission": "To make disciples.",
"vision": null,
"slogan": "Growing together",
"socials": [
{ "uuid": "00000000-0000-4000-8000-000000000f11", "church_id": 12, "name": "Facebook", "link": "https://facebook.com/example",
"deleted_at": null, "created_at": "2025-01-01T06:00:00.000000Z", "updated_at": "2025-01-01T06:00:00.000000Z", "type": "facebook" }
],
"profile": null,
"profile_image": "https://account.mychurch.co.ke/storage/scarlet/logos/grace.png"
}
}vision is always null here, as it always was; read it from church-data.
Services
{
"message": "Success",
"status": true,
"services": [
{ "uuid": "00000000-0000-4000-8000-000000000a01", "service_name": "Sunday First Service", "from_time": "08:00:00", "to_time": "10:00:00" }
]
}Links to a service's programme (order of service), as whole records:
{
"message": "Success",
"status": true,
"programs": [
{ "id": 14, "uuid": "00000000-0000-4000-8000-000000000a11", "service_id": 3, "link": "https://example.org/programme.pdf",
"deleted_at": null, "created_at": "2026-10-30T07:00:00.000000Z", "updated_at": "2026-10-30T07:00:00.000000Z" }
]
}{
"message": "Success",
"status": true,
"services": [ { "service_name": "Sunday First Service", "from": "08:00:00", "to": "10:00:00" } ]
}An empty list on a day with no services.
Sermons
Query
| Field | Type | Required | Description |
|---|---|---|---|
| featured | string | No | yes for featured sermons only (the home screen carousel). |
| query | string | No | Words that must all appear in the title. |
| category | uuid | No | A category from the categories list. |
| type | integer | No | 1 sermon, 2 praise and worship, 3 choir. All types when omitted. |
curl "https://uat-api.mychurch.co.ke/api/v2/sermons/00000000-0000-4000-8000-000000000001?featured=yes"{
"message": "success",
"status": true,
"sermons": [
{ "title": "Walking in Faith", "date": "2026-10-25", "video_id": "abc123XYZ", "video_url": "https://www.youtube.com/watch?v=abc123XYZ",
"is_featured": 1, "description": "Hebrews 11", "category": "Sunday Sermons",
"poster": "https://uat-api.mychurch.co.ke/storage/scarlet/posters/faith.jpg" }
],
"categories": [ { "uuid": "00000000-0000-4000-8000-000000000b11", "name": "Sunday Sermons" } ]
}Newest first. category is N/A when none is set. On /api/v1 the list defaults to type 1, has no categories, and POST sermons-with-filter/{church} takes the same filters.
Kept for older app builds; answers {"message": "Success", "status": true, "sermons": []}. Live services are in the streams of events/public.
Devotions
{
"message": "success",
"status": true,
"devotions": [
{ "title": "Rest for the weary", "content": "Come to me, all you who are weary...", "date": "2026-11-01",
"category": "Daily Bread", "image": null }
]
}Announcements and verse of the day
{
"message": "Success",
"status": true,
"announcements": [
{ "title": "Harvest Sunday", "content": "Bring your harvest offering on 15 November.", "is_video": 0, "video_id": null,
"image": "https://uat-api.mychurch.co.ke/storage/scarlet/announcements/harvest.jpg" }
]
}The apps poll this route for their notifications screen; there are no push notifications.
{
"message": "Success",
"status": true,
"verse": { "uuid": "00000000-0000-4000-8000-000000000b21", "book": "Psalm 23:1", "verse": "The Lord is my shepherd, I lack nothing.", "date": "2026-11-01" }
}verse is null when the church has not set one for today.
Retired routes kept for older builds
They answer {"message": "Success", "status": true, "blogs": []} and {"message": "Success", "status": true, "reading": null}.
Public web routes
For church websites and the MyChurch website: sermons, livestreams and churches across the platform, no login, Laravel-paginated (current_page, data, per_page, total, next_page_url and the rest of the paginator keys).
Query
| Field | Type | Required | Description |
|---|---|---|---|
| query | string | No | Search by name. |
| page | integer | No | 15 per page. |
{
"message": "Success",
"status": true,
"data": {
"current_page": 1,
"data": [
{ "slug": "00000000-0000-4000-8000-000000000001", "name": "Grace Community Church", "city": "Nairobi", "country": "Kenya", "denomination": "",
"recently_active": true, "sermon_count": 128, "series_count": 0,
"logo_url": "https://account.mychurch.co.ke/storage/scarlet/logos/grace.png" }
],
"per_page": 15,
"total": 1,
"...": "..."
}
}Query
| Field | Type | Required | Description |
|---|---|---|---|
| church | uuid | No | Only this church (the slug from web/churches). |
| query | string | No | Words in the title. |
| category | uuid | No | Category. |
| type | integer | No | 1 sermon, 2 praise and worship, 3 choir. |
| featured | string | No | yes for featured only. |
| page | integer | No | 15 per page. |
A bare paginator (no status wrapper) whose rows are {church, id, church_slug, title, speaker, series, date, duration, video_url, thumbnail}.
A bare paginator of {id, title, url, church, church_slug}, filterable by church.
A bare paginator (20 per page) of sermon categories {uuid, name}, filterable by church.
/storage/scarlet/ on the api or portal host and are served as they are. Do not rewrite or cache-bust them; the apps hold these exact URLs.