API.bible Logo

API.Bible allows any developer to include Scripture content and text anywhere in their website or application for non-commercial purposes.

Getting Started

Authentication

Creating an Account

Before you can access the API you must first create an Account to retrieve your own personalized API key. Head on over to our sign up page to get started.

Once your application has been approved you can find your API key in your Dashboard settings.

If at any point you need further assistance, please visit our support page!

Accessing the API

Authenticate your account when using the API by including your secret API key in each request. You can manage your API keys your account's dashboard. Your API keys carry many privileges, so be sure to keep them private.

The authentication process uses a variation of HTTP Basic Auth. For each request you must place your private key into the api-key header.

API Authentication

curl --request GET \
--url https://api.scripture.api.bible/v1/bibles \
--header 'api-key: test_okikJOvBiI2HlWgH4'

Errors

The API uses the following response status codes, as defined in the RFC 2616 and RFC 6585.

HTTP status code summary
Code Reason
200 Success
400 Invalid ID supplied
401 The API key provided is either missing, invalid, or unauthorized for API access.
403 Server understood the request, but provided API key is not authorized to retrieve this information.
404 Resource not found.

Bibles

All bibles

The response from this call will return a list of all bibles that are authorized for your account.

You can also retrieve bibles in several languages by specifying a 3 digit language code in the ISO 639-3 format.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": [
    {
      "abbreviation": "GNTNT",
      "abbreviationLocal": "GNTNT",
      "copyrightStatement": "Good News Translation® (Today’s English Version, Second Edition) © 1992 American Bible Society. All rights reserved. Bible text from the Good News Translation (GNT) is not to be reproduced in copies or otherwise by any means except as permitted in writing by American Bible Society, 1865 Broadway, New York, NY 10023 ( www.americanbible.org ).",
      "dblId": "61fd76eafa1577c2",
      "id": "61fd76eafa1577c2-03",
      "language": {
        "id": "eng",
        "name": "English",
        "nameLocal": "English",
        "script": "Latin",
        "scriptDirection": "LTR"
      },
      "name": "Good News Translation (US Version) NT",
      "nameLocal": "Good News Translation (US Version) NT"
    },

    ....
  ]
}
        
Query Params
language
string

A 3 digit language code that represents the desired language of a bible.

abbreviation
string

Abbrevated bible name.

name
string

Full or partial name of bible's that are authorized.

Headers
api-key
string

required Authorized access key

Specific bible

Supply the bible id that was returned from fetching all bibles, and Api.bible will return a single object containing information about the specified bible.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": {
    "abbreviation": "GNTNT",
    "abbreviationLocal": "GNTNT",
    "copyrightStatement": "Good News Translation® (Today’s English Version, Second Edition) © 1992 American Bible Society. All rights reserved. Bible text from the Good News Translation (GNT) is not to be reproduced in copies or otherwise by any means except as permitted in writing by American Bible Society, 1865 Broadway, New York, NY 10023 ( www.americanbible.org ).",
    "dblId": "61fd76eafa1577c2",
    "id": "61fd76eafa1577c2-03",
    "language": {
      "id": "eng",
      "name": "English",
      "nameLocal": "English",
      "script": "Latin",
      "scriptDirection": "LTR"
    },
    "name": "Good News Translation (US Version) NT",
    "nameLocal": "Good News Translation (US Version) NT"
  }
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

Headers
api-key
string

required Authorized access key

Books

All books

Supply the bible id that was returned from fetching all bibles, and Api.bible will return a list of all books that belong to the specified bible.

You may also specify if you want each book to include just chapters or chapters and sections.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/books \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/books',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/books")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/books");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/books"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": [
    {
      "id": "MAT",
      "bibleId": "61fd76eafa1577c2-03",
      "abbreviation": "Mt",
      "name": "Matthew",
      "nameLong": "The Gospel according to MATTHEW"
    },
    {
      "id": "MRK",
      "bibleId": "61fd76eafa1577c2-03",
      "abbreviation": "Mk",
      "name": "Mark",
      "nameLong": "The Gospel according to MARK"
    },
    {
      "id": "LUK",
      "bibleId": "61fd76eafa1577c2-03",
      "abbreviation": "Lk",
      "name": "Luke",
      "nameLong": "The Gospel according to LUKE"
    },

    ...
  ]
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

Query Params
include-chapters
boolean

Include a list of chapter summaries for each given book.

include-chapters-and-sections
boolean

