Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.
/api/v1/api-keysGET
Returns the API keys owned by the caller's organization. Secrets are never returned.
Authorization
bearerAuth *Bearer <token>
Clerk session JWT, or an API key (the ak_ prefix), sent as a Bearer token or an ?api_key= query parameter. Each endpoint requires the read scope for its resource (e.g. org:rates:read for rates). Token in: header
Response
200 · The subject's API keys
keys?object[]
Show item properties
id?string
name?string
scopes?string[]
created_at?integer
Creation time as a Unix epoch timestamp in milliseconds.
401 · Unauthorized
error?string
Human-readable reason the request was not authenticated or authorized, for example a missing or malformed Authorization header, an invalid token, or a token lacking the required scope. This is free text whose wording can change, so branch on status (or the HTTP status code) instead of on this string.
status?integer
The HTTP status code repeated in the body: 401 when the credential is missing, malformed, or invalid, and 403 when it is valid but lacks the scope the endpoint requires.
403 · Active organization or API-key admin permission is missing
error?string
Stable, machine-readable code identifying the failure; branch on this rather than on message. One of bad_request, unauthorized, forbidden, not_found, conflict, service_unavailable, upstream_error, service_error, or internal_error.
message?string
Human-readable explanation, safe to show to a user. For client errors it names the specific problem; for server-side failures it is a generic notice and the underlying detail is deliberately withheld.
429 · The paid organization's minute or UTC-day request budget is exhausted.
error *"rate_limited"
Always rate_limited. Branch on this to detect a throttled request.
limit *"rpm" | "daily"
Which limit was hit: rpm for the per-minute cap or daily for the daily one.
message *string
Human-readable explanation naming the limit that was exceeded.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying a larger budget. Absent when no plan is available for purchase.
Request example
curl -X GET "https://api.dev.adjacent.markets/api/v1/api-keys" \ -H "Authorization: Bearer <token>"
Response example
{ "keys": [ { "id": "key_a1b2c3", "name": "production-readonly", "scopes": [ "org:events:read", "org:rates:read" ], "created_at": 1750000000000 } ] }