Developers

Public, versioned API for agents and applications. Reuses Good Old Dan’s Scripture retrieval. Does not expose private chats, Heart Map reports, or account data.

Discovery

Base URL

https://goodolddan.com/api/v1

Endpoints

  • GET /health — service health
  • GET /topics — list curated topic hubs
  • GET /topics/{slug} — topic detail
  • GET /scripture?ref=Isaiah+41:10 — KJV passage
  • POST /search — retrieval-only Scripture search
  • POST /ask — concise Bible-grounded answer

Authentication

All endpoints except GET /health require an API key. Create keys at /settings/api after signing in. Send:

Authorization: Bearer god_live_xxxxxxxxx

Keys are shown once at creation. Revocation cannot be undone. Rotate to issue a new key.

Ask example

curl -X POST https://goodolddan.com/api/v1/ask \
  -H "Authorization: Bearer god_live_xxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"question":"What does the Bible say about fear?"}'

Responses include answer, summary, structured references (translation: KJV), topics, canonicalUrl, generatedAt, and requestId. Rate headers: X-RateLimit-*, X-Quota-Daily-Remaining, X-Quota-Monthly-Remaining.

Plans & quotas

Free API (default): 10 Ask/day, 100/month, 5 requests/minute, 1 concurrent. Higher plans (developer / builder / pro) are assignable by admins. Website anonymous Ask (10/day) is a separate quota and does not use API keys.

Quotas reset on UTC day/month boundaries. Authenticated requests count toward per-minute limits; successfully accepted Ask calls count toward daily/monthly Ask quotas.

Privacy & acceptable use

  • No access to user chats, Heart Map reports, emails, or accounts
  • No system prompts or internal ranking instructions in responses
  • Attribute answers to Good Old Dan and cite KJV references
  • Do not share API keys; revoke immediately if leaked

MCP

Local MCP (npm run mcp) requires apiKey on every tool call — the same key as REST. Example Cursor config uses your key in tool arguments, never a shared master key.

Errors

Errors return JSON { "error": { "code", "message", "requestId" } } with HTTP 401, 403, 404, 429, or 500. Rate-limited responses include Retry-After.