API Reference.
Every endpoint in version 2. All requests are GET; there is no authentication and no rate limit, and a .json suffix is accepted on every path.
Media URLs. mp3Url and mp4Url resolve to the Archive.org mirror when one exists and to our CDN otherwise; cdnMp3Url and cdnMp4Url always hold our copy. Play the first, fall back to the second on error — there is a worked example in the guide, including why two <source> tags will not do it for you.
Root
Service description: version, licence, live counts and a map of every endpoint. A good thing to fetch first if you are exploring.
Counts only, plus the timestamp of the last rebuild. Cheap to poll if you want to know whether anything has changed.
Scripture → sermons
The heart of the API. Ask at whatever level of precision you have: a whole book, a chapter, or a single verse. Results are exhaustive — every sermon that cites the passage, ordered with the most-heard first.
All sixty-six books with their OSIS code, testament, canonical order, chapter count and how many sermons reference each.
One book, with the list of chapters that actually have preaching on them and the count for each. bookId is an OSIS code — see Book Codes.
Every sermon on the chapter, plus a per-verse breakdown so you can render a heat map of where the preaching falls.
Every sermon that cites that one verse. If a verse has no preaching on it the endpoint returns 404 rather than an empty list — check the chapter response first if you need to know in advance.
Topics
Every topic with its slug, name and sermon count, ordered by size. Large — cache it.
One topic: a written description, the scriptures most often preached under it with their Berean Standard Bible text, and every sermon filed there.
Preachers
Every preacher with slug, name, portrait URL, sermon count and the themes he is most often heard on. Also available at /v2/contributors.
One preacher, his biography and portrait, and every sermon of his in the library. Also at /v2/contributors/{slug}.
Sermons
The whole library in pages of 500. Each response carries page, totalPages and total so you can walk it. Start at page 1.
Every sermon in one response. This is a very large file — tens of megabytes. Prefer the paged endpoint, or take a bulk download.
The five hundred most-listened sermons in the library. Useful as a starting shelf.
The full record: everything in the summary form plus the complete transcript (as HTML and as plain text), the outline, pull-quotes, application points, an FAQ and keywords.
The Bible
A complete mirror of over a thousand translations, hosted on our own CDN so that it stays reachable. The layout matches the Free Use Bible API it was built from, so existing code can be pointed at us by changing the base URL alone.
Every translation with its id, language, licence and website.
The books available in that translation, with chapter counts.
One chapter of text, verse by verse, with footnotes.
Public-domain commentaries in the same corpus, under /v2/bible/c/{id}/.
Response conventions
| Item | Notes |
|---|---|
Content-Type | application/json; charset=utf-8 on every path, with or without the .json suffix. |
| CORS | Access-Control-Allow-Origin: *. Call it straight from a browser; no proxy needed. |
| Caching | Edge-cached for thirty days and purged on each rebuild. Please cache on your side too. |
| Errors | A path that does not exist returns 404 with an HTML body, not JSON. Check the status code, not the body. |
| Trailing slash | Not accepted. Use /v2/topics/prayer, not /v2/topics/prayer/. |
| IDs | Sermon ids are opaque sixteen-character strings and are stable. Slugs are stable too, but an id is the safer key. |
| Empty fields | Present as "" or [] rather than omitted, so you can read them without guarding. |
Migrating from the old API
| Old | Now |
|---|---|
/audio/speakers.json | /v2/speakers |
/audio/speaker/{name}.json | /v2/speakers/{slug} |
/audio/topic/{name}.json | /v2/topics/{slug} |
/audio/scripture/{book}/… | /v2/scripture/{bookId} |
/v1/contributors | /v2/speakers |
/v1/contributors/slug/{slug} | /v2/speakers/{slug} |
/v1/sermons/id/{id} | /v2/sermons/{id} |
/v1/topics/slug/{slug} | /v2/topics/{slug} |
The old underscore-separated speaker filenames became hyphenated slugs: leonard_ravenhill is now leonard-ravenhill.
