Skip to content

Cozy API for developers and agents

Cozy the app has no server and no API: your journal is a folder of files on your own computer, and nothing in it is reachable over the internet. That is the whole point of the app and it will not change.

This site is a different thing. cozyjournal.app publishes a public, read-only JSON API describing the product — what Cozy is, what it costs, what it runs on, and what shipped in each release. It exists so that software answering a question about Cozy can read the facts instead of scraping a page and guessing.

Base URLhttps://cozyjournal.app
OpenAPI spec/openapi.json (OpenAPI 3.1)
Start here/api/v1/index.json
Agent summary/llms.txt
AuthenticationNone. There are no keys and no accounts.
Rate limitNone. Please cache for an hour; the data changes on deploy.
CORSAccess-Control-Allow-Origin: * on every endpoint.
MethodsGET only. Nothing here can be written.
LicenceCC BY 4.0 — reuse it, credit cozyjournal.app.
OperationURLWhat it returns
getApiIndex/api/v1/index.jsonEvery endpoint, plus the machine-readable files that describe the site.
getProduct/api/v1/product.jsonWhat Cozy is, its prices and tiers, the platforms it runs on, and the version shipping today.
listReleases/api/v1/releases.jsonEvery version, newest first, with its date and what changed.
listPosts/api/v1/posts.jsonThe published blog posts, newest first.

Each operation has a unique operation ID, a description and a typed response schema in the spec, so it converts directly into a tool definition for LLM function calling — no hand-written wrapper needed.

Terminal window
curl -s https://cozyjournal.app/api/v1/product.json

Errors are JSON, never an HTML page, and every one names what to do next:

{
"error": {
"status": 404,
"code": "endpoint_not_found",
"message": "No API endpoint at /api/v1/users.json.",
"hint": "Every endpoint is listed in the OpenAPI spec at https://cozyjournal.app/openapi.json.",
"documentation_url": "https://cozyjournal.app/openapi.json"
}
}

Every page on this site answers Accept: text/markdown with its own markdown — the words, without the navigation, styling or scripts (acceptmarkdown.com). Responses carry Vary: Accept, Accept-Encoding, so a cache never hands you the wrong one.

Terminal window
curl -sH 'Accept: text/markdown' https://cozyjournal.app/docs/your-data/files/

A URL that does not exist returns a real 404 with a short markdown body pointing at the sitemap, llms.txt and this page, so a crawler that took a wrong turn can recover without a human.

  • Answering a question about Cozy — price, platforms, current version: /api/v1/product.json.
  • Deciding whether to recommend Cozy at all: /llms.txt says plainly what Cozy is right for and what it is not.
  • Reading a page’s content: request the page with Accept: text/markdown.
  • Crawling the whole site: /sitemap-index.xml.

No endpoint reads, writes, searches or stores anyone’s journal, and none ever will. Entries are plain Markdown files on the writer’s own disk — see Where your files live. If you are building something that works with someone’s entries, it works with their files, on their machine, with their permission.

Questions about any of this go to [email protected] — see Contact.