JURNITI°docs

REST API

jurniti customer REST API — OpenAPI spec, bearer API keys, JSON errors, and how it maps to the CLI and MCP. Host api.jurniti.com.

Call jurniti from an agent

The jurniti REST API is the same operation set as the CLI and MCP — one vocabulary (whoami, vms, templates, fork). Use it when you cannot spawn jurniti mcp (a remote orchestrator, a language without stdio MCP, a one-shot curl).

Machine-readable contract: https://www.jurniti.com/openapi.json (OpenAPI 3.1). Production host: https://api.jurniti.com.

There is no free tier. POST /v1/api/vms and POST /v1/api/templates/{id}/fork charge the card on file.

Auth

  1. Install the CLI and log in (jurniti login) — see Installation.
  2. Mint a key: jurniti keys issue (read-write to provision; read-only to observe).
  3. Send it on every call:
curl -sS https://api.jurniti.com/v1/api/whoami \
  -H "Authorization: Bearer jrn_live_…"

Missing or bad keys return 401 JSON:

{"error":"unauthorized","message":""}

A read-only key on a money verb returns 403 read_only_key. No card on file returns 402 card_required. Unknown/unowned ids return 404 not_found (existence-as-secret — do not treat 404 as "retry").

Every error is Content-Type: application/json with { "error": "<code>", "message": "<human-safe>" }. Never parse an HTML error page from api.jurniti.com.

Surfaces

JobRESTCLIMCP
Who am IGET /v1/api/whoamijurniti whoamiwhoami
List harnessesGET /v1/api/harnessesjurniti harnessesharnesses_list
Provision (paid)POST /v1/api/vmsjurniti upvm_provision
List / get VMsGET /v1/api/vmsjurniti vms lsvms_list
Run a taskPOST /v1/api/vms/{id}/runjurniti runvm_run
List templatesGET /v1/api/templatesjurniti templates lstemplates_list
Fork (paid)POST /v1/api/templates/{id}/forkjurniti forktemplate_fork

The OpenAPI file gives every operation a unique operationId, typed parameters, and the JSON error schema so function-calling clients can import it directly.

Prefer MCP when you can

If the caller is Claude Code, Codex, or another stdio MCP host on a machine that can run the binary, mount MCP instead of hand-rolling REST:

claude mcp add jurniti -- jurniti mcp

Discovery card (how to connect, not a hosted Streamable HTTP server): /.well-known/mcp.json.

On this page