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
| Thing | Value |
|---|---|
| Base URL | https://helicon.sh/api/v1 |
| Authentication | None. Public, anonymous, read only |
| CORS | Access-Control-Allow-Origin: * on every response |
| OpenAPI | `/openapi.json`, and `/api/openapi.yaml` |
| Format | JSON only. Content-Type: application/json; charset=utf-8 |
| Methods | GET, 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
| Endpoint | Operation | What it returns |
|---|---|---|
GET /api/v1 | getApiIndex | Every endpoint, the auth model and the cache policy |
GET /api/v1/status | getStatus | Liveness, plus the version currently shipping |
GET /api/v1/facts | getFacts | Licence, price, requirements, platforms, and the claims that are false |
GET /api/v1/release | getLatestRelease | The newest release, with an installer per platform |
GET /api/v1/releases | listReleases | Recent releases, newest first. limit up to 100 |
GET /api/v1/downloads | listDownloads | The installer for every supported platform |
GET /api/v1/downloads/{platform} | getDownload | One platform: windows, macos or linux |
GET /api/v1/sections | listSections | The documentation hubs and their page counts |
GET /api/v1/pages | listPages | Every page. Filter with section, page with limit and offset |
GET /api/v1/pages/{slug} | getPage | One page. Add include=markdown for the whole body |
GET /api/v1/search | searchPages | Search titles, slugs, keywords and answers. q is required |
GET /api/v1/faq | listFaqs | Every question the site answers, grouped |
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"
}
}| Code | Status | Means |
|---|---|---|
not_found | 404 | No endpoint or resource at that path |
invalid_parameter | 400 | A query or path parameter was missing, malformed or out of range |
method_not_allowed | 405 | The API is read only and the request used another method |
upstream_unavailable | 503 | GitHub 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.mdA 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
| URL | What 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>.md | The 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.urlThe 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 buildNode 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.
Keep reading
- AboutWho builds Helicon, why a Muse Code desktop app exists at all, how it is funded, and what it deliberately is not. One maintainer, MIT licensed, no company behind it.
- ContactHow to reach the person who maintains Helicon: email for anything private, GitHub issues for bugs and features, and a private advisory channel for security reports.
- Remote daemon and web UIThe same Helicon UI ships as a web app pointed at a daemon on another machine, so a laptop can supervise Muse Code running on a workstation or a server.
- llms.txtllms.txt is a plain text file at a site's root that gives language models a clean summary and an index of the pages worth reading. What goes in one.
- the Muse Code Session ProtocolMSP is the JSON-RPC protocol that applications use to drive a Muse Code session over stdio, instead of parsing terminal output. What it carries and why it matters.
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.