Include a list of chapters and sub-list of chapter-selection summaries for each given book.

Headers
api-key
string

required Authorized access key

Specific book

Supply the bible id that was returned from all bibles, and the book id that was the response from all books. Api.bible will then respond with a single object containing information about the specified book.

You may also specify if you want each book to include chapters.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": {
    "id": "MAT",
    "bibleId": "61fd76eafa1577c2-03",
    "abbreviation": "Mt",
    "name": "Matthew",
    "nameLong": "The Gospel according to MATTHEW",
    "chapters": [
      {
        "id": "MAT.1",
        "bibleId": "61fd76eafa1577c2-03",
        "bookId": "MAT",
        "number": "1",
        "position": 1
      },
      {
        "id": "MAT.10",
        "bibleId": "61fd76eafa1577c2-03",
        "bookId": "MAT",
        "number": "10",
        "position": 10
      },

      ....
     ],
  }
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

bookId
string

required The ID of the desired book (found when querying for all books for a given bible)

Query Params
include-chapters
boolean

Include a list of chapter summaries for the given book.

Headers
api-key
string

required Authorized access key

Chapters

All chapters

Supply the book id that was returned from fetching all books, and Api.bible will return a list of all chapters that belong to the desired book.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/chapters \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/chapters',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/chapters")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/chapters");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/chapters"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": [
    {
      "id": "MAT.intro",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "number": "intro"
    },
    {
      "id": "MAT.1",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "number": "1"
    },
    {
      "id": "MAT.2",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "number": "2"
    },

    ....
  ]
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

bookId
string

required The ID of the desired book (found when querying for all books for a given bible)

Headers
api-key
string

required Authorized access key

Specific chapter

Supply the chapter id that was returned from fetching all chapters and Api.bible will return a formatted content block containing all chapter related material.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": {
    "id": "MAT.1",
    "bibleId": "61fd76eafa1577c2-03",
    "number": "1",
    "bookId": "MAT",
    "content": "

The Ancestors of Jesus Christ

(Luke 3.23-38)

1This is the list of the ancestors of Jesus Christ, a descendant of David, who was a descendant of Abraham.

2-6aFrom Abraham to King David, the following ancestors are listed: Abraham, Isaac, Jacob, Judah and his brothers; then Perez and Zerah (their mother was Tamar), Hezron, Ram, Amminadab, Nahshon, Salmon, Boaz (his mother was Rahab), Obed (his mother was Ruth), Jesse, and King David.

6b-11From David to the time when the people of Israel were taken into exile in Babylon, the following ancestors are listed: David, Solomon (his mother was the woman who had been Uriah's wife), Rehoboam, Abijah, Asa, Jehoshaphat, Jehoram, Uzziah, Jotham, Ahaz, Hezekiah, Manasseh, Amon, Josiah, and Jehoiachin and his brothers.

12-16From the time after the exile in Babylon to the birth of Jesus, the following ancestors are listed: Jehoiachin, Shealtiel, Zerubbabel, Abiud, Eliakim, Azor, Zadok, Achim, Eliud, Eleazar, Matthan, Jacob, and Joseph, who married Mary, the mother of Jesus, who was called the Messiah.

17So then, there were fourteen generations from Abraham to David, and fourteen from David to the exile in Babylon, and fourteen from then to the birth of the Messiah.

The Birth of Jesus Christ

(Luke 2.1-7)

18 This was how the birth of Jesus Christ took place. His mother Mary was engaged to Joseph, but before they were married, she found out that she was going to have a baby by the Holy Spirit. 19Joseph was a man who always did what was right, but he did not want to disgrace Mary publicly; so he made plans to break the engagement privately. 20While he was thinking about this, an angel of the Lord appeared to him in a dream and said, “Joseph, descendant of David, do not be afraid to take Mary to be your wife. For it is by the Holy Spirit that she has conceived. 21 She will have a son, and you will name him Jesus—because he will save his people from their sins.”

22Now all this happened in order to make come true what the Lord had said through the prophet, 23 “A virgin will become pregnant and have a son, and he will be called Immanuel” (which means, “God is with us”).

24So when Joseph woke up, he married Mary, as the angel of the Lord had told him to. 25 But he had no sexual relations with her before she gave birth to her son. And Joseph named him Jesus.

", "next": { "id": "MAT.2", "number": "2", "bookId": "MAT" }, "previous": { "id": "MAT.intro", "number": "intro", "bookId": "MAT" } }, "meta": { "fums": "", "fumsId": "8cc64ae5-fc36-4d38-92da-92fab5d0ebc6", "fumsJsInclude": "cdn.scripture.api.bible/fums/fumsv2.min.js", "fumsJs": "var _BAPI=_BAPI||{};if(typeof(_BAPI.t)!='undefined'){ _BAPI.t('8cc64ae5-fc36-4d38-92da-92fab5d0ebc6'); }", "fumsNoScript": "\"\"" } }
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

