Provider key
Yours. The real
sk-… from OpenAI, Anthropic, etc. Spillway stores it encrypted
(AES-256-GCM) and uses it to call the provider on your behalf. Never returned to
clients.Virtual key
Spillway’s. An
mk-live-… key you hand to whatever calls the gateway. Scoped to a
team, model allow-list, and rate limits — never touches a real provider credential.Provider keys
Add a provider key once per provider your org uses. All governed traffic to that provider routes through it.apiKey is write-only — it’s encrypted on write and never echoed back by GET /api/provider-keys. A custom baseUrl isn’t accepted yet; custom upstreams go through the
OpenAI-compatible adapter instead.
Virtual keys
A virtual key is what you actually distribute — to a service, a team, a script. It’s the credential the data plane (/v1/*) authenticates.
The plaintext key (
mk-live-…) is returned once, at creation. Only its hash is stored —
there’s no “reveal” later, only revoke-and-reissue.
Where next
Budgets
Cap spend on a virtual key, team, org, or provider.
Teams & orgs
Organize keys under teams for attribution and chargeback.