List API keys
Lists the API keys registered on an account (prefixes only, no raw keys).
Endpoint
GET /api/v1/api-keys
Authentication
Signing material is carried in the X-PUBLIC-KEY, X-SIGNATURE, and X-REQUEST-ID headers.
Signed message: request_id (16) || account_id (8 LE). request_id’s embedded timestamp must
fall inside the OG’s skew window [now-15s, now+5s].
Visibility
Derived from the session’s reach (mirrors verify_subaccount_scope):
- Pinned keys are returned iff the session can act on their
subaccount_index. - Admin-scope keys (
subaccount_index = None) are returned iff the caller holds an unpinned session under an admin master key — i.e. their reach also covers the whole account.
A caller with no reachable keys gets 200 OK with an empty list.
Returns
200 OKwith a JSON array ofApiKeyResponse(id, prefix, name, subaccount, timestamps).400 Bad Requestif a signing header is malformed or therequest_id’s embedded timestamp falls outside the skew window.401 Unauthorizedif a signing header is missing or signature/session verification fails.500 Internal Server Errorif an internal error occurs.
Authorizations
Base64 ed25519 session public key. Part of the SessionSig triple; not an API key.
UUIDv7 replay nonce; its embedded timestamp must fall inside the skew window [now-15s, now+5s]. Part of the SessionSig triple.
Base64 ed25519 signature over the canonical request message. Part of the SessionSig triple.
Query Parameters
x >= 0Response
Reachable API keys (prefixes only)
When the key was created.
"2026-06-23T16:00:00.000Z"
Stable unique identifier of the API key record.
"0190b6c2-7e4a-7c3b-9f21-2b6a1c4e5d8f"
User-supplied label for the key.
"trading-bot"
First 8 characters of the key, for display and disambiguation.
"k8Jq3xQp"
When the key was last used to authenticate; null if never used.
"2026-06-23T16:00:00.000Z"
Subaccount the key is pinned to; null for an account-wide (admin-scope) key.
x >= 0