How API.Bible Handles Verse Queries
Many API.Bible endpoints ultimately return verse-based content. This article explains how individual verses are identified, how verse requests work, and what your app receives in response.
How Verses Are Identified
Every verse in API.Bible has a unique Verse ID made up of three parts: a book abbreviation, a chapter number, and a verse number — joined by periods. A few examples:
GEN.1.1— Genesis 1:1JHN.3.16— John 3:16REV.21.4— Revelation 21:4
Verse IDs identify the Scripture reference itself, not the translation. That means JHN.3.16 refers to John 3:16 regardless of which Bible version you request.
The Two-Step Verse Query Pattern
If your application allows users to browse Scripture, a common pattern is as follows: first, get a list of verses for a chapter; then, fetch the content of a specific verse.
Step 1 — Get the list: Fetching the list of verses in a chapter returns reference metadata (Verse IDs, book, chapter, and verse numbers) but no Scripture text. This is useful for building navigation — for example, displaying a list of verse numbers a user can tap into.
Step 2 — Fetch a single verse: Once you have a Verse ID, you can request the full content for that verse. This request returns the Scripture text and is the primary content retrieval call your application will make.
In practice, the two calls might look like this:
GET /v1/bibles/{bibleId}/chapters/JHN.3/verses
GET /v1/bibles/{bibleId}/verses/JHN.3.16
What the Response Includes
When you fetch a single verse, the response includes:
- Verse content — the Scripture text, in whichever format you requested (see below)
- Reference — a human-readable citation, such as "Gen. 1:1"
- Copyright notice — required for display by most Bible publishers
- Navigation pointers — the Verse IDs for the previous and next verses, making it easy to build "Previous" and "Next" reading controls
- FUMS data — a tracking token required for Fair Use compliance. See Understanding FUMS for details on how to use it.
Content Format Options
When fetching a single verse, you can request the content in three formats using the content-type parameter:
- HTML (default) — Returns the verse wrapped in HTML markup, ready to render in a web page. When paired with API.Bible's scripture stylesheet, the content displays with proper formatting out of the box.
- JSON — Returns the verse as structured content blocks rather than pre-rendered HTML. This is ideal for native mobile apps or applications that render Scripture using their own UI components.
- Text — Returns plain text only, with no markup. Useful for lightweight use cases or when you just need the raw words.
Optional Display Parameters
Single-verse requests also support several optional parameters that control what's included in the content:
- include-verse-numbers — includes the verse number inline (on by default)
- include-titles — includes any section headings that appear above the verse (on by default)
- include-chapter-numbers — includes the chapter number inline (off by default)
- include-notes — includes footnotes (off by default)
- parallels — returns additional translations alongside the primary result
Searching for Verses by Keyword
If you don't know a verse's ID, the Search endpoint lets you find verses by keyword. A search returns any verse containing all the words in your query — word order doesn't matter, but every keyword must be present. Results are returned in relevance order by default.
The API also supports wildcards: * matches zero or more characters (so wo*d would match "word," "world," or "worshipped"), and ? matches a single character (so l?ve matches both "live" and "love").
Note that search results return plain verse text without footnotes or additional formatting. To get full formatted content for a verse you found via search, make a follow-up single-verse request using its Verse ID.
For full endpoint details and available parameters, see the Search documentation.