SDKs
Three official clients wrap the API so you can call methods instead of writing GraphQL. All three are MIT licensed and published.
| Language | Package | Source |
|---|---|---|
| Ruby | bibleql-ruby on RubyGems | lporras/bibleql-ruby |
| Node.js / TypeScript | bibleql-js on npm | lporras/bibleql-js |
| Python | bibleql on PyPI | lporras/bibleql-python |
gem "bibleql-ruby"
npm install bibleql-js
pip install bibleql
Then see Configuring the SDKs for where to initialize the client.
There is also an examples repository showing the Ruby and Node clients in use.
Coverage
No SDK covers the whole schema yet. Where a method is missing, use the GraphQL or cURL form — every example on this site shows both.
| Query | Ruby | Node.js | Python |
|---|---|---|---|
translations | ✅ | ✅ | ✅ |
translation | ✅ | ✅ | ✅ |
books | ✅ | ✅ | ✅ |
languages | ✅ | ✅ | ✅ |
passage | ✅ | ✅ | ✅ |
chapter | ✅ | ✅ | ✅ |
verse | ✅ | ✅ | ✅ |
randomVerse | ✅ | ✅ | ✅ |
search | ✅ | ✅ | ✅ |
verseOfTheDay | ✅ | ✅ | ✅ |
bibleIndex | ✅ | ✅ | ✅ |
semanticSearch | ❌ | ✅ | ✅ |
concordance | ❌ | ❌ | ✅ |
concordanceIndex | ❌ | ❌ | ✅ |
The concordance family is only in the Python client so far. Concordance shows the GraphQL directly. Offline packages are not in any client yet.
All are server-side only
bibleql-js is built for Node.js and its README says explicitly not to use it in frontend
code. Bundling it into a browser app exposes your key to anyone who opens devtools.
If you need Bible text in a client application, call BibleQL from your own backend and proxy the result.
Typed errors
All three map API failures to exception classes, so you can branch on type rather than parsing messages:
| Condition | Ruby | Node.js | Python |
|---|---|---|---|
| Bad key | BibleQL::AuthenticationError | AuthenticationError | bibleql.AuthenticationError |
| Rate limited | BibleQL::RateLimitError | RateLimitError | bibleql.RateLimitError |
| Not found | BibleQL::NotFoundError | NotFoundError | bibleql.NotFoundError |
| Server error | BibleQL::ServerError | ServerError | bibleql.ServerError |
| Timeout | BibleQL::TimeoutError | TimeoutError | bibleql.RequestTimeoutError |
| Network failure | BibleQL::ConnectionError | ConnectionError | bibleql.NetworkError |
| GraphQL error | BibleQL::QueryError | QueryError | bibleql.QueryError |
See Errors for the underlying wire format.
The Ruby and Node SDKs currently default to a Render-hosted URL rather than
https://bibleql.org/graphql. The Python client already defaults to bibleql.org.
If you want to pin the canonical endpoint, set it explicitly — api_url in Ruby, apiUrl in
Node. Each SDK page shows how.