chapterId
string

required The ID of the desired chapter (as found when querying for all chapters for a desired book)

Query Params
content-type
string

Format for which the content will be returned in as. Available in: html(default), json, and text

include-notes
boolean

Include footnotes

include-titles
boolean

Include section titles in content

include-chapter-numbers
boolean

Include chapter numbers in content

include-verse-numbers
boolean

Include verse numbers in content

include-verse-spans
boolean

Include spans that wrap verse numbers and verse text for bible content.

parallels
string

Comma delimited list of bible id's

Headers
api-key
string

required Authorized access key

Sections

Chapter sections

Supply the chapter id that was returned from fetching all chapters and Api.bible will return a list of all sections for the designated chapter.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/sections \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/sections',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/sections")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/sections");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/sections"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": [
    {
      "id": "MAT.S1",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "The Ancestors of Jesus Christ"
    },
    {
      "id": "MAT.S2",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "The Birth of Jesus Christ"
    }
  ]
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

chapterId
string

required The ID of the desired chapter (as found when querying for all chapters for a given book of a bible)

Headers
api-key
string

required Authorized access key

Book sections

Supply the book id that was returned from all books and Api.bible will return a list of all sections for the designated chapter.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/sections \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/sections',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/sections")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/sections");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/books/bookId/sections"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": [
    {
      "id": "MAT.S1",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "The Ancestors of Jesus Christ"
    },
    {
      "id": "MAT.S2",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "The Birth of Jesus Christ"
    },
    {
      "id": "MAT.S3",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "Visitors from the East"
    },
    {
      "id": "MAT.S4",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "The Escape to Egypt"
    },
    {
      "id": "MAT.S5",
      "bibleId": "61fd76eafa1577c2-03",
      "bookId": "MAT",
      "title": "The Killing of the Children"
    },

    ....
  ]
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

bookId
string

required The ID of the desired book (as found when querying for books from the provided bible)

Headers
api-key
string

required Authorized access key

Specific section

Supply the section id that was returned from all chapter-sections or from all book-sections. Api.bible will then return a formatted content block containing all section related material.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/sections/sectionId \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/sections/sectionId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/sections/sectionId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/sections/sectionId");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/sections/sectionId"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": {
    "id": "MAT.S1",
    "bibleId": "61fd76eafa1577c2-03",
    "bookId": "MAT",
    "chapterId": "MAT.1",
    "title": "The Ancestors of Jesus Christ",
    "content": "

The Ancestors of Jesus Christ

(Luke 3.23-38)

1This is the list of the ancestors of Jesus Christ, a descendant of David, who was a descendant of Abraham.

2-6aFrom Abraham to King David, the following ancestors are listed: Abraham, Isaac, Jacob, Judah and his brothers; then Perez and Zerah (their mother was Tamar), Hezron, Ram, Amminadab, Nahshon, Salmon, Boaz (his mother was Rahab), Obed (his mother was Ruth), Jesse, and King David.

6b-11From David to the time when the people of Israel were taken into exile in Babylon, the following ancestors are listed: David, Solomon (his mother was the woman who had been Uriah's wife), Rehoboam, Abijah, Asa, Jehoshaphat, Jehoram, Uzziah, Jotham, Ahaz, Hezekiah, Manasseh, Amon, Josiah, and Jehoiachin and his brothers.

12-16From the time after the exile in Babylon to the birth of Jesus, the following ancestors are listed: Jehoiachin, Shealtiel, Zerubbabel, Abiud, Eliakim, Azor, Zadok, Achim, Eliud, Eleazar, Matthan, Jacob, and Joseph, who married Mary, the mother of Jesus, who was called the Messiah.

17So then, there were fourteen generations from Abraham to David, and fourteen from David to the exile in Babylon, and fourteen from then to the birth of the Messiah.

", "next": { "id": "MAT.S2", "title": "The Birth of Jesus Christ" } }, "meta": { "fums": "", "fumsId": "a3f85a7c-f132-4b4c-a336-4ae9ffbd1bfe", "fumsJsInclude": "cdn.scripture.api.bible/fums/fumsv2.min.js", "fumsJs": "var _BAPI=_BAPI||{};if(typeof(_BAPI.t)!='undefined'){ _BAPI.t('a3f85a7c-f132-4b4c-a336-4ae9ffbd1bfe'); }", "fumsNoScript": "\"\"" } }
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

