Authorization header of each request:
Key format
All API keys follow this format:veto_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
Scopes
Each key has one or more scopes that control what it can do.| Scope | Access |
|---|---|
admin | Full access — can create, update, and delete agents, policies, and API keys, and call all read endpoints |
read | Read-only — can call POST /v1/authorize, GET /v1/agents, GET /v1/policies, GET /v1/audit-logs, and GET /v1/api-keys |
POST /v1/api-keys
Create a new API key for your workspace.Requires an API key with the
admin scope.Request body
Display name for the key, for your reference. Between 1 and 255 characters.
Scopes to grant. Use
["admin"] for full access or ["read"] for read-only access.ISO 8601 expiry timestamp. If omitted, the key does not expire.
Response
Returns201 with:
UUID of the API key record.
Display name of the key.
First 12 characters of the key (e.g.,
veto_a1b2c3d4). Use this to identify the key in the future — the full key is not stored.Scopes granted to this key.
Expiry timestamp, or
null if the key does not expire.ISO 8601 creation timestamp.
The raw API key value. This is the only time this value is returned. Store it securely now.
GET /v1/api-keys
List all API keys in your workspace. The raw key is never included in list responses — only the prefix and metadata.Requires an API key with the
admin scope.id, name, prefix, scopes, expiresAt, lastUsedAt, createdAt.
UUID of the API key record.
Display name of the key.
First 12 characters of the key for identification.
Scopes granted to this key.
Expiry timestamp, or
null if the key does not expire.ISO 8601 timestamp of the last time this key was used to authenticate a request.
null if never used.ISO 8601 creation timestamp.
DELETE /v1/api-keys/:id
Revoke an API key. The key is immediately invalidated — any subsequent requests using it will return401.
Requires an API key with the
admin scope.204 No Content on success, or 404 with API_KEY_NOT_FOUND.