Docs — API reference

Everything the dashboard does, from a script.

Base URL https://api.exorails.net. JSON in, JSON out. Errors: { "error": { "code", "message", "field?" } }. Pagination is keyset: pass the nextCursor you received.

Authentication

Authorization: Bearer exo_pat_…Personal API token, created in Settings. Scoped to one organization. Never returns secret values.
X-Org-IdOptional. Acts on another organization you belong to.

Environments

GET /v1/environmentsList with tool and secret counts, 30-day calls, masked URL.
POST /v1/environments{ name, slug? } → environment, url (shown once), token.
GET /v1/environments/:slugOverview: tools, secrets (names), 30-day counters.
PATCH /v1/environments/:slug{ name?, toolPrefixMode?, callTimeoutMs?, logArguments? }
DELETE /v1/environments/:slugDestroys the environment and its vault key.
POST /v1/environments/:slug/keys/rotateNew URL for the caller; the old one stops at once.
GET /v1/environments/:slug/callsKeyset-paginated call log: ?tool=&status=&cursor=&limit=
GET /v1/environments/:slug/statsDaily series, last-24h counters, top tools.

Tools

GET /v1/catalogKnown servers.
POST /v1/environments/:slug/tools{ catalogId? | name, url, transport?, auth?, headerName?, secretId? | secretName + secretValue, headers?, timeoutMs? }
PATCH /v1/environments/:slug/tools/:idRename, change URL/auth/filter/timeout.
POST /v1/environments/:slug/tools/:id/probeRe-probe now.
POST /v1/environments/:slug/tools/:id/oauth/start→ { authorizeUrl } to open in a browser.
DELETE /v1/environments/:slug/tools/:idRemove the server; its secret stays.

Secrets

GET /v1/environments/:slug/secretsNames, dates, which tools use them.
POST /v1/environments/:slug/secrets{ name, value } — the value is never returned.
PUT /v1/environments/:slug/secrets/:id{ value } — rotate.
DELETE /v1/environments/:slug/secrets/:id409 while a tool uses it.

Organization

GET /v1/orgPlan, role, effective limits.
GET /v1/usageThis month's calls, projected bill, cap.
GET /v1/teamMembers and pending invites.
GET /v1/team/access-reviewEvery URL held in the organization.
GET /v1/auditAudit entries (admins).

Example

curl -s https://api.exorails.net/v1/environments \
  -H "Authorization: Bearer exo_pat_…" | jq '.environments[] | {name, slug, toolsCount}'