Christ Himself

Developer Documentation

API reference, embeddable widgets, and integration guides for the Christ Himself daily devotional.

The Christ Himself devotional provides a public JSON API with the full 366-day corpus in three languages, plus drop-in JavaScript widgets for embedding the devotional reader and audio player on any site. CORS is enabled on all endpoints.

API Reference

Endpoints

GET /api/v1/today — 302 redirect to the current day's JSON
GET /api/v1/random — 302 redirect to a random devotional entry
GET /api/v1/index.json — Full 366-day index with theme references
GET /api/v1/devotionals/{MM-DD}.json — Full day data (both periods, all languages)
GET /api/v1/devotionals/{MM-DD}/{am|pm}.json — Single period for a given day
GET /podcast/{en|pt|fr}.xml — RSS feed (rolling 365-day window)

Example

curl https://www.christhimself.com/api/v1/devotionals/05-28.json

Widget: Devotional Reader

Drop-in widget that renders the full devotional entry for the current day with morning/evening tabs, theme verse, summary, supporting scriptures, and four reflection questions.

Usage

<script src="https://www.christhimself.com/widgets/devotional.js"></script>
<div data-ch-devotional></div>

Attributes

AttributeTypeDescription
data-ch-langstringLanguage override: en, pt, or fr. Defaults to <html lang>.
data-ch-datestringPin to a specific date (MM-DD). Not yet implemented — shows today only.

Language Auto-Detect

The widget reads the <html lang> attribute on the page. Set <html lang="pt"> and the devotional renders in Portuguese automatically. Use data-ch-lang to override per element.

Dynamic Language Switching

The widget listens for a ch-lang-change custom event on document. Dispatch it to re-render all widget instances:

document.dispatchEvent(new CustomEvent('ch-lang-change'));

Widget: Audio Player

Drop-in widget that renders native <audio> controls for the current day's morning and evening recordings. Same language detection and event model as the devotional reader.

Usage

<script src="https://www.christhimself.com/widgets/audio-player.js"></script>
<div data-ch-audio></div>

Attributes

AttributeTypeDescription
data-ch-langstringLanguage override: en, pt, or fr.

Language Auto-Detect

Same as the devotional widget — reads <html lang> by default, overridable via data-ch-lang. Also responds to ch-lang-change events.

Full Embed Example

<!DOCTYPE html>
<html lang="en">
<head>
  <title>My Site</title>
</head>
<body>
  <h1>Today's Devotional</h1>
  <div data-ch-audio data-ch-lang="en"></div>
  <div data-ch-devotional data-ch-lang="en"></div>
  <script src="https://www.christhimself.com/widgets/audio-player.js"></script>
  <script src="https://www.christhimself.com/widgets/devotional.js"></script>
</body>
</html>

Language Codes

CodeLanguageTranslationPodcast Feed
enEnglishBSB (Berean Standard Bible)/podcast/en.xml
ptEuropean PortugueseBLJ (Bíblia Livre de Jenkins)/podcast/pt.xml
frParisian FrenchLSG (Louis Segond 1910)/podcast/fr.xml

Response Format

Each daily response contains both periods and all languages in a single JSON structure. For the full schema, fetch any date endpoint:

curl https://www.christhimself.com/api/v1/devotionals/05-28.json | jq .

Key fields: date, day, periods[].period (am/pm), periods[].languages.{lang}.theme, periods[].languages.{lang}.summary, periods[].languages.{lang}.verses[], periods[].languages.{lang}.questions, periods[].audio.{lang} (R2 audio URL).

More Resources

AI disclosure: AI tools were used to support editing, translation, and audio production. Scripture content was never AI-generated — every verse is deterministically copied from authoritative published translations (BSB, BLJ, LSG).

Morning Reading
Loading...