Simple Cohort
Simple Cohort
Red Letter Bible API

API Documentation

Authentication

The Bible API offers free access to all Bible text data. No API key is required for basic usage.

Free Access
curl "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

To access character-range Red Letter data for Jesus' words, include your API key in the x-api-key header.

With Subscription
curl -H "x-api-key: bible_live_xxxxxxxxxxxx" \
  "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

Rate Limits

Rate limits apply to authenticated red letter requests only. Free Bible text access has no rate limits. The following headers are included in authenticated responses:

  • X-RateLimit-Limit - Your daily request limit
  • X-RateLimit-Remaining - Requests remaining today
  • X-RateLimit-Reset - When your limit resets (ISO 8601)
PlanRed Letter Daily LimitRed Letter Data
Free (no key)Unlimited Bible text requestsNo
Standard ($9.99/mo)1,000 red letter requestsYes
Unlimited ($49.99/mo)Unlimited red letter requestsYes

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), so clients can render red letters without parsing pre-rendered HTML.

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 available for the KJV translation.

Example: To highlight Jesus' words in your application:

React
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/translations

Get a list of all available Bible translations. Currently the King James Version (KJV). Free to use without an API key.

Example Request

bash
# Free access (no API key required)
curl "https://bible.simplecohortllc.com/api/v1/translations"

Example Response

json
{
  "data": [
    { "id": 4, "name": "King James Version", "abbreviation": "KJV" }
  ]
}

List Books

GET/api/v1/translations/:translation/books

Get all books with their chapter counts for a specific translation. Free to use without an API key.

Parameters

NameDescription
translationTranslation abbreviation (currently KJV)

Example Request

bash
# Free access (no API key required)
curl "https://bible.simplecohortllc.com/api/v1/translations/KJV/books"

Example Response

json
{
  "data": {
    "Genesis": [1, 2, 3, ... 50],
    "Exodus": [1, 2, 3, ... 40],
    "Matthew": [1, 2, 3, ... 28],
    ...
  }
}

Get Chapter

GET/api/v1/chapters/:translation/:book/:chapter

Get all verses in a chapter with groupings and summaries. Character-range red letter data (jesusWordsRanges) requires a subscription.

Parameters

NameDescription
translationTranslation abbreviation (currently KJV)
bookBook name (e.g., John, Genesis)
chapterChapter number

Example Request

bash
# Free access (text only)
curl "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

# With subscription (includes character-range red letter data)
curl -H "x-api-key: YOUR_API_KEY" \
  "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

Example Response

json
{
  "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/:verse

Get a specific verse with its text. Character-range red letter data (jesusWordsRanges) requires a subscription.

Parameters

NameDescription
translationTranslation abbreviation (currently KJV)
bookBook name
chapterChapter number
verseVerse number

Example Request

bash
# Free access (text only)
curl "https://bible.simplecohortllc.com/api/v1/verses/KJV/John/3/16"

# With subscription (includes character-range red letter data)
curl -H "x-api-key: YOUR_API_KEY" \
  "https://bible.simplecohortllc.com/api/v1/verses/KJV/John/3/16"

Example Response

json
{
  "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
}