Skip to main content

API Keys

All API requests are authenticated using an API key passed in the X-API-Key header.

Creating keys

Create API keys from the dashboard or via the Create Key endpoint. Each key:
  • Is tied to a specific team
  • Can have an optional expiration date
  • Is shown in full once at creation — only the prefix (cuttr_a1b2...) is stored after that
  • Is hashed with SHA-256 before storage — we never store your raw key

Key lifecycle

Revoking a key is irreversible. If you suspect a key is compromised, revoke it immediately and create a new one.

Authentication flow

When you make a request, the API:
  1. Checks the X-API-Key header is present
  2. Hashes the key and looks it up in the database
  3. Verifies the key is not revoked or expired
  4. Checks that the team has an active billing account with sufficient balance
  5. Checks the per-key rate limit (60 requests/minute)
  6. If all checks pass, the request proceeds

Error responses

Best practices

Use environment variables or a secrets manager. If a key leaks in a git commit, revoke it immediately.
Create different keys for development, staging, and production. This way you can revoke one without affecting others.
If you’re sharing a key with a contractor or for a demo, set an expiration so it auto-disables.
Check the usage logs to spot unusual patterns. Each log entry shows which key made the request.