OpenAPI 3.1

akaushik.org portfolio API

Read-only access to portfolio content in Markdown and JSON.

The portfolio exposes its content for agent consumption via four surfaces: (1) the full-corpus Markdown at /llms-full.txt, (2) per-page Markdown alternates at /work/<slug>.md and /writing/<slug>.md, (3) JSON listings at /api/writing and /api/case-studies, (4) HTTP content negotiation on /work/<slug> and /writing/<slug> via `Accept: text/markdown`.

Paths

/llms.txt

GET · Short-form site digest (llmstxt.org format)

  • 200 · Markdown digest (text/markdown)

/llms-full.txt

GET · Full portfolio corpus, concatenated

  • 200 · Markdown corpus (text/markdown)

/api/writing

GET · List writing posts

  • 200 · Newest-first list of writing posts (application/json)

/api/case-studies

GET · List case studies

  • 200 · Curated order list of case studies (application/json)

/writing/{slug}.md

GET · Writing post as Markdown

Pattern B (suffix). Equivalent to GET /writing/{slug} with Accept: text/markdown (Pattern A, RFC 7231 content negotiation).

  • slug · path · string
  • 200 · Post Markdown (text/markdown)
  • 404 · Slug not found

/work/{slug}.md

GET · Case study as Markdown

Pattern B (suffix). Equivalent to GET /work/{slug} with Accept: text/markdown (Pattern A, RFC 7231 content negotiation).

  • slug · path · string
  • 200 · Case study Markdown (text/markdown)
  • 404 · Slug not found

/

GET · Home page

HTML by default. With Accept: text/markdown the server rewrites to /llms.txt (short-form digest).

  • 200 · HTML home page or Markdown digest (content-negotiated) (text/html, text/markdown)

Schemas

WritingPost

  • slug (required) · string
  • title (required) · string
  • dek (required) · string
  • date (required) · string · format: date
  • readingTime · string
  • url (required) · string · format: uri
  • markdown (required) · string · format: uri

WritingList

  • count (required) · integer
  • posts (required) · array

CaseStudy

  • slug (required) · string
  • title (required) · string
  • dek (required) · string
  • index · string
  • tag · string
  • year (required) · string
  • role (required) · string
  • stack (required) · array
  • evidenceOf · string
  • url (required) · string · format: uri
  • markdown (required) · string · format: uri

CaseStudyList

  • count (required) · integer
  • caseStudies (required) · array