MyChurchDocs

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

GEThttps://uat-api.mychurch.co.ke/api/v2/churchesAccess key
bash
curl https://uat-api.mychurch.co.ke/api/v2/churches \
  -H "CHURCHES-ACCESS-KEY: <issued to the app team>"
Response
{
  "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.

GEThttps://uat-api.mychurch.co.ke/api/v2/all-churchesAccess key

Every active church, including those hidden from the app list, without count. Used by the white-label apps.

Church profile

GEThttps://uat-api.mychurch.co.ke/api/v2/church-data/{church}Public
Response
{
  "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"
  }
}
GEThttps://uat-api.mychurch.co.ke/api/v2/contact-usMember token
Response
{
  "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

GEThttps://uat-api.mychurch.co.ke/api/v2/all-services/{church}Public
Response
{
  "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" }
  ]
}
GEThttps://uat-api.mychurch.co.ke/api/v2/service-programs/{service}Public

Links to a service's programme (order of service), as whole records:

Response
{
  "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" }
  ]
}
GEThttps://uat-api.mychurch.co.ke/api/v2/today-servicesMember token
Response
{
  "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

GEThttps://uat-api.mychurch.co.ke/api/v2/sermons/{church}Public

Query

FieldTypeRequiredDescription
featuredstringNoyes for featured sermons only (the home screen carousel).
querystringNoWords that must all appear in the title.
categoryuuidNoA category from the categories list.
typeintegerNo1 sermon, 2 praise and worship, 3 choir. All types when omitted.
bash
curl "https://uat-api.mychurch.co.ke/api/v2/sermons/00000000-0000-4000-8000-000000000001?featured=yes"
Response
{
  "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.

GEThttps://uat-api.mychurch.co.ke/api/v2/sermons/liveMember token

Kept for older app builds; answers {"message": "Success", "status": true, "sermons": []}. Live services are in the streams of events/public.

Devotions

GEThttps://uat-api.mychurch.co.ke/api/v2/devotions/{church}Public
Response
{
  "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

GEThttps://uat-api.mychurch.co.ke/api/v2/announcementsMember token
Response
{
  "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.

GEThttps://uat-api.mychurch.co.ke/api/v2/verse-of-the-dayMember token
Response
{
  "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

GEThttps://uat-api.mychurch.co.ke/api/v2/blog/allMember token
GEThttps://uat-api.mychurch.co.ke/api/v2/readings/latestMember token

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).

GEThttps://uat-api.mychurch.co.ke/api/v2/web/churchesPublic

Query

FieldTypeRequiredDescription
querystringNoSearch by name.
pageintegerNo15 per page.
Response
{
  "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,
    "...": "..."
  }
}
GEThttps://uat-api.mychurch.co.ke/api/v2/web/sermonsPublic

Query

FieldTypeRequiredDescription
churchuuidNoOnly this church (the slug from web/churches).
querystringNoWords in the title.
categoryuuidNoCategory.
typeintegerNo1 sermon, 2 praise and worship, 3 choir.
featuredstringNoyes for featured only.
pageintegerNo15 per page.

A bare paginator (no status wrapper) whose rows are {church, id, church_slug, title, speaker, series, date, duration, video_url, thumbnail}.

GEThttps://uat-api.mychurch.co.ke/api/v2/web/livestreamsPublic

A bare paginator of {id, title, url, church, church_slug}, filterable by church.

GEThttps://uat-api.mychurch.co.ke/api/v2/web/categoriesPublic

A bare paginator (20 per page) of sermon categories {uuid, name}, filterable by church.

Image URLs point at /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.