๐Ÿค– AI Agent & LLM Machine-Readable Specifications

100% LLM Native

Autonomous AI agents, Custom GPTs, Claude Tools, and LangChain OpenAPI toolkits can consume the machine-readable specifications directly:

๐Ÿ“„ /llms.txt (AI Discovery Context) ๐Ÿ“˜ /llms-full.txt (Full Technical Reference) โšก /api/openapi.json (OpenAPI 3.0 Spec)

๐ŸŽฎ Interactive API Explorer

Test live REST API responses directly in your browser:

Click "Execute Query" to fetch live JSON response...
GET List Sermons
https://bakarimustafa.com/api/messages

Retrieves a paginated list of sermon records. Supports filtering by language, year, series, place, duration range, or length.

Query Parameters

Parameter Type Default Description
page integer 1 Page number to retrieve.
limit integer 50 Number of items per page (max: 200).
language string null Language code filter (e.g. en, nya for Chichewa, fra, es). ny is also supported as an alias.
year string / int null Year filter (e.g. 1965 or 2-digit 65).
date string null Preaching date filter (e.g. 1965-07-18 or 65-0718).
series string null Official series name or slug (e.g. adoption, seven-seals, hebrews, conduct-order-doctrine).
place / location / city string null Preaching location or city (e.g. Jeffersonville, Chicago, Phoenix).
duration string null Duration group matching The Table: 1-60, 61-90, 91-120, 121-150, 151-180, 181+.
length string null Sermon length category: short (<60m), medium (60โ€“120m), long (>120m).

Example Response (200 OK)

