# OpenAPI, llms.txt and Markdown

The API and every page of these docs, in files a program or a model can read.

## The files

- `/openapi.json`: The API, as OpenAPI 3.1.
- `/embed-openapi.json`: The same file as `/openapi.json`. The [Partner API](https://docs.gorunner.io/embed/api) is its operations under `/api/embed/v1`.
- `/llms.txt`: Every page of these docs, one line each, with a link to its Markdown.
- `/llms-full.txt`: Every page’s Markdown, in one file.
- `/<page>.md`: One page as Markdown, such as `/api/errors.md`. Asking for the page with `Accept: text/markdown` gives the same.

All are at `https://docs.gorunner.io`. On any page, the **⋯** menu has **Copy as Markdown**, **View as Markdown**, **Open in Claude** and **Open in ChatGPT**.

## About the OpenAPI file

- **The servers**: GoRunner Cloud, and `{origin}` for a self-hosted installation: set it to your host. Every path already starts with `/api`.
- **Permissions**: Each operation names the permission it needs in `x-permission`. A Partner API operation names its key in `x-embed-auth`.
- **Kept true**: GoRunner’s tests fail when an API route a token can call is missing from the file, or the file names one that doesn’t exist.
- **No token**: Three kinds of operation take none (`security: []`): a workflow’s webhook address and resume links ([Call a workflow’s webhook](https://docs.gorunner.io/api/webhooks)), and the health checks `/api/health` and `/api/ready`.
- **Not in the file**: The AI apps’ servers `/mcp/build` and `/mcp/tools`, and sign-in at `/oauth/…` and `/.well-known/…`, which sit at the root, not under `/api`: [Sign-in for developers](https://docs.gorunner.io/mcp/oauth).
- **Versions**: There is no version in the address. The API changes by adding: a field to be removed is marked deprecated first. `info.version` is `rolling` here and on GoRunner Cloud. Each self-hosted release stamps its own copy with its version.

AI apps get their own list from the server. See [Build tools](https://docs.gorunner.io/mcp/build-tools).

## Builder-only operations

The file also has 8 operations that GoRunner’s own builder uses, tagged `Editor Internals`. They are listed because every route is. They aren’t supported for your code: they can change without notice, and these docs don’t describe them.

- `POST /api/workflows/{id}/test-step`: Runs one step of the draft and shows what it produced.
- `POST /api/workflows/{id}/listen`: Waits for the next real call to the workflow’s webhook, once.
- `GET /api/workflows/{id}/listen-stream`: Tells the builder when that call arrives.
- `GET /api/workflows/{id}/test-context`: Recent test runs, and each step’s output in one of them, to pick data from.
- `GET /api/workflows/{id}/step-sources`: Which past runs have real data for one step.
- `GET /api/workflows/{id}/step-sources/{runId}`: One step’s output from one past run.
- `POST /api/workflows/{id}/presence`: Shows who has the workflow open, and keeps the editing lock.
- `DELETE /api/workflows/{id}/presence`: Stops showing you there, and frees the lock.

Related: [API](https://docs.gorunner.io/api) · [Reference](https://docs.gorunner.io/reference) · [Authentication](https://docs.gorunner.io/api/authentication)

Source: https://docs.gorunner.io/api/machine-readable
