account

Personal access tokens

PROFESSIONALEstimated read: 6 min· Updated 2026-06-02

Personal access tokens

ProfessionalAny user

A Personal access token (PAT) is a long-lived bearer token scoped to a subset of your account's permissions. PATs are the right credential for scripts you run as yourself: a quick report, a small integration, a tiny scheduled job that lives on your laptop. For production-scale automation, use a workspace API key instead — PATs are account-scoped and disappear when you leave the workspace.

TL;DR — Open Account → Personal access tokens. Generate a token, pick a scope set, set an expiry, copy the token once, revoke any time. Every operation is audited; expanding a PAT's scopes past read-only requires a step-up.

When PATs are the right tool

FieldWhat it doesAccepted values / default
Ad-hoc scripts you run as yourselfA weekly report you ssh-into a server to run.PAT. Short scope set; short expiry.
Small single-developer integrationsA laptop-side syncing script.PAT. Stable scope; expiry forces rotation.
Production backendsA service that automates payroll, year-end, etc.Workspace API key. Survives team changes. Audited at workspace level.
Directory syncMicrosoft Entra ID / Okta → AxisSynapse.SCIM bearer token. Wired into the IdP connector.
Webhook signature verificationOutbound deliveries.Webhook signing secret. One per subscription.

Generate a PAT

  1. Open Account → Personal access tokens

    The page lists every PAT you've issued with its label, scopes, last-used timestamp, and expiry.

  2. Click "Generate token"

    A drawer asks for label, scopes, and expiry.

  3. Pick a Label

    Free text. Used in your audit feed for context.

  4. Pick the scopes

    Tick from the scope list. Scopes are read-only / read-write per module. Start with the smallest scope set that satisfies your script.

  5. Pick the expiry

    No expiry / 30 days / 90 days / 180 days / 365 days / custom. Short expiry is the security best practice; the form defaults to 90 days.

  6. Copy the token

    The token is shown ONCE. Paste it into your secret store (or your script's local .env) immediately.

Rotate or revoke

  1. Open the PAT's row

    The row shows the last-used timestamp; if a token has been quiet for weeks, consider whether you still need it.

  2. Rotate

    Generates a fresh token with the same label + scopes + expiry. Old token is invalidated immediately — no overlap window for PATs.

  3. Revoke

    Immediately invalidates the token. Consumers begin returning API_KEY_INVALID.

  4. Elevation (scope expansion)

    Increasing a token's scope past read-only requires a fresh step-up. Reducing scope (or revoking) doesn't.

Scope catalogue

The public scope list is the same one shown on the workspace API key form. Each scope is named after the customer-facing API surface.

FieldWhat it doesAccepted values / default
platform:readRead workspace metadata, security policy state.Useful for inventory / compliance scripts.
platform:writeWrite workspace metadata, change security policy.Step-up on elevation. Use sparingly.
hcm:read / hcm:writeHCM data: employees, payroll, time-off, benefits, performance, etc.Per-employee, payroll, year-end, etc. read-only common; write reserved for automation.
eeo:read / eeo:writeEEO case data.Read-only for reporting; write reserved for case automation.
elr:read / elr:writeELR grievances, accommodations, FMLA, etc.Same pattern.
inventory:read / inventory:writeItems, transfers, counts.Same pattern.
fa:read / fa:writeFixed-assets data.Same pattern.
procurement:read / procurement:writeProcurement requisitions, POs, approvals.Same pattern.
ethics:readEthics intake data (read-only).Write operations are restricted to in-app surfaces.

Every field, explained

FieldWhat it doesAccepted values / default
LabelFree-text identifier.Up to 100 characters.
ScopesPermissions the token carries.One or more scope strings; multi-select.
ExpiryWhen the token auto-revokes.No expiry / 30d / 90d (default) / 180d / 365d / custom date.
Last usedWhen the token last authenticated a request.Updated near-real-time. Use to spot stale tokens.
Step-up on elevationScope expansion past read-only.Fresh MFA proof required.
RotationGenerate a new token with the same metadata.Old token immediately invalidated. No overlap.

What appears in the audit log

  • ACCOUNT_PAT_CREATED — token issuance. Carries the label and scope set.
  • ACCOUNT_PAT_REVOKED — token revocation, manual or auto-revoked by expiry.

Scope elevations and rotations also emit the same _CREATED / _REVOKED pair, with the rotation paired as a single transaction in the row metadata.

Common gotchas

  • "I lost my PAT." Cannot be retrieved. Rotate (replaces the value), revoke, or generate a new one with the same scopes.
  • "My script breaks intermittently." Check the last used timestamp on the PAT — if it isn't updating during the failure window, the script isn't actually sending the token (auth header issue). If it is updating, the failures are downstream.
  • "My PAT expired during a long-running job." Use a workspace API key with overlap-on-rotation for long-running production jobs; PATs are designed for short-lived scripting.
  • "I want to share a PAT with a teammate." Don't. Tokens are bound to your account; if your teammate needs the same access, they generate their own.
  • "A PAT keeps being used after I leave a workspace." Token is revoked when your account is deactivated. If your old account is still active, revoke the PAT explicitly.

Troubleshooting

| Error code | What it means | Fix | |---|---|---| | API_KEY_INVALID | Token unknown or expired. | Rotate or regenerate. | | API_KEY_SCOPE_INSUFFICIENT | Endpoint requires a scope the token doesn't carry. | Elevate (step-up) or generate a new token. | | API_KEY_EXPIRED | Token reached its expiry. | Generate a new one. | | API_KEY_STEPUP_REQUIRED | Scope elevation requires a fresh step-up. | Complete the step-up prompt. |

Related