{
  "data": [
    {
      "id": "65-0718M",
      "number": 1170,
      "title": "Trying To Do God A Service Without Being The Will Of God",
      "date": "1965-07-18",
      "year": 1965,
      "language": "en",
      "location": "Jeffersonville, IN",
      "duration_minutes": 127,
      "duration_group": "121 - 150",
      "length": "long",
      "cover_image": "https://branham.org/azure/branham/073884ef-dd28-41d1-a7b8-33accbc478b2.jpg",
      "pdf_url": "https://themessage.com/...",
      "m4a_url": "https://themessage.com/..."
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 595,
    "total_pages": 12,
    "has_next": true,
    "has_prev": false
  }
}
GET Get Sermon by ID
https://bakarimustafa.com/api/messages/:id

Fetches metadata, cover image, PDF transcript URL, audio stream, preaching location, length category, official series, and available translation editions (languages) for a specific sermon ID (date code like 65-0718M).

URL Parameters

Parameter Type Description
id string Sermon date code identifier (e.g. 65-0718M, 63-0317M).
language string Optional language code (e.g. fra, nya, es). Defaults to en.
GET Get Sermon Transcript, Paragraphs & Sentence Tags
https://bakarimustafa.com/api/messages/:id/text

Fetches structured transcript text organized into numbered paragraphs and sentence-level tokens. Every sentence has an individual tag (e.g. p1-s1), and editor's notes (e.g. [...โ€”Ed.] or [..._Mkonzi.]) are cleanly isolated.

๐Ÿ’ก Why Structured Sentences & Paragraphs?

Direct PDF text extraction frequently suffers from fused words (missing whitespace), OCR errors, running headers, and page breaks. Structured text with sentence-level tags allows exact sentence highlighting, word-level quoting, audio sync, and separates the speaker's voice from translator notes.

URL & Query Parameters

Parameter Type Description
id string (path) Sermon date code identifier (e.g. 65-0718M, 50-0100).
language string (query) Language code filter (e.g. ny or nya for Chichewa, en for English). Default: en.

Example Response (200 OK)

{
  "data": {
    "id": "65-0718M",
    "title": "Kuyesera Kuchitira Mulungu Utumiki...",
    "language": "nya",
    "date": "1965-07-18",
    "location": "Jeffersonville, IN",
    "pdf_url": "https://d2w09gj4mqt5u.cloudfront.net/repo/...",
    "paragraphs": [
      {
        "number": 1,
        "text": "Mulungu akudalitseni m'bale. [Msonkhano ukuti, \"Amen.\"โ€”Mkonzi.]...",
        "sentences": [
          {
            "id": "p1-s1",
            "text": "Mulungu akudalitseni m'bale.",
            "is_editor_note": false,
            "type": "speech"
          },
          {
            "id": "p1-s2",
            "text": "[Msonkhano ukuti, \"Amen.\"โ€”Mkonzi.]",
            "is_editor_note": true,
            "type": "editor_note"
          }
        ]
      }
    ]
  }
}
GET The 16 Official Sermon Series
https://bakarimustafa.com/api/series

Retrieves the 16 official sermon series defined in Voice of God Recordingsโ€™ catalogue on The Table (table.branham.org).

Sub-Endpoints

  • GET /api/series โ€” Returns all 16 official series with sermon counts and product IDs.
  • GET /api/series/:slug โ€” Returns metadata and sermon date codes for a specific series (e.g. adoption, seven-seals, hebrews, church-ages).
  • GET /api/series/:slug/messages โ€” Directly lists the sermon records belonging to that series.

The 16 Official Series Overview

Slug Official Series Title Sermons
adoptionAdoption4
church-agesAn Exposition Of The Seven Church Ages11
branham-tabernacleBranham Tabernacle295
brother-branhamBrother Branham2
conduct-order-doctrineConduct, Order, And Doctrine Of The Church23
demonologyDemonology3
easter-revivalEaster Revival6
israel-and-the-churchIsrael And The Church5
jehovah-jirehJehovah-Jireh5
hebrewsThe Book Of Hebrews11
the-churchThe Church3
the-easter-messageThe Easter Message5
the-holy-ghostThe Holy Ghost2
revelation-of-jesus-christThe Revelation Of Jesus Christ15
seven-sealsThe Revelation Of The Seven Seals10
seventy-weeksThe Seventy Weeks Of Daniel3

Example Response (200 OK)

{
  "total_series": 16,
  "data": [
    {
      "id": "seven-seals",
      "slug": "seven-seals",
      "title": "The Revelation Of The Seven Seals",
      "sermon_count": 10,
      "sermon_ids": ["63-0317M", "63-0317E", "63-0318", "63-0319", "63-0320", "63-0321", "63-0322", "63-0323", "63-0324M", "63-0324E"]
    }
  ]
}
GET Browse by Preaching Place / City
https://bakarimustafa.com/api/places

Browse preaching locations across 120+ cities (Jeffersonville, Phoenix, Chicago, Los Angeles, Oakland, Shreveport, etc.) mapped directly from The Table taxonomy.

Sub-Endpoints & Query Filters

  • GET /api/places (or /api/cities) โ€” Returns preaching venues sorted by frequency with sermon counts.
  • GET /api/places/:place/messages โ€” Returns sermons preached in a specific city/venue (e.g. /api/places/Jeffersonville/messages).
  • GET /api/messages?place={place} โ€” Filter sermons by city or venue.

Example Response (200 OK)

{
  "total_places": 124,
  "data": [
    { "place": "Jeffersonville, IN", "count": 418 },
    { "place": "Phoenix, AZ", "count": 113 },
    { "place": "Chicago, IL", "count": 110 },
    { "place": "Los Angeles, CA", "count": 56 }
  ]
}
GET Sermon Duration Categories
https://bakarimustafa.com/api/durations

Lists the 6 official duration brackets utilized by The Table (table.branham.org) along with active sermon counts.

Query Filtering

  • GET /api/messages?duration={bracket} โ€” Filter by duration bracket:
    • 1-60: Under 1 hour.
    • 61-90: 1 hour to 1.5 hours.
    • 91-120: 1.5 hours to 2 hours.
    • 121-150: 2 hours to 2.5 hours.
    • 151-180: 2.5 hours to 3 hours.
    • 181+: 3+ hours (Extended revival services).
  • GET /api/messages?length={short|medium|long} โ€” Simplified duration filter.

Example Response (200 OK)

{
  "total_groups": 6,
  "data": [
    { "id": "1-60", "group": "1 - 60", "label": "Under 1 hour", "min": 0, "max": 60, "count": 178 },
    { "id": "61-90", "group": "61 - 90", "label": "1 hr โ€“ 1.5 hrs", "min": 61, "max": 90, "count": 424 },
    { "id": "91-120", "group": "91 - 120", "label": "1.5 hrs โ€“ 2 hrs", "min": 91, "max": 120, "count": 520 },
    { "id": "121-150", "group": "121 - 150", "label": "2 hrs โ€“ 2.5 hrs", "min": 121, "max": 150, "count": 161 },
    { "id": "151-180", "group": "151 - 180", "label": "2.5 hrs โ€“ 3 hrs", "min": 151, "max": 180, "count": 55 },
    { "id": "181+", "group": "181+", "label": "3+ hours (Extended)", "min": 181, "max": 9999, "count": 22 }
  ]
}
GET List Available Languages
https://bakarimustafa.com/api/languages

Returns all 72 supported languages with ISO language codes and sermon counts.

GET Catalogue Statistics
https://bakarimustafa.com/api/stats

Aggregated metrics detailing total sermon counts, language breakdown, audio streams, PDF transcripts, and text availability.

Example Response (200 OK)

{
  "data": {
    "total_sermons": 577,
    "total_languages": 2,
    "available_languages": 72,
    "year_range": {
      "earliest": 1950,
      "latest": 1965
    },
    "sermons_with_pdf": 572,
    "sermons_with_audio": 525,
    "sermons_with_text": 572
  }
}

๐Ÿ’ป Code Examples

Integrate the API into your web or mobile application in minutes:

JavaScript (Fetch API)

// Fetch Chichewa sermons from the REST API
async function getChichewaSermons() {
  const response = await fetch('https://bakarimustafa.com/api/messages?language=ny&limit=10');
  const data = await response.json();
  console.log('Chichewa Sermons:', data.data);
}

getChichewaSermons();

Python

import requests

# Query sermons by search keyword
response = requests.get('https://bakarimustafa.com/api/search', params={'q': 'seven seals'})
results = response.json()

for sermon in results['data']:
    print(f"[{sermon['id']}] {sermon['title']} ({sermon['language']})")

cURL

curl -X GET "https://bakarimustafa.com/api/messages?language=ny&limit=5" \
  -H "Accept: application/json"