Request basics
Headers
Request headers Nexio reads:
Response headers:
A run status response can carry a
trace_id field. It is the trace ID of the request that created the run.
Health check
GET /health needs no key. It answers 200 whenever the API process is up:
status is ok or degraded. degraded means the API is up but its database or queue did not answer a check, so some requests may fail. commit is the running build and is sometimes absent. The status code is 200 in both cases, so read the body. The shared middleware can still answer 500 internal_error or 504 request_timeout, as on any route; see Operations. There is no /api/v1/health route.
Error envelope
Every error from a matched route uses the shape below. A path that matches no route gets a plain-text404, and a method the route does not accept gets a 405 with an empty body.
One exception:
409 environment_in_use carries a top-level blockers object instead of details. See Environments.
Every code, with cause and fix, is in the error reference.
Status codes
Retries
- Retry
429 rate_limitedafter theRetry-Afterdelay. - Retry
500,502,503and504with exponential backoff and jitter, starting near 1 second and capping near 30 seconds. - Retry a run submission only with the same
Idempotency-Keyand the same body, so a retry never creates a second run. The one exception is503 queue_unreachable: Nexio already marked that runfailed, and the same key returns the failed run, so retry it with a newIdempotency-Key. - Never retry
run_cap_exceededin a loop. It clears only when the month rolls over or the cap is raised. - Never retry other
4xxcodes unchanged.
Idempotency
These surfaces deduplicate retries, each with its own key:- A run key has no timer. It deduplicates for as long as its run is stored; runs are removed by the 90-day retention job. The request a run key compares covers the engine, environment, resolved version,
test_scenario,inputandofferings. Full rules are on the Runs page. - Action rules are on Writes and the action ledger.
- An outcome’s
event_idis its idempotency key: a repeat with the same payload answers200and records nothing, and a different payload answers409 event_id_reused. Rules are on Outcomes and annotations.
Body size and time limits
Correlate a failure with support
When you contact support, send thex-request-id from the response, the time in UTC, the route, and the run_id if there is one. Send your own X-Request-ID on every request to make this easier.