Create and manage API keys
Issue Piloterr API keys, set quotas, and rotate them safely.
API keys authenticate every request. You manage them under API Keys in the sidebar, where each key carries a name, a category, optional sliding-window limits, and an optional expiry date.
API Keys
New API KeyCreate a key
Open the form
Go to API Keys and click New API Key.
Fill in the details
Give the key a Name you will recognise in logs (prod-api, zapier, local-dev), pick a Category, and optionally set an expiry date.
Set request limits
The Request limits tab caps how much a single key can spend. Leave the fields empty for an unlimited key.
Copy the secret
The secret is displayed once, right after creation. Copy it into your secret manager or environment variables. If you lose it, create a new key — it cannot be recovered.
Secret — shown once
Per-key limits
| Limit | Counts |
|---|---|
| Global hard-stop | Every request the key has ever made. |
| Within 24h | The last 24 hours, as a rolling window. |
| Within 7d | The last 7 days, as a rolling window. |
| Within 30d | The last 30 days, as a rolling window. |
The windows roll continuously rather than resetting at midnight or on the 1st. A key that hits its limit returns 401 with a message naming the quota, while the rest of your keys keep working.
One key per environment
| Environment | Category | Why |
|---|---|---|
| Local development | development | Revoke freely without touching production. |
| CI and staging | staging | Isolate automated test traffic in the logs. |
| Production | production | Rotate on a schedule, watch it closely. |
Deactivate, delete, or rotate
- Deactivate blocks the key immediately while keeping its history. Use it when a key may have leaked.
- Delete is only possible for keys that were never used. Anything with request history is kept for billing and auditing.
- Rotate by creating the replacement first, deploying it everywhere, then deactivating the old key. That order avoids downtime.
A leaked key can spend your entire balance. Deactivate it right away, then create a replacement — do not wait for the rotation window.