Passkey-X
Start

Authentication and API keys

Personal keys (pxu_), organization keys (pxk_), agent tokens (pxa1.) and SCIM tokens: scopes, expiry, IP allowlists and one-hour test keys.

Credentials

Every API takes a bearer credential in the Authorization header. The prefix tells you which kind it is.

APISendWhere it comes from
Customer APIAuthorization: Bearer pxu_…Personal API key, made in Passkey-X → Developers → API keys. Choose its scopes, when it expires (1–365 days) and, ideally, the IP addresses it may be used from. Shown once; Passkey-X keeps only a hash. Calls run as you under the same access rules as your session. One-click test keys are read-only and expire after one hour.
Customer API (in the app)Authorization: Bearer <USER_ACCESS_TOKEN>The short-lived access token of a Passkey-X session, used by the apps and by the console in Developers. If the account uses two-step verification, the session must have completed it, or you get 403 mfa_required. Prefer a personal API key for scripts.
Organization APIAuthorization: Bearer pxk_…Owners and admins create scoped keys in Admin console → Integrations → API keys. Shown once, expire after 1–365 days, revocable any time, optionally limited to IP addresses, and one-hour read-only test keys for consoles and Postman. Every call is attributed to the key in the organization’s Logs.
Agent APIAuthorization: Bearer pxa1.<agent id>.<secret>The one-time agent token from the admin console. Its private key part never leaves the machine; only the agent ID and secret are sent.
SCIM 2.0Authorization: Bearer pxscim_…Admin console → Identity & SSO: the SCIM token for your identity provider (shown once).

Never put Supabase secret or service-role keys, Paddle API keys or Sent keys in browser or integration client code. Store API keys in your tool’s secret store, and keep pxu_ and pxk_ keys on your server.

Personal API keys (Customer API)

Create a personal API key in Passkey-X → Developers → API keys (scoped, expiring, optional IP allowlist). In the app's console you can also use your own session. Rate limit: 120 requests per minute per key (or per account for a session).

  1. Open your account menu (top right) › Developers & API › API keys and choose Create key.
  2. Name it after the script that will use it, choose what it may do (for example Vault items: Read, Change feed: Read) and how long it lasts.
  3. Add the IP addresses it will be used from (Add my address fills in this computer). A leaked key then doesn't work anywhere else.
  4. Copy the key (pxu_…) into your secret manager: it's shown once. Then try GET /v1/me in Developers › Console, or download the Postman collection.
  5. Watch each key's Activity, and revoke a key the moment you don't need it.
Check a personal key
export PASSKEY_X_PERSONAL_KEY='pxu_…'

curl -s https://passkey-x.com/api/v1/me -H "Authorization: Bearer $PASSKEY_X_PERSONAL_KEY"

# → { "credential": "personal_api_key", "your_ip": "203.0.113.24", "key": { "scopes": ["vault:read", "sync:read"], … } }

Personal key scopes

A personal key can hold any of these; /v1/me, /v1/item-types and /v1/api-keys need none. Up to 10 active keys (and 5 test keys) per person.

ScopeAllows
vault:readRead encrypted vault items (list and get)
vault:writeCreate, update and delete encrypted vault items
workspaces:readYour vaults and their members
sync:readThe change feed
access:readMissions, access requests and grants
access:writeRequest access and decide requests

A key without the scope an endpoint needs is answered 403 insufficient_scope, with the missing scope in WWW-Authenticate.

Organization API keys

Admin console → Integrations → API keys. Use a short-lived, read-only key for testing. Rate limit: 300 requests per minute per key.

  1. Open Admin console › Company & billing › Integrations & API keys and create a key with only the scopes the tool needs (for example members:write or audit:read).
  2. Copy the key once and store it in your tool's secret store. It starts with pxk_.
  3. Call the API with Authorization: Bearer <key>. The full reference, with examples, is at passkey-x.com/api-docs. Its “All endpoints at a glance” table lists every endpoint with the scope it needs.
  4. Revoke a key at any time; every call is recorded in Logs (type: API calls) with the key, the address and the result.
Check an organization key
export PASSKEY_X_API_KEY='pxk_…'

curl -s 'https://passkey-x.com/api/org/v1/me' -H "Authorization: Bearer $PASSKEY_X_API_KEY"

Organization key scopes

Give each integration only what it needs. A key can hold up to 40 scopes, and an organization can have 20 active keys. A missing scope is answered 403 forbidden.

ScopeAllows
audit:readAudit events and item timelines
alerts:readSecurity alerts
alerts:writeAcknowledge and resolve alerts
members:readMembers and invitations
members:writeInvite, suspend, reactivate and offboard
reports:readSecurity summary, weekly reports, member security
workspaces:readShared vaults (no names)
groups:readDirectory groups
access:readVault access requests
access:writeApprove and deny vault access requests
onboarding:readOnboarding progress
onboarding:writeRemind, extend, resume and cancel onboarding
sharing:readExternal sharing requests
sharing:writeApprove and decline external links
handover:readHandovers and previews
handover:writeHand over a leaver's access
policies:readSecurity policies
storage:readStorage pool, usage and Runway
insights:readTrust Index and insights
documents:readDocument register, signature requests, proofs and verification
security:readSign-in risk, incidents and device trust
logs:readLogs: audit, sign-ins, API calls, emails and alerts
company:readCompany profile, address, access rules and devices
devices:writeIssue and cancel device codes, remove devices
policies:writeSet, enforce and stop policies
signatures:writeCancel signature requests
webhooks:readWebhooks, delivery log and the event catalog
webhooks:writeCreate, change, test, replay and delete webhooks
controller:readController computers, groups and actions
controller:writeRun unsigned Controller actions
remote:readRemote seats, devices, sessions and invite links
remote:writeEnd sessions, create and revoke invite links

Test keys and IP allowlists

  • Test keysOne click in Developers (personal) or the Admin console (organization): read-only and expire after one hour. Use them in consoles, Postman and while you build.
  • IP allowlistsLimit a personal or organization key to your servers’ addresses. Calls from anywhere else are answered 403 ip_not_allowed. GET /v1/me returns your_ip, the address the API sees.
  • New-address emailThe owner is emailed the first time a key is used from a new IP address. If that wasn’t you, revoke the key.
  • Expiry and revocationKeys expire after 1–365 days and can be revoked at any time. Passkey-X keeps only a hash: a key is shown once.

Agents and SCIM

Agent tokens (pxa1.) authenticate the Agent API: The one-time agent token from Admin console → Agents. SCIM tokens (pxscim_) authenticate your identity provider’s SCIM 2.0 connection.

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.