Keys
POST /1/keys, GET /1/keys, DELETE /1/keys/:id — create, list and revoke API keys.
Every route here requires an admin key. See API keys for what each key type can do, and Scoped tokens for the signing secret a search key returns.
Create a key
secret and signingSecret are both returned exactly once, at creation — there is no route that reveals either again. signingSecret is null for admin and write keys; only a search key gets one, since it is the key a signed scoped token narrows.
Referrer restrictions
referrers limits where a search key works. A search or click from a browser is allowed only when the hostname of its Origin matches one of the entries; leave it out, or send null, to allow any site.
Each entry is reduced to a lowercase hostname or a *. wildcard: the scheme, port, path and query are dropped, and duplicates are removed. An entry that isn't a hostname — a space, a * anywhere but the first label, a wildcard over a single label like *.com, a scheme other than http or https — fails the whole request with 400 bad_request and names the entry. To allow both a domain and its subdomains, list both: toread.app, *.toread.app.
List keys
display is the prefix plus the last four characters (suo_search_…7f3a) — enough to identify the key, never enough to reconstruct it. Neither secret nor signingSecret is returned here.
Revoke a key
Returns 204 No Content on success. Revoking a key keeps its row for audit but evicts it from the lookup cache; the revocation can take up to 60 seconds to reach every edge location — see API keys.
From the CLI
suo keys create prints secret with a "shown once" warning, but does not yet print signingSecret — call the route directly (as above) until the CLI is updated to surface it too.