Who this is for

Two audiences: AI agents and LLM-based tools that want structured, citable answers about Anuraag Burman’s work instead of parsing rendered HTML, and developers who want to pull this data into their own project (a resume site aggregator, a chatbot, a CLI). If you’re a human just reading, the homepage and writing are the better starting point.

Rate limits & caching

No hard rate limit is enforced — this API is a handful of Vercel serverless functions with no rate limiter in front of them, so honestly say so rather than promise a number the code doesn’t back. Every response is cacheable: Cache-Control: public, max-age=300, stale-while-revalidate=86400, meaning a CDN or client can treat a response as fresh for 5 minutes and keep serving a stale copy for up to a day while revalidating in the background. This is fine because the underlying data only changes when the site itself is rebuilt — there’s no shorter-lived source of truth behind it to miss.

Endpoints

Every endpoint below returns JSON and is open to CORS from any origin. Base URL: https://anuraagburman.com.

GET /api/v1/profile

Anuraag's profile: name, job title, headline, bio, current role, education, contact links, and a lightweight project list.

bash
curl https://anuraagburman.com/api/v1/profile

GET /api/v1/projects

Short summaries of every project (title, tagline, status, stack, links). Optional `status` and `limit` query params.

bash
curl "https://anuraagburman.com/api/v1/projects?status=Shipped&limit=5"

GET /api/v1/projects/{slug}

The full case study for one project: problem statement, metrics, stack, links, and deep-dive sections. 404 for an unknown slug.

bash
curl https://anuraagburman.com/api/v1/projects/localflow

GET /api/v1/articles

Short summaries of every article (title, excerpt, published date, tags, reading time). Optional `tag` and `limit` query params.

bash
curl https://anuraagburman.com/api/v1/articles

GET /api/v1/articles/{slug}

The full text of one article as markdown, plus its metadata. 404 for an unknown slug.

bash
curl https://anuraagburman.com/api/v1/articles/your-article-slug

GET /api/v1/search

Full-text search across projects and articles in one call. Required `q` query param.

bash
curl "https://anuraagburman.com/api/v1/search?q=subscriptions"

GET /api/openapi.json

This API described as an OpenAPI 3.1 document (also mirrored statically at /openapi.json).

bash
curl https://anuraagburman.com/api/openapi.json

Errors

Every non-2xx response uses the same JSON error envelope:

json
{
  "error": {
    "code": "project_not_found",
    "message": "No project exists with slug 'not-a-real-project'.",
    "hint": "List valid slugs at GET /api/v1/projects.",
    "documentation": "https://anuraagburman.com/developers/"
  },
  "status": 404
}

MCP

The Model Context Protocol (MCP) lets an agent call this API as typed, self-describing tools instead of reading REST documentation and guessing at request shapes. This site runs a stateless MCP server, over the Streamable HTTP transport, at:

bash
https://anuraagburman.com/api/mcp

It exposes six tools — get_profile, list_projects, get_project, list_articles, get_article, and search — each documented in the server’s own tools/list response. Add it to Claude Code with:

bash
claude mcp add --transport http anuraagburman https://anuraagburman.com/api/mcp

CLI

An unpublished anuraagburman CLI wraps the same endpoints for terminal use via npx — no install required:

bash
npx anuraagburman profile
npx anuraagburman projects
npx anuraagburman project localflow
npx anuraagburman articles
npx anuraagburman article <slug>
npx anuraagburman search "rag pipeline"

Resources