Skip to content

Authentication & API keys ​

Each EVA API key belongs to exactly one workspace. Authenticate REST requests using:

http
Authorization: Bearer eva_v1_EXAMPLE_PREFIX.EXAMPLE_SECRET

The value above is illustrative. Send credentials only to EVA over HTTPS. API keys are server credentials, not browser configuration.

Manage keys in the dashboard ​

Open Developers → API Keys as a workspace administrator.

  • Create: choose a name and permissions. The full secret is shown once.
  • Inspect: view the prefix, permissions, creation date, last use, and revocation status.
  • Rotate: create a replacement, update the application, verify it, then revoke the old key.
  • Revoke: stop the key from authorizing further API requests.

Keys have no automatic expiry at present. Revoking a key does not cancel an already connected call or invalidate a previously issued, unexpired stream token. Stop active sessions separately when required.

Permissions ​

ScopeAllows
agents:readRead agents, drafts, and published versions
agents:writeCreate, edit, delete, and publish agents
conversations:readRead call details, turns, events, and results
conversations:writeCreate conversations
tools:read / tools:writeRead / manage tool definitions
usage:readRead usage summaries
webhooks:read / webhooks:writeRead / manage webhook subscriptions
api_keys:readList safe key metadata
api_keys:writeIssue and revoke workspace keys

The backend also has credential-management scopes for existing integrations. They are not part of the dashboard’s speech presets.

api_keys:write is a privileged permission: it can issue other keys with scopes beyond the issuing key’s own scopes. Do not grant it to an ordinary call integration. The Run calls preset excludes it.

Workspace selection ​

The key already identifies its workspace. You do not need an X-EVA-Organization-ID header for bearer requests. If you send one, it must match the key’s workspace. A key cannot select another tenant by changing that header.

Dashboard sessions use cookies and CSRF protection instead. A bearer header takes precedence over cookies; an invalid bearer key does not fall back to a signed-in session.

Key-management endpoints ​

MethodPathScopeResult
GET/v1/api-keysapi_keys:readArray of safe metadata
POST/v1/api-keysapi_keys:write201, metadata plus one-time api_key
DELETE/v1/api-keys/{id}api_keys:write204, key revoked

Creation body:

json
{
  "name": "Production voice app",
  "scopes": ["agents:read", "conversations:read", "conversations:write"]
}

Metadata fields are id, name, prefix, scopes, created_at, last_used_at, and revoked_at. The two last timestamps may be null. Lists never return the secret or its stored hash.

Credential handling ​

Keep permanent keys and stream tokens out of source control, browser storage, analytics, and logs. Copy a newly created key into a secret manager or protected server environment. If the create response is lost, refresh the list and revoke the unwanted key before creating a replacement.

EVA Company · Understanding the conversation.