Verse of the Day
verseOfTheDay returns a curated verse for a given date. The selection comes from a
hand-maintained list, so it is a deliberate choice rather than a random pick — the same date
returns the same reference every time.
- GraphQL
- cURL
- Ruby
- Node.js
- Response
query {
verseOfTheDay(translation: "eng-web") {
reference
text
}
}
curl https://bibleql.org/graphql \
-H "Authorization: Bearer $BIBLEQL_API_KEY" \
-H "Content-Type: application/json" \
--data '{"query":"query { verseOfTheDay(translation: \"eng-web\") { reference text } }"}'
require "bibleql"
client = BibleQL::Client.new(
api_key: ENV.fetch("BIBLEQL_API_KEY"),
api_url: "https://bibleql.org/graphql"
)
passage = client.verse_of_the_day(translation: "eng-web")
puts passage.reference
puts passage.text
import { BibleQLClient } from "bibleql-js";
const client = new BibleQLClient({
apiKey: process.env.BIBLEQL_API_KEY!,
apiUrl: "https://bibleql.org/graphql",
});
const passage = await client.verseOfTheDay({
translation: "eng-web",
});
console.log(passage.reference, passage.text);
{
"data": {
"verseOfTheDay": {
"reference": "Philippians 1:21",
"text": "For to me to live is Christ, and to die is gain."
}
}
}
Arguments
| Argument | Default | Notes |
|---|---|---|
translation | eng-web | Any translation identifier |
date | today | An ISO 8601 date, YYYY-MM-DD |
A specific date
query {
verseOfTheDay(translation: "spa-rv1909", date: "2026-01-01") {
reference
text
translationName
}
}
Because the curation is by date and the text is by translation, the two are independent: the same day's verse can be rendered in any translation you like.
It returns a Passage
The return type is Passage, not Verse — the verse of the day is sometimes a short range
rather than a single verse. So verses may contain more than one entry, and text is the
joined form:
query {
verseOfTheDay {
reference
text
verses {
bookName
chapter
verse
text
}
}
}
Do not assume verses has exactly one element.
Caching
The result for a given date and translation is stable, which makes it ideal to cache for the rest of the day. A daily widget should fetch once, not once per page view.
If you display it in a user's local timezone, be aware the default date is resolved
server-side. For anything timezone-sensitive, pass date explicitly rather than relying on the
default.