sectionsId
string

required The ID of the desired chapter (as found when querying for books from the provided bible)

Query Params
content-type
string

Format for which the content will be returned in as. Available in: html(default), json, and text

include-notes
boolean

Include footnotes

include-titles
boolean

Include section titles in content

include-chapter-numbers
boolean

Include chapter numbers in content

include-verse-numbers
boolean

Include verse numbers in content

include-verse-spans
boolean

Include spans that wrap verse numbers and verse text for bible content.

parallels
string

Comma delimited list of bible id's

Headers
api-key
string

required Authorized access key

Verses

All verses

Supply the chapter id that was returned from fetching all chapters and Api.bible will return a list of all verses for the designated chapter in a book.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/verses \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/verses',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/verses")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/verses");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/chapters/chapterId/verses"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": [
    {
      "id": "MAT.1.1",
      "orgId": "MAT.1.1",
      "bookId": "MAT",
      "chapterId": "MAT.1",
      "bibleId": "61fd76eafa1577c2-03"
    },
    {
      "id": "MAT.1.2-MAT.1.6a",
      "orgId": "MAT.1.2-MAT.1.6a",
      "bookId": "MAT",
      "chapterId": "MAT.1",
      "bibleId": "61fd76eafa1577c2-03"
    },
    {
      "id": "MAT.1.6b-MAT.1.11",
      "orgId": "MAT.1.6b-MAT.1.11",
      "bookId": "MAT",
      "chapterId": "MAT.1",
      "bibleId": "61fd76eafa1577c2-03"
    },
    {
      "id": "MAT.1.12-MAT.1.16",
      "orgId": "MAT.1.12-MAT.1.16",
      "bookId": "MAT",
      "chapterId": "MAT.1",
      "bibleId": "61fd76eafa1577c2-03"
    },

    ....
  ]
}
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

chapterId
string

required The ID of the desired chapter (as found when querying for all chapters for a given book of a bible)

Headers
api-key
string

required Authorized access key

Specific verse


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/verses/verseId \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/verses/verseId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/verses/verseId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/verses/verseId");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/verses/verseId"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": {
    "id": "MAT.1.20",
    "orgId": "MAT.1.20",
    "bookId": "MAT",
    "chapterId": "MAT.1",
    "bibleId": "61fd76eafa1577c2-03",
    "content": "

20While he was thinking about this, an angel of the Lord appeared to him in a dream and said, “Joseph, descendant of David, do not be afraid to take Mary to be your wife. For it is by the Holy Spirit that she has conceived.

", "next": { "id": "MAT.1.21", "number": "21" }, "previous": { "id": "MAT.1.19", "number": "19" } }, "meta": { "fums": "", "fumsId": "32ce3b10-debf-4b7c-bc01-5331b82e970b", "fumsJsInclude": "cdn.scripture.api.bible/fums/fumsv2.min.js", "fumsJs": "var _BAPI=_BAPI||{};if(typeof(_BAPI.t)!='undefined'){ _BAPI.t('32ce3b10-debf-4b7c-bc01-5331b82e970b'); }", "fumsNoScript": "\"\"" } }
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

verseId
string

required The ID of the desired verse (as found when querying for all verses)

Query Params
content-type
string

Format for which the content will be returned in as. Available in: html(default), json, and text

include-notes
boolean

Include footnotes

include-titles
boolean

Include section titles in content

include-chapter-numbers
boolean

Include chapter numbers in content

include-verse-numbers
boolean

Include verse numbers in content

include-verse-spans
boolean

Include spans that wrap verse numbers and verse text for bible content.

parallels
string

Comma delimited list of bible id's

Headers
api-key
string

required Authorized access key

Passages

All passages

To get information about an entire set of passages pertaining to a chapter, supply only the chapter id that was returned from fetching all chapters.

To get a slimmed down range of passages, find two verses id's from fetching all verses, then contacted them together with a dash(-) separating the two id's.

Example:


Verse id 1:  MAT.1.2
Verse id 2: MAT.1.11
passage id = MAT.1.2-MAT.1.11

