Starter
$12 / month
25,000 API requests each month
Build scripture readers, search tools, and study applications with public-domain and explicitly licensed Bible text and Spirit Nation's source-study data. Every programmatic request requires an account and an active plan or approved ministry exception.
Public-domain editions and licensed editions are labelled separately. Responses containing licensed text include the copyright credit, source URL, license link and a change notice in the translation rights metadata. Retain those notices when reusing the text. Literal Standard Version rendering contributions use CC BY-SA 4.0; the Boyd reading edition uses CC BY 4.0 and a distinct adapted title.
API plans and request limits cover access to the hosted service. They do not narrow the source text license or charge for permission already granted by that license. The original distributor links remain available in each translation profile. Separate images and website materials are not included in the translated-text license.
Simple monthly plans
Choose a monthly plan when you are ready to build. Review the fixed request example below, or ask about a short trial or limited-access exception if you need time to evaluate the API.
$12 / month
25,000 API requests each month
$29 / month
100,000 API requests each month
$79 / month
500,000 API requests each month
Build a reader or reference tool from the editions that actually contain each work. Start with /api/v1/translations, then /api/v1/books?translation=EDITION_SLUG. The book list tells you which books and printed pages or chapters that edition provides. Browse the library to check an edition before you build around it.
For example, the library has 1 Enoch in R. H. Charles's 1913 edition. This request asks for its first available printed page:
curl -H "Authorization: Bearer YOUR_KEY" "https://spiritnation.loganpendragonforge.com/api/v1/text/enoch-charles-1913/1-enoch/188"
The JSON response contains meta, reference_system, translation, book, chapter and data. Read reference_system.chapter_label before calling the number a chapter; this edition uses printed pages. The data array contains the text records for that page. If a book is absent from an edition, choose another edition rather than assuming every work has the same coverage.
Keep the edition's source and rights notices with reused text. Read the licensing notes, check access plans, and use the endpoint guide for response details and limits. API requests need an active key from a plan or an approved exception; browsing the website does not require one.
This fixed example shows the request format without providing an unmetered data endpoint. Every `/api/v1` data request requires an active API key tied to a paid plan or approved exception; only the OpenAPI catalog is public.
GET /api/v1/text/kjv/genesis/1/1
Authorization: Bearer YOUR_KEY
{
"meta": {"api_version": "v1", "endpoint": "verse"},
"translation": {"slug": "kjv", "abbreviation": "KJV"},
"book": {"slug": "genesis", "name": "Genesis"},
"data": {"verse": 1, "text": "Public-domain scripture text appears here."}
}
Approved API keys can request translation metadata, book lists, chapter lists, chapter text, individual verses where supported, verse ranges, search results, and word-study data. Use JSON responses for scripture readers, widgets, reference tools, and study applications.
Use `/api/v1/text/...`, `/api/v1/study/...`, and `/api/v1/morphology/...` for new integrations. The direct `/api/v1/{translation}/...` routes remain active as compatibility aliases.
An OpenAPI-style endpoint catalog is available at `/api/v1/openapi`. Approved keys can check quota and tier status at `/api/v1/key`.
New text, study, and morphology responses include a `meta` envelope with API version, preferred namespaces, and data-policy notes. Generated or rule-aligned morphology is always labeled; only tokens with `verified_by_spirit_nation: true` should be treated as manually reviewed.
The API includes the same active editions as the website, including the Apocrypha, Enoch, Ahikar and related writings. Start with /api/v1/translations, then request /api/v1/books?translation=EDITION_SLUG. A book is listed only when that edition contains text for it.
Book lists include first_chapter and available_chapter_count. Use /api/v1/text/EDITION_SLUG/BOOK_SLUG for its actual chapter or page numbers. Some editions start at a printed page such as 724; do not assume every book starts at 1 or has continuous numbering.
Book-list, book and chapter responses include reference_system. Follow its chapter_label and unit_label. For kind: chapter-text, request complete chapters or pages; the internal text record is not a verse. Individual-verse requests return 422 verse_navigation_unavailable for these editions. Other editions may retain lettered or ranged verse_label values.
KJV includes 1 and 2 Maccabees. For 3 or 4 Maccabees, choose an edition that contains that book. Switching editions does not establish equivalent verse numbering or verified word-level source alignment.
GET /api/v1/books?translation=web
GET /api/v1/text/web/4-maccabees
GET /api/v1/text/ahikar-harris-lewis-conybeare-1913/ahikar-syriac-a
GET /api/v1/text/ahikar-harris-lewis-conybeare-1913/ahikar-syriac-a/724
GET /api/v1/openapi
GET /api/v1/key
GET /api/v1/translations
GET /api/v1/books?translation=kjv
GET /api/v1/source-texts
GET /api/v1/source-coverage
GET /api/v1/text/kjv/genesis/1/1
GET /api/v1/text/kjv/range?from=genesis.1.1&to=genesis.1.5
GET /api/v1/morphology/kjv/genesis/1/1
GET /api/v1/study/kjv/range?from=genesis.1.1&to=genesis.1.3
GET /api/v1/kjv/genesis
GET /api/v1/kjv/genesis/1
GET /api/v1/kjv/genesis/1/3
GET /api/v1/study/kjv/genesis/1/1
GET /api/v1/kjv/range?from=genesis.1.1&to=genesis.1.5
GET /api/v1/search?translation=kjv&q=light
Send approved keys as `Authorization: Bearer YOUR_KEY`, `X-Spirit-Nation-Key`, or `?key=YOUR_KEY`.
Use the versioned namespaces for all new work: `/text` for readable scripture, `/study` when you need readable text plus source panels, `/morphology` when you only need word-study tokens, and `/source-coverage` before making strict claims about a source layer.
Text reader: /api/v1/text/kjv/john/1/1
Study view: /api/v1/study/kjv/genesis/1/1?source_role=Original%20Language
Review tools: /api/v1/morphology/kjv/genesis/1/1?review_status=needs-review
Quality checks: /api/v1/source-coverage
curl -H "X-Spirit-Nation-Key: YOUR_KEY" \
"https://spiritnation.loganpendragonforge.com/api/v1/text/kjv/genesis/1/1"
const res = await fetch("https://spiritnation.loganpendragonforge.com/api/v1/study/kjv/john/1/1", {
headers: { "X-Spirit-Nation-Key": "YOUR_KEY" }
});
const data = await res.json();
$response = file_get_contents("https://spiritnation.loganpendragonforge.com/api/v1/source-coverage", false, stream_context_create([
"http" => ["header" => "X-Spirit-Nation-Key: YOUR_KEY\r\n"]
]));
Keep a tiny client wrapper around the base URL and API key. Treat generated morphology as opt-in unless your app is explicitly a research or review tool.
const spiritNation = {
baseUrl: "https://spiritnation.loganpendragonforge.com/api/v1",
key: "YOUR_KEY",
async get(path) {
const res = await fetch(`${this.baseUrl}${path}`, {
headers: { "X-Spirit-Nation-Key": this.key }
});
if (!res.ok) throw await res.json();
return res.json();
}
};
const verse = await spiritNation.get("/text/kjv/psalms/23/1");
const study = await spiritNation.get("/study/kjv/genesis/1/1?verified_only=1");
Use one key per project. Keep keys private and send them through the bearer header whenever possible.
Authorization: Bearer sn_your_key_here
Ranges use canonical references in the same translation. Keep the start and end reference in order.
GET /api/v1/text/kjv/range?from=genesis.1.1&to=genesis.1.5
Search returns matching verse records for the selected translation and query text.
GET /api/v1/search?translation=kjv&q=light
Study responses return readable verse text plus original-language panels when source data has been attached. Tokens include study status, part of speech, morphology, source, and license metadata when available.
GET /api/v1/study/kjv/john/1/1
Use the study range endpoint for a small reference window with readable text and source panels. Keep ranges tight; the current study range limit is 100 verses.
GET /api/v1/study/kjv/range?from=john.1.1&to=john.1.5
The `/text` namespace is the cleaner forward path for readable scripture text. The older direct translation routes remain available for compatibility.
GET /api/v1/text/kjv/genesis/1/1
The `/morphology` namespace returns source panels and token data only, without the readable translation wrapper, for tools that focus on word study. Add `verified_only=1` to return only manually reviewed Spirit Nation tokens, `include_generated=0` to hide generated/rule-aligned tokens, `source_role=Latin Tradition` to narrow panels by role, `confidence=low` to inspect weak generated morphology, or `review_status=needs-review` to pull review queues.
GET /api/v1/morphology/kjv/genesis/1/1
Coverage responses list imported source texts, canon coverage, word-token totals, morphology status buckets, review maturity, Phase 5 status, and license notes for source-study layers.
GET /api/v1/source-coverage
Approved integrations can check their tier, monthly quota, current usage, remaining calls, and last-used time.
GET /api/v1/key
The OpenAPI 3.1 catalog exposes the current v1 surface so clients and external documentation can be generated from a stable contract.
GET /api/v1/openapi
Authentication, inactive-key, and quota failures return JSON with a stable `error.code`, `error.message`, `error.status`, and optional details.
{"error":{"code":"api_key_required","status":401}}
`401` means no key was sent, `403` means the key is invalid or inactive, and `429` means the monthly quota has been exhausted.
429 monthly_quota_exceeded
New v1 responses use a stable top-level shape. Text endpoints return `translation`, `book`, and `data`; study endpoints add `readable_text` and `source_panels`; morphology endpoints return source panels and tokens only.
{
"meta": {
"api_version": "v1",
"endpoint": "study.verse",
"data_policy": {
"readable_text": "Public-domain and explicitly licensed editions; per-edition rights apply.",
"generated_morphology": "Generated data is labeled until verified."
}
},
"translation": {"slug": "kjv", "abbreviation": "KJV"},
"book": {"slug": "genesis", "name": "Genesis"},
"source_panels": []
}
GET /api/v1/study/kjv/genesis/1/1?verified_only=1
GET /api/v1/study/kjv/genesis/1/1?include_generated=0
GET /api/v1/morphology/kjv/genesis/1/1?confidence=low
GET /api/v1/morphology/kjv/genesis/1/1?source_role=Greek%20Tradition&review_status=needs-review
Source-study layers identify whether a panel is an original text, ancient Greek tradition, Latin tradition, or Aramaic/Syriac tradition.
source_text.source_role
Token data is labeled as imported, dataset-backed, lexicon-aligned, rule-aligned, pending, or review-needed instead of being presented as equally verified.
token_statuses.rule_aligned
Word-study tokens expose review notes, review timestamps, and whether Spirit Nation has manually verified the token correction.
tokens[].verified_by_spirit_nation
Source coverage includes per-source maturity counts so API users can see how much of a source is verified, generated, pending, or still needs review.
review_maturity.verified_percent
Use query filters when a client needs only reviewed data, wants to exclude generated morphology, wants a single source role, or wants a review-ready confidence/status queue.
GET /api/v1/study/kjv/genesis/1/1?verified_only=1&source_role=Original%20Language
GET /api/v1/study/kjv/genesis/1/1?confidence=low
GET /api/v1/morphology/kjv/genesis/1/1?review_status=needs-review
Coverage is broken down across Old Testament, New Testament, and Apocrypha so API users can see which traditions apply to which canon groups.
canon_coverage.old.verses
Latin Vulgate morphology is backed by GreLa v0.7 / latin-lemmatized-texts annotations under CC BY-SA 4.0. Preserve attribution when using source-study data outside Spirit Nation. Syriac/Peshitta morphology combines Apache-2.0 OpenSSI candidates where cleanly mapped with Spirit Nation preliminary morphology for remaining tokens; generated Syriac data remains review-required unless explicitly marked verified.
Create an account to subscribe, manage billing, and create project-specific API keys.
Create Account