One key per environment — production, test, and one per integration you want to be able to switch off on its own. A key shared between two systems is a key you cannot revoke without taking both down.

The secret appears once

We store a hash, not the value — the same way a password is stored. Lose it, revoke and create another. This is deliberately inconvenient: a key that can be re-read in the dashboard at any time is a key that leaks along with dashboard access.

If one leaked

Revoke first, investigate after. DELETE /v1/api-keys/{id} applies to the next call, with no grace period.
Never put the key in browser code or a mobile app. It allows sending on behalf of every domain you have verified, and anyone who opens the inspector will find it. Every call to Kourio leaves from your server.

Where to keep it

An environment variable, never in the repository. If a key has already been committed, revoke it — deleting the commit does not delete it from the history of everyone who already cloned.