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.
/api/toolsList all tools in the directory with optional filtering.
categorystringFilter by category (e.g., AI Coding)qstringSearch tools by name, description, or tags{ "tools": [...], "total": 64 }Cache: 1 hourAuth: None/api/search-indexFull search index with all blog posts, guides, tools, videos, courses, and toolkit pages.
[{ "type": "blog", "title": "...", "description": ...Cache: 1 minute + 5 min stale-while-revalidateAuth: None/api/search.jsonServer-side search over the full site index, ranked with the same Fuse.js config as the on-site search.
qstringSearch query (required, min 2 characters)typestringFilter by result type (blog, guide, tool, video, course, toolkit, page, app)limitnumberMax results, 1-50 (default 20){ "query": "claude code", "count": 20, "results": ...Cache: 5 minutes + 1 hour stale-while-revalidateAuth: None/api/sitemap.jsonJSON mirror of sitemap.xml with URL, lastModified, changeFrequency, and priority per entry.
{ "generatedAt": "...", "count": 900, "entries": [...Cache: 1 hour + 24 hour stale-while-revalidateAuth: None/api/healthHealth check with content counts, required environment status, and optional integration visibility.
{ "status": "healthy", "environment": "production"...Cache: NoneAuth: None/api/health/deepDeep health check with version info, git SHA, build time, dependency audit, runtime metrics, and content inventory.
{ "status": "healthy", "version": { "app": "0.1.0"...Cache: NoneAuth: None/api/semantic-searchEmbedding-backed semantic search over generated content embeddings.
qstringSearch query (minimum 2 characters){ "results": [{ "title": "...", "url": "/blog/..."...Cache: 1 minute + 5 min stale-while-revalidateAuth: None/api/sync-videosProtected video coverage and sync status endpoint used for scheduled operations and manual checks.
{ "timestamp": "...", "totalVideos": 123, "stats":...Cache: 1 hour + 2 hours stale-while-revalidateAuth: Bearer CRON_SECRET when configured/api/chatAuthenticated AI companion endpoint for signed-in users studying Developers Digest courses.
UI message stream responseCache: NoneAuth: Signed-in Clerk session required/api/ogGenerate dynamic Open Graph images with custom title and subtitle.
titlestringMain heading textsubtitlestringSubtitle text (optional)1200x630 PNG imageCache: Edge cachedAuth: None/feed.xmlRSS 2.0 feed with all blog posts, guides, and videos.
application/rss+xmlCache: 1 hourAuth: None/atom.xmlAtom 1.0 feed with all blog posts, guides, and videos.
application/atom+xmlCache: 1 hourAuth: None/feed.jsonJSON Feed 1.1 with all blog posts.
application/feed+jsonCache: 1 hourAuth: None/blog/tags/[tag]/feed.xmlPer-tag RSS feed for blog posts.
tagpathTag slug (e.g., claude-code)application/rss+xmlCache: 1 hourAuth: None/api/random/postReturns a random blog post. Useful for discovery widgets and shuffle features.
{ "site": "Developers Digest", "generatedAt": "......Cache: None (always fresh)Auth: None/api/random/toolReturns a random tool from the directory. Useful for discovery widgets and recommendations.
{ "site": "Developers Digest", "generatedAt": "......Cache: None (always fresh)Auth: None
New tutorials, open-source projects, and deep dives on coding agents - delivered weekly.