Skip to content

Runs

A run is one execution of a capability’s published version. Every run is recorded: its inputs, the version it used, who started it and through what (the app, the API, the CLI or an agent), how it ended, its output or error, and its log.

In the app, open the capability, fill in its form and click Run. From the command line, reminix capabilities run <slug> --input '<json>'. Agents connected through the MCP server see a tool per published capability, run_<slug>. Through the API, with a key or token holding runs:write:

Terminal window
curl -X POST https://api.reminix.com/v1/capabilities/refund-customer/runs \
-H "Authorization: Bearer $REMINIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "inputs": { "orderId": "o_123" } }'

The answer comes when the run finishes:

{
"id": "run_7b1a…",
"capability": { "id": "cap_3f0c…", "slug": "refund-customer" },
"version": 3,
"status": "succeeded",
"inputs": { "orderId": "o_123" },
"output": { "refunded": "o_123" },
"error": null,
"interface": "api",
"logLines": 1,
"durationMs": 42
}

A run that throws is "status": "failed" with its error — still 200, because the run happened. Read what it logged with GET /v1/runs/{id}/logs.

The inputs must match the version’s inputSchema. When they do not, the run does not start: 400 invalid_request with one entry per problem in details:

{
"error": {
"code": "invalid_request",
"message": "The inputs do not match the capability's input schema",
"details": [
{
"path": "/orderId",
"message": "Instance type \"number\" is invalid. Expected \"string\"."
}
]
}
}

Each version runs in its own isolate, with no access to other capabilities or to your workspace — only its inputs. It has no network access unless its version declares hosts, and then it reaches only those, over HTTPS, at most 50 requests a run, with its secrets attached by Reminix (Capabilities → Calling APIs). Every request appears in the run’s log. A run may use up to 30 seconds; longer runs fail with a time-out.

A run whose secrets cannot be used — one is not set, may not be sent to that host, or may not be read by code — fails before it starts, and the run says why.

GET /v1/runs lists runs, newest first (?capability=<slug> for one capability); GET /v1/runs/{id} reads one. Every run counts toward your workspace’s runs usage (the Free plan includes 1,000 runs a month).

Webhook events: run.completed, run.failed, and capability.published when a new version goes live.