Anurag Gupta

Developers.

A public, read-only API for everything on this site — plus Markdown content negotiation for agents. No key, no signup, no rate-limit headers to babysit.

Quickstart

Every endpoint is a plain GET over HTTPS returning application/json. CORS is open to all origins, so browser clients work without a proxy.

# Profile
curl https://anuragxd.com/api/profile.json

# Every post, newest first
curl https://anuragxd.com/api/posts.json

# One post, including its full Markdown body
curl https://anuragxd.com/api/posts/popy-500kb-clipboard-manager.json

# The ".json" suffix is optional
curl https://anuragxd.com/api/work

Authentication & API keys

None. There is no key to issue, because there is nothing private behind the API — it publishes the same content the website renders. Sending an Authorization header is harmless and ignored.

Responses are static files served from Cloudflare's edge. There is no per-client quota; Cloudflare's standard edge protections are the only limit. Cache aggressively and be kind.

Endpoints

GET /api/index.json

API index

Discovery document listing every available endpoint, the API version, and links to the OpenAPI spec and llms.txt.

Name, headline, location, contact address, social profiles, and the technology list published as schema.org `knowsAbout`.

GET /api/work.json

Work history

Every role, with company, URL, period, summary, highlights, and stack.

GET /api/projects.json

Projects

Open-source and side projects, with tagline, description, repository URL, and proof-of-traction where it exists.

GET /api/talks.json

Talks and open source

Conference talks, mentorship, and open-source programme work.

GET /api/posts.json

Blog post index

All published posts, newest first, with slug, title, date, description, and both the HTML and Markdown URLs.

GET /api/posts/{slug}.json

Single blog post

One post including its full Markdown body. `slug` comes from `/api/posts.json`.

OpenAPI 3.1 specification — import into Postman, Insomnia, or an agent tool loader.

Sandbox

Fire a real request at the production API and inspect the response.

Markdown for agents

Every content page serves a Markdown representation from the same URL via content negotiation, following the acceptmarkdown.com convention. Responses carry Vary: Accept, Accept-Encoding so a CDN never hands the HTML variant to an agent that asked for Markdown.

# Negotiated — same URL, different representation
curl -H "Accept: text/markdown" https://anuragxd.com/work

# Or address the Markdown directly
curl https://anuragxd.com/work.md

# An Accept header we cannot satisfy returns 406, not a silent fallback
curl -i -H "Accept: application/pdf" https://anuragxd.com/work

Available as Markdown: /, /work, /projects, /blogs, /developers, and every post under /blogs/{slug}.md.

Other machine-readable files