Passkey-X
Conventions

Pagination and rate limits

Cursor pages, the Link header, the change feed, and the rate limits of each API with their RateLimit-* headers.

Cursor pages

Every Organization API list answers { "data": [...], "has_more": true, "next_cursor": "…" }: send ?cursor=<next_cursor> back while has_more is true. The cursor is opaque: don’t build or change it. GET /v1/vault-items (Customer API) answers { "items": [...], "next_cursor": "…", "has_more": true }; /v1/audit-events keeps next_after.

/v1/logs pages newest first and filters by type, from/to, actor, level, status and q; short lists (alerts, access requests, external shares, handovers, weekly reports) also take since, until and q.

Change feed

GET /v1/sync/changes returns a string cursor and has_more; store the cursor and send it back on the next call to get only what changed.

Rate limits

APILimit
Customer API120 requests per minute per key (or per account for a session)
Organization API300 requests per minute per key
Agent APIOne request per second per agent

On 429, wait Retry-After seconds and back off with jitter. Watch RateLimit-Remaining and slow down before you reach zero; RateLimit-Reset says when the window starts again. A 304 Not Modified still counts.

Rate-limit headers

HeaderAPIsWhat it meansExample
RateLimit-LimitAllRequests allowed in the current window (IETF draft name).RateLimit-Limit: 300
RateLimit-RemainingAllRequests left in the current window.RateLimit-Remaining: 297
RateLimit-ResetAllSeconds until the window resets (on 429: the same as Retry-After).RateLimit-Reset: 41
RateLimit-PolicyAllThe limit and its window in seconds: 120;w=60 (Customer), 300;w=60 (Organization), 1;w=1 (Agent).RateLimit-Policy: 300;w=60
X-RateLimit-LimitCustomer, OrganizationOlder name of RateLimit-Limit, kept for existing clients.X-RateLimit-Limit: 300
X-RateLimit-RemainingCustomer, OrganizationOlder name of RateLimit-Remaining, kept for existing clients.X-RateLimit-Remaining: 297
Retry-AfterAllSeconds to wait: on every 429, and on 502/503 when the service is briefly unavailable. Add jitter.Retry-After: 60

Need help building on Passkey-X?

Questions about the API, a bug or a missing endpoint? Our team replies by email, usually within one business day.