// api

Machine-readable resources

Everything on this site is available in a form that scripts and AI agents can consume without scraping HTML. It is all static, read-only and free of authentication.

Markdown for agents

Every page has a Markdown rendering. Request any URL with Accept: text/markdown and the response comes back as Content-Type: text/markdown with Vary: Accept. Browsers keep receiving HTML.

curl -H 'Accept: text/markdown' https://imlucas.dev/blog/hello-world/

The same file is reachable directly as index.md next to each page, for example /blog/hello-world/index.md. Blog posts return their original Markdown source with a YAML front matter block (title, description, author, date, tags, url). Other pages are converted from the HTML at build time.

Endpoints

  • /llms.txt text/markdown

    Site overview for language models: every post and page with a one-line summary.

  • /openapi.json application/json

    OpenAPI 3.1 description of the endpoints on this page.

  • /.well-known/api-catalog application/linkset+json

    RFC 9727 API catalog pointing at the OpenAPI spec and this page.

  • /search.json application/json

    All published posts: id (URL slug), title, description, tags, pubDate. Newest first.

  • /rss.xml application/rss+xml

    RSS 2.0 feed of all posts.

  • /sitemap-index.xml application/xml

    XML sitemap index.

  • /robots.txt text/plain

    Crawl rules plus Content-Signal preferences (ai-train, search, ai-input).

Discovery

Every response carries a Link header pointing at llms.txt (rel="describedby") and at the API catalog (rel="api-catalog"). Pages embed schema.org JSON-LD (WebSite, Person and, on posts, BlogPosting) and a <link rel="alternate" type="text/markdown"> to their Markdown rendering.

Terms

No key, no login, no rate limit beyond the CDN's. The content signals in robots.txt allow search indexing, AI grounding and AI training. If you quote a post, link back to it.