Skip to main content
Veto uses API keys for authentication. Every request to the Veto API must include a valid key in the Authorization header using the Bearer scheme.

API key format

All Veto API keys are prefixed with veto_ followed by 32 hex characters:
This prefix makes keys easy to identify in logs, environment variables, and secret scanners.

Sending the key

Include your key in the Authorization header on every request:

Raw HTTP

Node.js SDK

Pass the key to VetoClient at construction time. The SDK attaches the Authorization header automatically on every request.
Never hardcode your API key in source code. Load it from an environment variable or secrets manager. If a key is compromised, revoke it immediately from Settings → API Keys in the dashboard.

Key scopes

Each API key has one of two scopes: The authorization endpoint (POST /v1/authorize) works with both scopes. For production services that only call authorize, use a read-only key to limit the blast radius of a leaked credential.

Creating API keys

Dashboard

Go to Settings → API Keys and click New API key. Give it a name, choose a scope, and optionally set an expiry date.
The raw key is shown once at creation and never again. Copy it before closing the dialog. After creation, only the key prefix (e.g., veto_a3f8c2) is shown for identification.

API

You can also create keys programmatically. This requires an existing key with admin scope.
Response (key shown once):
To revoke a key, send DELETE /v1/api-keys/:id with an admin key.

Rate limits

The Veto API enforces a limit of 600 requests per minute per API key. This applies across all endpoints.
Every response includes rate limit headers: When you exceed the limit, the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait. The SDK surfaces this as a RateLimitError with a retryAfterMs property:

Error reference