Every blog post, project, developer tool, series, and resume field on this site is available as structured JSON or token-efficient Markdown — ready to feed into LLM workflows, RAG pipelines, and AI agents.
Discover all endpoints
curl https://manishh.in/api/contentReturns a self-describing JSON document listing every route, accepted query params, and ready-to-use examples.
Read a blog post as Markdown
curl "https://manishh.in/api/content/blogs/building-realtime-chat-with-go-websockets?format=markdown"Markdown is 15–38% more token-efficient than JSON. AI coding tools (Claude Code, Cursor, Windsurf) send Accept: text/markdown automatically.
Get the full resume
curl https://manishh.in/api/content/resumeOne request returns person info, work experience, technical skills, career timeline, certifications, and academic background.
Filter content by tag
curl "https://manishh.in/api/content/blogs?tags=go&limit=5"AND-logic tag filtering on blogs, projects, and docs. Combine with ?limit= to cap results. Tags use hyphenated slugs.
14 routes total · 60 req / 15 min per IP · MD = Markdown format supported
/api/content/blogsList all published blog posts
Params: ?tags ?limit ?format
/api/content/blogs/:slugFull post — 20+ content blocks, author, SEO, and resolvedRelated (inline project/tool cards)
Params: ?format
/api/content/blogs/seriesList all blog series with post counts and total read time
Params: ?format
/api/content/blogs/series/:slugSeries detail — ordered post list with excerpts and read times
Params: ?format
Default response is JSON. Add ?format=markdown or send Accept: text/markdown for Markdown. Markdown uses 15–38% fewer tokens — recommended for LLM prompts. AI coding tools send Accept: text/markdown automatically.
{
"slug": "building-realtime-chat-with-go-websockets",
"title": "Building Real-Time Chat with Go & WebSockets",
"excerpt": "A practical guide to a production-ready WebSocket chat server...",
"publishedAt": "2025-01-15T10:00:00Z",
"readTime": 12,
"author": { "name": "Manish Kumar", ... },
"tags": [{ "name": "Go", "slug": "go" }, ...],
"content": [ /* 20 structured content blocks */ ],
"resolvedRelated": {
"projects": [{
"slug": "gochat-realtime-chat-platform",
"title": "GoChat — Real-Time Chat Platform",
"url": "https://manishh.in/projects/gochat-realtime-chat-platform",
"apiUrl": "https://manishh.in/api/content/projects/gochat-realtime-chat-platform"
}],
"tools": [{
"slug": "go-ws-hub",
"name": "go-ws-hub",
"tagline": "Go WebSocket hub library",
"url": "https://manishh.in/docs/go-ws-hub",
"apiUrl": "https://manishh.in/api/content/docs/go-ws-hub"
}]
}
}Full structured data — all fields, nested objects, and resolvedRelated with inline cards for related content.
Use these tag slugs with the ?tags= parameter on any list endpoint. Multiple tags use AND logic.
Fetch posts by tag and pipe them into your vector store. Markdown format gives you clean, token-efficient chunks without HTML noise.
curl "https://manishh.in/api/content/blogs?tags=go&format=markdown"Hit /api/content first to auto-discover all routes. resolvedRelated on detail responses means your agent can follow cross-domain links without extra lookups.
curl https://manishh.in/api/contentOne call to /api/content/resume returns the full professional profile — skills, work history, certifications, and education in structured JSON.
curl https://manishh.in/api/content/resumeBuild Claude tools or MCP servers on top of this API. The self-describing /api/content endpoint makes tool definitions straightforward to generate.
curl https://manishh.in/api/content | jq '.endpoints'Start now — no signup required
Hit the discovery endpoint and you'll have everything you need.