API Documentation
Authentication
The Bible API offers free access to all Bible text data. No API key is required for basic usage.
curl "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"To access Red Letter data (Jesus' words highlighting), include your API key in the x-api-key header.
curl -H "x-api-key: bible_live_xxxxxxxxxxxx" \
"https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"Rate Limits
Rate limits apply to subscribers only. Free access has no rate limits. The following headers are included in authenticated responses:
X-RateLimit-Limit- Your daily request limitX-RateLimit-Remaining- Requests remaining todayX-RateLimit-Reset- When your limit resets (ISO 8601)
| Plan | Daily Limit | Red Letter Data |
|---|---|---|
| Free (no key) | Unlimited | No |
| Standard ($9.99/mo) | 1,000 requests | Yes |
| Unlimited ($49.99/mo) | Unlimited | Yes |
Red Letter Data
The jesusWordsRanges field contains an array of character ranges indicating where Jesus speaks in each verse. Each range has a start and end index (0-based, exclusive end).
Subscription Required: Red letter data is only included in responses when you authenticate with a valid API key. Responses include a hasRedLetterAccess field indicating whether red letter data is available.
Note: Red letter data (jesusWordsRanges) is currently only available for KJV and ESV translations.
Example: To highlight Jesus' words in your application:
function VerseText({ text, jesusWordsRanges }) {
if (!jesusWordsRanges?.length) return <span>{text}</span>;
const parts = [];
let lastEnd = 0;
jesusWordsRanges.forEach(({ start, end }, i) => {
if (start > lastEnd) {
parts.push(<span key={`text-${i}`}>{text.slice(lastEnd, start)}</span>);
}
parts.push(
<span key={`jesus-${i}`} style={{ color: '#F44336' }}>
{text.slice(start, end)}
</span>
);
lastEnd = end;
});
if (lastEnd < text.length) {
parts.push(<span key="text-end">{text.slice(lastEnd)}</span>);
}
return <>{parts}</>;
}List Translations
GET/api/v1/translationsGet a list of all available Bible translations. Free to use without an API key.
Example Request
# Free access (no API key required)
curl "https://bible.simplecohortllc.com/api/v1/translations"Example Response
{
"data": [
{ "id": 1, "name": "King James Version", "abbreviation": "KJV" },
{ "id": 2, "name": "English Standard Version", "abbreviation": "ESV" },
{ "id": 3, "name": "New International Version", "abbreviation": "NIV" }
]
}List Books
GET/api/v1/translations/:translation/booksGet all books with their chapter counts for a specific translation. Free to use without an API key.
Parameters
| Name | Description |
|---|---|
translation | Translation abbreviation (e.g., KJV, ESV) |
Example Request
# Free access (no API key required)
curl "https://bible.simplecohortllc.com/api/v1/translations/KJV/books"Example Response
{
"data": {
"Genesis": [1, 2, 3, ... 50],
"Exodus": [1, 2, 3, ... 40],
"Matthew": [1, 2, 3, ... 28],
...
}
}Get Chapter
GET/api/v1/chapters/:translation/:book/:chapterGet all verses in a chapter with groupings and summaries. Red letter data (jesusWordsRanges) requires a subscription.
Parameters
| Name | Description |
|---|---|
translation | Translation abbreviation (e.g., KJV) |
book | Book name (e.g., John, Genesis) |
chapter | Chapter number |
Example Request
# Free access (text only)
curl "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"
# With subscription (includes red letter data)
curl -H "x-api-key: YOUR_API_KEY" \
"https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"Example Response
{
"data": {
"translation": "KJV",
"book": "John",
"chapter": 3,
"verses": [
{
"verse": 1,
"text": "There was a man of the Pharisees...",
"jesusWordsRanges": null
},
{
"verse": 16,
"text": "For God so loved the world, that he gave his only begotten Son...",
"jesusWordsRanges": [{ "start": 0, "end": 147 }]
}
],
"groupings": {
"groups": [
{
"title": "You Must Be Born Again",
"verses": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
"description": "Nicodemus visits Jesus at night..."
},
{
"title": "For God So Loved the World",
"verses": [16, 17, 18, 19, 20, 21],
"description": "Jesus explains God's love for the world..."
}
],
"summary": "This chapter contains Jesus' conversation with Nicodemus..."
},
"hasRedLetterAccess": true
}
}Get Verse
GET/api/v1/verses/:translation/:book/:chapter/:verseGet a specific verse with its text. Red letter data (jesusWordsRanges) requires a subscription.
Parameters
| Name | Description |
|---|---|
translation | Translation abbreviation |
book | Book name |
chapter | Chapter number |
verse | Verse number |
Example Request
# Free access (text only)
curl "https://bible.simplecohortllc.com/api/v1/verses/KJV/John/3/16"
# With subscription (includes red letter data)
curl -H "x-api-key: YOUR_API_KEY" \
"https://bible.simplecohortllc.com/api/v1/verses/KJV/John/3/16"Example Response
{
"data": {
"book": "John",
"chapter": 3,
"verse": 16,
"translation": "KJV",
"text": "For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life.",
"jesusWordsRanges": [{ "start": 0, "end": 147 }]
},
"hasRedLetterAccess": true
}Search Verses
GET/api/v1/searchSearch for verses across all translations. The 'jesus' search type requires a subscription.
Parameters
| Name | Description |
|---|---|
q | Search query (required, min 3 characters) |
page | Page number (default: 1) |
type | Search type: 'exact' for phrase match, 'jesus' for Jesus' words only (requires subscription) |
Example Request
# Free search (text only in results)
curl "https://bible.simplecohortllc.com/api/v1/search?q=love%20your%20neighbor"
# Search only in Jesus' words (requires subscription)
curl -H "x-api-key: YOUR_API_KEY" \
"https://bible.simplecohortllc.com/api/v1/search?q=follow%20me&type=jesus"Example Response
{
"data": [
{
"translation": "KJV",
"book": "Matthew",
"chapter": 22,
"verse": 39,
"text": "And the second is like unto it, Thou shalt love thy neighbour as thyself.",
"jesusWordsRanges": [{ "start": 0, "end": 72 }]
}
],
"pagination": {
"page": 1,
"pageSize": 100,
"total": 15,
"totalPages": 1
},
"hasRedLetterAccess": true
}