Create labelled, expiring API keys for CI, scripts and agents, use them, revoke them, and what they can't do.
An API key lets a script, a CI job or an agent use Kiste without a browser. It
starts with ksta_, has a label and a fixed expiry, and can be revoked at any
time.
Create a key
In the console, open API keys and create one. Or with the CLI:
The key is shown once, when you create it. Kiste stores only a hash, so it can't show it again; copy it into your secret store right away. The list shows each key's label, a short non-secret hint, when it was created, when it expires and when it was last used.
- Lifetime: from 5 minutes to 1 year (
--expires-inin seconds). Choose the shortest that works. - Labels are unique among your active keys.
- At most 10 active keys per account (L08).
Use a key
The CLI uses KISTE_TOKEN instead of its saved sign-in.
kiste login --with-token < key.txt saves a key as the CLI's sign-in on a
headless computer. For the HTTP API, send it as a bearer token:
What an API key can't do
An API key can do everything with your Kisten that you can, but not change who you are or how you pay:
| An API key can't | Code |
|---|---|
| Create other API keys | A11 |
| Start a payment or change billing settings (checkout, credit, auto-refill, the payment portal) | B17 |
| Delete the account | A30 |
Revoking every sign-in with sign out everywhere leaves API keys valid; revoke them here.
Revoke a key
Revoke a key in the console or with kiste auth token revoke KEY_ID. Any
process still using it gets 401 at once. A key that signs out with
kiste logout while it is the CLI's sign-in is revoked as well.
Keeping keys safe
- Store keys in your CI's secret store, never in a repository.
- Give each job or agent its own key with a clear label, so you can revoke one without touching the others.
- Prefer short lifetimes and create keys as part of the job when you can.
- Creating a key raises an
api_token.createdevent, so a watcher of your event stream sees every new key.