API & MCP
Authentication
The programmatic /api/v1 and /api/mcp surfaces accept a Bearer workspace key (eli_sk_) or user key (eli_uk_). Workspace keys bind one workspace. User keys bind an account and an explicit workspace allowlist or all of that user's live memberships.
The bearer key
Send either key kind in the Authorization header:
Shown once, stored hashed
Selecting a workspace with a user key
X-Workspace-Id. The server rechecks membership and the owner's live role capability on every call, so removal or demotion takes effect without rotating the key.Scopes
A key carries a subset of the scopes. A request needs the scope its endpoint requires:
agents:run— Start, cancel, approve, and give feedback on agent runs.runs:read— Read run status, output, and traces.kb:read— Read documents, search, and browse the knowledge graph.kb:write— Create and edit documents, entities, and relations.data:read— List data connectors and governed queries.data:run— Execute governed named queries against connected data sources.reports:read— List and read generated reports.reports:write— Generate new report snapshots.
A missing or invalid key returns 401 unauthorized; a valid key lacking the required scope returns 403 insufficient_scope. See Errors & rate limits.
Create a key
Open Settings
Go to your workspace Settings and find the API keys section.Name it and pick scopes
A descriptive name (e.g. "CI runner") and the least-privilege scopes it needs. Default isagents:runandruns:read.Copy the secret now
The raw key is displayed once. Store it in your secret manager immediately.
The backing in-app routes (session-authenticated, not Bearer):
/api/w/:workspaceId/apikeysSession · ownerCreate a key. The response includes the raw secret exactly once.
Request body
User-owned keys are created and revoked from account settings through /api/account/keys. Requested scopes must be granted by the user's role in every selected workspace; that same capability boundary is re-evaluated at request time.
/api/w/:workspaceId/apikeysSessionList keys (metadata only — never the secret): id, name, prefix, scopes, lastUsedAt, createdAt, revokedAt.
/api/w/:workspaceId/apikeys/:idSession · ownerRevoke a key. Revoked keys immediately fail with 401 on /api/v1.
Verify a key
Any authenticated read confirms the key and its scope. For example:
Every keyed run is attributed
api_key_id. The workspace monthly spend cap and active-run concurrency cap apply to API, UI, and scheduled starts.Next
With a key in hand, drive agents via Agents & runs (v1), ask dual-cited questions via Structured query, or point an MCP client at the MCP server.