Base URL
https://scriptureflow-api-preview.pages.dev
Step 1 — Use exact version keys
The version value is an exact lookup key, not a display name.
For the King James Version, use:
en-kjv
Do not use:
kjv
Do not use:
en-KJV
To see available translations and version keys, use:
https://scriptureflow-api-preview.pages.dev/translations.json
Step 2 — Choose the right endpoint
| Need | Use |
|---|---|
| A specific verse or same-chapter passage | /api/verse |
| A stable daily verse for a translation | /[version]/random.json |
| A fresh random verse on refresh | /api/quick-verse?version=[version] |
Lookup a single verse
Use /api/verse with version, book, chapter, and verse.
https://scriptureflow-api-preview.pages.dev/api/verse?version=en-kjv&book=John&chapter=3&verse=16
JavaScript
const baseUrl = "https://scriptureflow-api-preview.pages.dev";
const url = `${baseUrl}/api/verse?version=en-kjv&book=John&chapter=3&verse=16`;
const response = await fetch(url);
const data = await response.json();
console.log(data.reference);
console.log(data.result.text);
Python
import requests
base_url = "https://scriptureflow-api-preview.pages.dev"
url = f"{base_url}/api/verse?version=en-kjv&book=John&chapter=3&verse=16"
response = requests.get(url, timeout=20)
data = response.json()
print(data["reference"])
print(data["result"]["text"])
cURL
curl "https://scriptureflow-api-preview.pages.dev/api/verse?version=en-kjv&book=John&chapter=3&verse=16"
Lookup a same-chapter passage
To request a passage range within the same chapter, add end_verse.
https://scriptureflow-api-preview.pages.dev/api/verse?version=en-kjv&book=Amos&chapter=8&verse=4&end_verse=6
JavaScript
const baseUrl = "https://scriptureflow-api-preview.pages.dev";
const url = `${baseUrl}/api/verse?version=en-kjv&book=Amos&chapter=8&verse=4&end_verse=6`;
const response = await fetch(url);
const data = await response.json();
console.log(data.reference);
console.log(data.result);
Lookup by free-text reference
You can also request a verse using a URL-encoded reference value.
https://scriptureflow-api-preview.pages.dev/api/verse?version=en-kjv&reference=John%203%3A16
JavaScript
const baseUrl = "https://scriptureflow-api-preview.pages.dev";
const reference = encodeURIComponent("John 3:16");
const url = `${baseUrl}/api/verse?version=en-kjv&reference=${reference}`;
const response = await fetch(url);
const data = await response.json();
console.log(data.reference);
console.log(data.result.text);
Use Verse of the Day
Verse of the Day is available at /[version]/random.json.
It is static generated JSON. It does not return a new verse on every refresh.
https://scriptureflow-api-preview.pages.dev/en-kjv/random.json
JavaScript
const baseUrl = "https://scriptureflow-api-preview.pages.dev";
const response = await fetch(`${baseUrl}/en-kjv/random.json`);
const data = await response.json();
console.log(data.reference);
console.log(data.text);
Use Quick Verse
Quick Verse returns a runtime-selected verse from the requested translation. Refreshing the request can return a different verse.
https://scriptureflow-api-preview.pages.dev/api/quick-verse?version=en-kjv
JavaScript
const baseUrl = "https://scriptureflow-api-preview.pages.dev";
const response = await fetch(`${baseUrl}/api/quick-verse?version=en-kjv`);
const data = await response.json();
console.log(data.reference);
console.log(data.text);
Python
import requests
url = "https://scriptureflow-api-preview.pages.dev/api/quick-verse?version=en-kjv"
response = requests.get(url, timeout=20)
data = response.json()
print(data["reference"])
print(data["text"])
cURL
curl "https://scriptureflow-api-preview.pages.dev/api/quick-verse?version=en-kjv"
Next steps
- Use
/translations.jsonto let users select valid translation keys. - Use
/api/versefor specific lookup and passage tools. - Use
/[version]/random.jsonfor stable daily displays. - Use
/api/quick-versefor “surprise me” or refreshable verse experiences.