free-use-bible-api
v0.2.0
Published
Access over 1000 Bible translations in over 700 languages for free
Downloads
326
Readme
Free Use Bible API
TypeScript and JavaScript client for the public Free Use Bible API:
https://bible.helloao.org
Installation
npm install free-use-bible-apipnpm add free-use-bible-apiyarn add free-use-bible-apiQuick Start
import { FreeUseBibleApi } from 'free-use-bible-api';
const api = new FreeUseBibleApi();
const available = await api.getAvailableTranslations();
console.log('Total translations:', available.translations.length);
const books = await api.getTranslationBooks('BSB');
console.log('Books in BSB:', books.books.length);
const chapter = await api.getTranslationBookChapter('BSB', 'GEN', 1);
console.log('Verses in Genesis 1:', chapter.numberOfVerses);Client Options
You can customize the client with FreeUseBibleApiOptions:
import { FreeUseBibleApi } from 'free-use-bible-api';
const api = new FreeUseBibleApi({
endpoint: 'https://bible.helloao.org/',
useCache: true,
});endpoint: Base API endpoint.useCache: Enables in-memory response caching (default:true).
API Methods
Translations
getAvailableTranslations(endpoint?)getTranslationBooks(translation, endpoint?)getTranslationBookChapter(translation, book, chapter, endpoint?)getCompleteTranslation(translation, endpoint?)
getCompleteTranslation() disables per-request cache internally because payloads are typically large.
Commentaries
getAvailableCommentaries(endpoint?)getCommentaryBooks(commentary, endpoint?)getCommentaryBookChapter(commentary, book, chapter, endpoint?)
Datasets
getAvailableDatasets(endpoint?)getDatasetBooks(dataset, endpoint?)getDatasetBookChapter(dataset, book, chapter, endpoint?)
Chapter Navigation Helpers
getNextChapter(chapter, endpoint?)getPreviousChapter(chapter, endpoint?)
These helpers work with translation, commentary, and dataset chapter responses.
Examples
Get a complete translation
const complete = await api.getCompleteTranslation('BSB');
console.log(complete.translation.id);
console.log(complete.books.length);Read a commentary chapter
const comm = await api.getCommentaryBookChapter('matthew_henry', 'GEN', 1);
console.log(comm.book.name);Read a dataset chapter
const dataChapter = await api.getDatasetBookChapter(
'cross_references',
'JHN',
3
);
console.log(dataChapter.book.name);Navigate to next/previous chapter
const current = await api.getTranslationBookChapter('BSB', 'GEN', 1);
const next = await api.getNextChapter(current);
const previous = await api.getPreviousChapter(current);
console.log(next?.chapter.number);
console.log(previous?.chapter.number);Direct HTTP Endpoints
Translation endpoints
GET /api/available_translations.jsonGET /api/{translation}/books.jsonGET /api/{translation}/{book}/{chapter}.jsonGET /api/{translation}/complete.json
Commentary endpoints
GET /api/available_commentaries.jsonGET /api/{commentary}/books.jsonGET /api/{commentary}/{book}/{chapter}.json
Dataset endpoints
GET /api/available_datasets.jsonGET /api/d/{dataset}/books.jsonGET /api/d/{dataset}/{book}/{chapter}.json
Example requests:
curl https://bible.helloao.org/api/available_translations.json
curl https://bible.helloao.org/api/BSB/books.json
curl https://bible.helloao.org/api/BSB/GEN/1.json
curl https://bible.helloao.org/api/available_commentaries.json
curl https://bible.helloao.org/api/available_datasets.jsonError Handling
Methods throw on non-2xx responses.
A 404 response usually means one of the path values is invalid, for example:
- translation
- commentary
- dataset
- book
- chapter
Notes
- Uses the global
fetchAPI. - For Node.js, use a runtime that provides
fetch(Node 18+ recommended) or polyfill it.
