401 with an authentication_error. Unif never
falls back to an anonymous mode.
Key format
The prefix is deliberately greppable. Secret scanners can match
unif_sk_ and catch a key before
it reaches a public repository.
Scope
A key is bound to exactly one workspace. It cannot read another workspace’s lists, jobs or trackers, and404 — not 403 — is what you get for an object outside your workspace, so key
probing reveals nothing about what exists.
Within a workspace, every key carries the same permissions. Separate keys per service give you
independent revocation and a clean read of the usage ledger,
not narrower access.
Storing keys
1
Keep them out of source control
Use environment variables or a secret manager. Never a config file that ships, and never the
client side — a key in a browser or mobile binary is a public key.
2
Proxy browser traffic
If a frontend needs Unif data, call Unif from your own backend and forward the result. The
API sets no CORS headers for a reason.
3
Rotate on a schedule
Create the new key, deploy it, confirm traffic has moved on the ledger, then revoke the old
one. Both keys work during the overlap, so rotation needs no downtime.
Verifying a key programmatically
GET /v1/me is cheap, free of credit cost and safe to call on boot as a health check.
Revocation
Revoking a key from the dashboard takes effect within seconds. In-flight requests complete; everything after fails with401. Revocation is not reversible — issue a new key instead.