API keys authenticate requests to the Veto REST API and SDK. You can create multiple keys per workspace, which makes it easy to rotate them without downtime and scope them to least privilege.Documentation Index
Fetch the complete documentation index at: https://docs.veto.tools/llms.txt
Use this file to discover all available pages before exploring further.
Key format
Veto API keys start withveto_ followed by 32 hex characters:
Key scopes
| Scope | Access |
|---|---|
admin | Full access — create, update, and delete agents, policies, and API keys |
read-only | Read access — query agents, policies, and audit logs; cannot create or modify anything |
POST /v1/authorize works with both admin and read-only keys. You can use a read-only key in your agent runtime and reserve the admin key for your control plane.Creating a key
From the dashboard
Open API Keys settings
Go to Settings → API Keys in the Veto dashboard.
Name and scope the key
Give the key a descriptive name (e.g.,
production-server) and select a scope: admin or read-only.Via the API
key field with the raw key. Store it immediately — subsequent calls to GET /v1/api-keys return only the prefix.
Using a key
Pass the key as a Bearer token in every request:Rotating keys
Veto supports multiple active keys per workspace, so you can rotate without downtime:Revoking a key
From the dashboard: Go to Settings → API Keys and click Revoke next to the key you want to remove. Via the API:204 No Content. Revoked keys are immediately invalid — any request using them will return 401 Unauthorized.
Rate limits
Each API key is limited to 600 requests per minute. Every response includes rate limit headers:| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed per minute |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
429 Too Many Requests with a Retry-After header indicating how many seconds to wait before retrying.