Description
The Pome REST API is the control plane athttps://api.pome.sh/v1. It starts
sandboxes, seeds them with a world of your own, and hands back the evidence a run
produced. Everything the CLI and the MCP server do,
they do by calling it.
Reach for it directly when you are bringing your own evaluation harness. Pome
gives you a deterministic world and a recorded tape; your harness decides what
counts as a pass. If you would rather have Pome grade the run too, that works
over the same API — see finalize.
Every response is JSON except the markdown run
report, which is text/markdown.
Base URL and versioning
v1 is the only version. Responses are tolerant-reader by design: the
control plane may add fields to a response, so parse the keys you need and ignore
the rest rather than rejecting an unfamiliar body.
Two other hosts appear in responses, and neither is this API:
Authentication
Every endpoint takes a team API key as a bearer token:pme_<id>_<secret> and are minted in the dashboard, or by
pome login, which stores one where the CLI can find it. The
key is team-scoped: every sandbox, run, and task it can see belongs to that team.
Two failures are deliberately distinguishable:
How errors arrive
Every error is the same envelope. Sibling pages link back to this table rather than repeating it.type is the coarse class and is drawn from a closed set. details is where the
specific failure lives — branch on details.error when you need to tell two
validation_faileds apart. request_id is on every error; quote it if you
ask us about one.
Quota trips are
402, never 429. A 402 will not clear on its own — free a
sandbox or raise the plan.The error vocabulary worth branching on
These are the named failures a caller hits in normal use. Most arrive as422
under details.error. The last three carry a different code and live under
details.reason instead — each row says which key and which code.
Endpoint index
Every endpoint is documented on the endpoints page with the same shape: what it does, an input table, what comes back, the errors worth branching on, and one example call.Identity and quota
Seeds
Sandboxes
Grading vocabulary
Runs and evidence
The loop, end to end
Four calls take you from nothing to a running agent in a world you wrote. Each one links to its full entry.task_source in step 2 is IyAuLgo= — base64 for # .., a stub. Today
POST /v1/sandboxes requires a task even when you have brought a seed and will
never read one. The full entry explains
why, and it is the one wart on this path.Limits
Concurrent sandboxes are a plan limit rather than a fixed number —
GET /v1/usage reports yours.
See also
- Endpoints — the full reference for every call above.
- Digital twins — what each twin serves, and the shape of its seed.
- CLI reference — the same loop, driven from a terminal.
- MCP reference — the same loop, driven by a coach agent.
- Terminology — what a sandbox, a run, and a criterion are.