The API response will return a formatted content block containing material for a range of verses.


curl --request GET \
  --url https://api.scripture.api.bible/v1/bibles/bibleId/passages/passageId \
  --header 'api-key: api-key'

var request = require("request");

var options = { method: 'GET',
  url: 'https://api.scripture.api.bible/v1/bibles/bibleId/passages/passageId',
  headers: { 'api-key': 'api-key' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

require 'uri'
require 'net/http'

url = URI("https://api.scripture.api.bible/v1/bibles/bibleId/passages/passageId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = 'api-key'

response = http.request(request)
puts response.read_body

var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.scripture.api.bible/v1/bibles/bibleId/passages/passageId");
xhr.setRequestHeader("api-key", "api-key");

xhr.send(data);

import requests

url = "https://api.scripture.api.bible/v1/bibles/bibleId/passages/passageId"

headers = {'api-key': 'api-key'}

response = requests.request("GET", url, headers=headers)

print(response.text)
200 OK

{
  "data": {
    "id": "MAT.1.12-MAT.1.20",
    "orgId": "MAT.1.12-MAT.1.20",
    "bibleId": "61fd76eafa1577c2-03",
    "bookId": "MAT",
    "chapterIds": [
      "MAT.1"
    ],
    "content": "

12-16From the time after the exile in Babylon to the birth of Jesus, the following ancestors are listed: Jehoiachin, Shealtiel, Zerubbabel, Abiud, Eliakim, Azor, Zadok, Achim, Eliud, Eleazar, Matthan, Jacob, and Joseph, who married Mary, the mother of Jesus, who was called the Messiah.

17So then, there were fourteen generations from Abraham to David, and fourteen from David to the exile in Babylon, and fourteen from then to the birth of the Messiah.

The Birth of Jesus Christ

(Luke 2.1-7)

18 This was how the birth of Jesus Christ took place. His mother Mary was engaged to Joseph, but before they were married, she found out that she was going to have a baby by the Holy Spirit. 19Joseph was a man who always did what was right, but he did not want to disgrace Mary publicly; so he made plans to break the engagement privately. 20While he was thinking about this, an angel of the Lord appeared to him in a dream and said, “Joseph, descendant of David, do not be afraid to take Mary to be your wife. For it is by the Holy Spirit that she has conceived.

" }, "meta": { "fums": "", "fumsId": "0699224d-502a-4225-8542-e95b4892adbf", "fumsJsInclude": "cdn.scripture.api.bible/fums/fumsv2.min.js", "fumsJs": "var _BAPI=_BAPI||{};if(typeof(_BAPI.t)!='undefined'){ _BAPI.t('0699224d-502a-4225-8542-e95b4892adbf'); }", "fumsNoScript": "\"\"" } }
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

passageId
string

required An ID range of a set of verses, concatenated together by a dash.(as found when querying for all verses)

Query Params
content-type
string

Format for which the content will be returned in as. Available in: html(default), json, and text

include-notes
boolean

Include footnotes

include-titles
boolean

Include section titles in content

include-chapter-numbers
boolean

Include chapter numbers in content

include-verse-numbers
boolean

Include verse numbers in content

include-verse-spans
boolean

Include spans that wrap verse numbers and verse text for bible content.

parallels
string

Comma delimited list of bible id's

Headers
api-key
string

required Authorized access key

Search

Searching

Supply the bible id that was returned from all bibles followed by submitting your query and Api.bible will return a list of matching verses or passages.

Queries by default will match all verses, for all books. In order to query for specific passage content, you must structure your query in a particular way.

Here are a few examples for querying for passages:

Description Query Structure Example
for a single passage verse {passage} {chapter}:{verse} ..?query="John 3:16"
for a range of verses {passage} {chapter}:{verse}-{verse} ..?query="John 3:16-21"
for multiple chapter verses {passage} {chapter}:{verse}, {chapter}:{verse} ..?query="John 3:16, 4:22"
for multiple passages {passage1} {chapter}:{verse}, {passage2} {chapter}:{verse} ... ..?query=”John 3:16-4:2, Matthew 1:2"
Path Params
bibleId
string

required The ID of the desired bible (found when querying for all bibles)

Query Params
query
string

required Search query

limit
int32

Maximum number of results that will return (10)

offset
int32

Offsetting search results for pagination (used in conjunction with limit) (0)

Headers
api-key
string

required Authorized access key