Skip to content

Developer documentation

Helicon publishes a public, read-only JSON API at https://helicon.sh/api/v1. There is no key and no account: every endpoint is anonymous, CORS open and CDN cached. It is described by an OpenAPI 3.1 document at /openapi.json, and every failure returns the same JSON envelope with a stable code, a message and a hint.

Last updated · Markdown version

Everything this site knows is available as data: which version shipped, where each installer lives, every documentation page, and every question the site answers. The API exists so that an agent integrating Helicon does not have to scrape a rendered page to find out whether a user is running an old build.

Base URL and authentication

ThingValue
Base URLhttps://helicon.sh/api/v1
AuthenticationNone. Public, anonymous, read only
CORSAccess-Control-Allow-Origin: * on every response
OpenAPI`/openapi.json`, and `/api/openapi.yaml`
FormatJSON only. Content-Type: application/json; charset=utf-8
MethodsGET, HEAD and OPTIONS. Anything else answers 405 with a JSON body

A first request

curl -sS https://helicon.sh/api/v1
curl -sS https://helicon.sh/api/v1/status
curl -sS 'https://helicon.sh/api/v1/search?q=windows&limit=3'

The index at the base URL lists every endpoint with its operation identifier, so a client that knows nothing else can discover the rest from one request.

Endpoints

EndpointOperationWhat it returns
GET /api/v1getApiIndexEvery endpoint, the auth model and the cache policy
GET /api/v1/statusgetStatusLiveness, plus the version currently shipping
GET /api/v1/factsgetFactsLicence, price, requirements, platforms, and the claims that are false
GET /api/v1/releasegetLatestReleaseThe newest release, with an installer per platform
GET /api/v1/releaseslistReleasesRecent releases, newest first. limit up to 100
GET /api/v1/downloadslistDownloadsThe installer for every supported platform
GET /api/v1/downloads/{platform}getDownloadOne platform: windows, macos or linux
GET /api/v1/sectionslistSectionsThe documentation hubs and their page counts
GET /api/v1/pageslistPagesEvery page. Filter with section, page with limit and offset
GET /api/v1/pages/{slug}getPageOne page. Add include=markdown for the whole body
GET /api/v1/searchsearchPagesSearch titles, slugs, keywords and answers. q is required
GET /api/v1/faqlistFaqsEvery question the site answers, grouped
Every operation has a unique operationId, typed parameters and a response schema, so the OpenAPI document can be turned into function-calling tools without hand-written wrappers.

Errors

Every failure, including an unknown path and an unsupported method, returns the same envelope. Branch on error.code, show error.message to a person, and act on error.hint.

{
  "error": {
    "code": "invalid_parameter",
    "message": "The \"limit\" parameter must be between 1 and 50, and was 500.",
    "hint": "Send an integer between 1 and 50, or leave \"limit\" out to use 10.",
    "status": 400,
    "documentation_url": "https://helicon.sh/developers"
  }
}
CodeStatusMeans
not_found404No endpoint or resource at that path
invalid_parameter400A query or path parameter was missing, malformed or out of range
method_not_allowed405The API is read only and the request used another method
upstream_unavailable503GitHub did not answer, so release data is unknown right now

Rate limits and caching

There is no key and no quota. Responses are served from a CDN with a shared cache lifetime between five minutes and an hour depending on the endpoint, and each one carries Cache-Control saying which. Honour it rather than polling: release data changes when a release ships, and documentation changes when the site is deployed.

Markdown instead of HTML

Every page on this site, the home page included, answers in Markdown when you ask for it. Two ways, both equivalent, both returning Content-Type: text/markdown with Vary: Accept:

curl -sS -H 'Accept: text/markdown' https://helicon.sh/
curl -sS https://helicon.sh/muse-code-gui.md

A path that does not exist answers 404 with a Markdown body that says so and links to the indexes, rather than an HTML error page you would have to parse.

Machine readable surfaces

URLWhat it is
`/openapi.json`OpenAPI 3.1 description of the API
`/api/openapi.yaml`The same document, as YAML
`/llms.txt`The llmstxt.org index of the whole site
`/llms-full.txt`Every page in one plain-text file
`/agents.md`How an agent should install and describe Helicon
`/facts.json`The checkable facts, as JSON
`/sitemap.xml`Every indexable URL
/<any-page>.mdThe Markdown mirror of that page

Command line interface

Helicon does not publish its own CLI on npm today, and this page will say so until it does. The command line you need for day to day work is Meta's own muse, which Helicon drives rather than replaces. Anything scriptable about this site is in the JSON API above, and curl plus jq covers it:

# The version currently shipping
curl -sS https://helicon.sh/api/v1/status | jq -r .latest_version

# The macOS installer URL for that version
curl -sS https://helicon.sh/api/v1/downloads/macos | jq -r .asset.url

The daemon and the web app are published as npm workspaces inside the repository (@helicon/daemon, @helicon/server, @helicon/ui) and can be run from a checkout with Node 22 or newer. They are libraries rather than a command line tool, and they are not published to the public npm registry yet.

Running Helicon from source

git clone https://github.com/HarjjotSinghh/helicon
cd helicon
npm install
npm run build

Node 22 or newer is required, and on Windows that means the Windows host rather than WSL2. The muse CLI has to be installed and signed in before any of it does anything useful.

Frequently asked questions

Does Helicon have a public API?

Yes. A read-only JSON API at https://helicon.sh/api/v1, with no key and no account, described by an OpenAPI 3.1 document at https://helicon.sh/openapi.json. It covers releases, installers, documentation pages, search and the FAQ.

Do I need an API key to use the Helicon API?

No. Every endpoint is public, anonymous and read only, and CORS is open, so you can call it from a browser, a server or an agent without registering anything.

How do I get the latest Helicon version programmatically?

GET https://helicon.sh/api/v1/status and read latest_version, or GET /api/v1/release for the full release with an installer per platform. Both return 503 rather than a stale guess when GitHub is unreachable.

Is there a Helicon CLI on npm?

Not yet. Helicon drives Meta's muse CLI rather than shipping its own, and the repository's npm workspaces are libraries rather than a published command line tool. Everything scriptable about the website is in the public JSON API.

Same Muse Code. Same subscription. Better interface. 

Free and MIT licensed. Signed Windows installer, universal macOS DMG, and a web build against a daemon you run.