Blindsight API
Datasets, scans, results, healing, compliance, and audit. Use this
surface to drive Data Security programmatically.
Runtime Security API
Prompt and response scanning plus the OpenAI / Anthropic
wire-compatible reverse-proxy routes.
Base URL
Every workspace gets a dedicated URL of the form:API_BASE to this value.
Authentication
All endpoints require a bearer token. There are two ways to get one.API keys (recommended for services)
Mint a long-lived key from Settings, API keys in the workspace. Pass it as a bearer token on every request:JWT login (interactive sessions)
For short-lived programmatic sessions, exchange an email and password for a JWT:access_token you pass on subsequent
requests. Tokens expire after the configured TTL; refresh by logging
in again.
GET /api/auth/me returns the current user profile and roles.
API key scopes
Every key carries a list of scopes. On each request the platform derives the scope that route requires and checks the key against it, so a key can only reach the surfaces it was issued for.The scope list
* used to expand to the Data Security scopes alone, so a key
labelled Full access carried no Runtime Security authority and
could not call the firewall. It now covers both halves of the
platform. If you worked around this by minting a second
runtime:* key, you no longer need it, though the extra key keeps
working.runtime:* (datasets:*, for example) are not valid scopes and are
never recognised, at creation or on a request.
Which scope a route requires
The required scope is derived from the path and the method. Reads areGET, HEAD, and OPTIONS; everything else counts as a write.
The
/results row is matched first, so a results path wins over the
scans or datasets rows it might otherwise fall into.
A key can never exceed its creator
Each scope is backed by a permission the creating user must hold, so minting a key is never a way to gain access:runtime:* is granted only when the creator can exercise all four
runtime: scopes, and * only when they can exercise every scope in
the table. Asking for a scope you do not hold returns 403.
Creating a key
GET /api/api-keys/scopes returns the scope list with labels, which
is what the console renders.
Errors
Every error response follows the same envelope:400, 401, 403,
404, 409, 422, 429, 500). Always read error.code rather
than parsing error.message, since wording can change.
Rate limits and quotas
- Standard REST endpoints share a per-workspace rate limit. When you
hit it, requests return
429with aRetry-Afterheader. - Runtime Security scan endpoints are metered separately, counted
against your plan’s
max_runtime_security_calls. When the quota runs out, scans return402 QUOTA_EXCEEDEDuntil the license is topped up.
Next steps
- Browse the Blindsight API endpoints in the left nav and try a request inline.
- Wire Runtime Security with the Runtime Security overview.

