Public content API

The content API returns a JSON snapshot of this site’s published articles, project notes, and pages. It is generated by Hugo when the site is built. All reading is anonymous; no account, API key, bearer token, or registration is required.

curl --fail https://vvivid.dev/api/content.json

The response has version: "1", a site object, a count, and an items array. Each item includes:

FieldMeaning
title, descriptionPage title and authored description, or a plain-text summary when no description exists.
url, markdown_urlCanonical browser URL for citations and a direct Markdown resource for reading.
sectionHugo section, such as posts or projects; empty for a top-level page.
author, languageAuthor name and Hugo language identifier.
tags, categoriesArrays of authored labels; empty arrays when none exist.
published_at, modified_atRFC 3339 dates when known. Hugo resolves these from content metadata; modification defaults to the content date and does not establish a separate edit. Unknown dates are omitted.
word_count, reading_time_minutesHugo’s content length and reading estimate.
repository_url, project_urlOptional authored external project links.

Items are ordered by content date, newest first, with undated pages last. This is one complete snapshot without pagination. Filter items locally by section, title, description, or tags. Query parameters do not perform server-side filtering or search. Drafts and future content are excluded from the production build; home, section, and taxonomy navigation pages are not individual items.

Follow an item’s markdown_url to read its text. You can also send Accept: text/markdown to the canonical page URL. Cite the canonical url and article title when using its content.

Contract and serving behavior

GET /api/content.json returns application/json. HEAD returns the same headers without a body. This resource does not negotiate a Markdown representation. Unknown paths return HTTP 404 with an HTML error body. Unsupported methods return HTTP 405; there are no write operations. Responses follow the site’s Cache-Control: no-store policy.

The site hosts no MCP server, account system, OAuth authorization server, token endpoint, or client registration. External services linked in articles have their own access policies.