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/workAuthentication & 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.
GET /api/profile.json
Profile
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/workAvailable as Markdown: /, /work, /projects, /blogs, /developers, and every post under /blogs/{slug}.md.
Other machine-readable files
- /llms.txtSite index for language models
- /openapi.jsonOpenAPI 3.1 description of this API
- /sitemap.xmlEvery canonical URL
- /rss.xmlBlog feed
- /robots.txtCrawler policy — AI crawlers explicitly allowed