Skip to main content
Watch: I Built an AI App Without Leaving Databricks

API

Public and operational endpoints for the Developers Digest platform. Most read endpoints require no authentication, while course chat and protected sync endpoints use Clerk or bearer-token auth.

GET/api/tools

List all tools in the directory with optional filtering.

Parameters

categorystringFilter by category (e.g., AI Coding)
qstringSearch tools by name, description, or tags
Response: { "tools": [...], "total": 64 }Cache: 1 hourAuth: None
GET/api/search-index

Full search index with all blog posts, guides, tools, videos, courses, and toolkit pages.

Response: [{ "type": "blog", "title": "...", "description": ...Cache: 1 minute + 5 min stale-while-revalidateAuth: None
GET/api/search.json

Server-side search over the full site index, ranked with the same Fuse.js config as the on-site search.

Parameters

qstringSearch query (required, min 2 characters)
typestringFilter by result type (blog, guide, tool, video, course, toolkit, page, app)
limitnumberMax results, 1-50 (default 20)
Response: { "query": "claude code", "count": 20, "results": ...Cache: 5 minutes + 1 hour stale-while-revalidateAuth: None
GET/api/sitemap.json

JSON mirror of sitemap.xml with URL, lastModified, changeFrequency, and priority per entry.

Response: { "generatedAt": "...", "count": 900, "entries": [...Cache: 1 hour + 24 hour stale-while-revalidateAuth: None
GET/api/health

Health check with content counts and required environment status.

Response: { "status": "healthy", "environment": "production"...Cache: NoneAuth: None
GET/api/health/deep

Deep health check with version info, git SHA, build time, dependency audit, runtime metrics, and content inventory. Operator-only: requires Authorization: Bearer $CRON_SECRET.

Response: { "status": "healthy", "version": { "app": "0.1.0"...Cache: NoneAuth: None
POST/api/semantic-search

Embedding-backed semantic search over generated content embeddings.

Parameters

qstringSearch query (minimum 2 characters)
Response: { "results": [{ "title": "...", "url": "/blog/..."...Cache: 1 minute + 5 min stale-while-revalidateAuth: None
GET/api/sync-videos

Protected video coverage and sync status endpoint used for scheduled operations and manual checks.

Response: { "timestamp": "...", "totalVideos": 123, "stats":...Cache: 1 hour + 2 hours stale-while-revalidateAuth: Bearer CRON_SECRET when configured
POST/api/chat

Authenticated AI companion endpoint for signed-in users studying Developers Digest courses.

Response: UI message stream responseCache: NoneAuth: Signed-in Clerk session required
GET/api/og

Generate dynamic Open Graph images with custom title and subtitle.

Parameters

titlestringMain heading text
subtitlestringSubtitle text (optional)
Response: 1200x630 PNG imageCache: Edge cachedAuth: None
GET/feed.xml

RSS 2.0 feed with all blog posts, guides, and videos.

Response: application/rss+xmlCache: 1 hourAuth: None
GET/atom.xml

Atom 1.0 feed with all blog posts, guides, and videos.

Response: application/atom+xmlCache: 1 hourAuth: None
GET/feed.json

JSON Feed 1.1 with all blog posts.

Response: application/feed+jsonCache: 1 hourAuth: None
GET/blog/tags/[tag]/feed.xml

Per-tag RSS feed for blog posts.

Parameters

tagpathTag slug (e.g., claude-code)
Response: application/rss+xmlCache: 1 hourAuth: None
GET/api/random/post

Returns a random blog post. Useful for discovery widgets and shuffle features.

Response: { "site": "Developers Digest", "generatedAt": "......Cache: None (always fresh)Auth: None
GET/api/random/tool

Returns a random tool from the directory. Useful for discovery widgets and recommendations.

Response: { "site": "Developers Digest", "generatedAt": "......Cache: None (always fresh)Auth: None
AI Development Stack

Get Smarter About AI Dev

New tutorials, open-source projects, and deep dives on coding agents - delivered weekly.

One email per weekReal code, not theoryFree forever