Security
How Pozy protects sign-in, API keys, webhooks and team access, and the logs you can use to see who did what.
This page describes the controls you get in Pozy today: how people sign in, how API keys and webhook secrets are handled, how access inside a workspace is limited, and what is logged. For where data is stored, see Data residency.
#Signing in to the dashboard
| Method | Notes |
|---|---|
| Email and password | Passwords need at least 8 characters. You confirm your email address from the link Pozy sends before you can sign in. Password reset links work for one hour. |
| Sign in with a Google account. | |
| Single sign-on | SAML 2.0 or OIDC through your identity provider, verified by DNS. Available on every workspace. See SSO. |
| Two-step verification | A TOTP authenticator app plus backup codes, on top of password sign-in. See Two-step verification. |
Sessions last 30 days and are extended while you use the dashboard. Settings → Security lists every signed-in device, with a sign-out button per device and Sign out everywhere. Signing out does not affect API keys.
#API keys
- A key looks like
pz_live_followed by 64 hex characters. It is shown once, when you create it. Pozy stores only a SHA-256 hash and a short preview, so a lost key cannot be recovered: create a new one and revoke the old one. - Revoking a key takes effect on the next request.
- Narrow every key to what it needs. A key can be limited to some profiles (
scope: "profiles"), made read-only (permission: "read"), barred from resource groups such asbillingorwebhooks(disabledResourceGroups), and set to expire (expiresIn, in days). - Only owners, admins and full-scope read-write keys can create or revoke keys. Key creation and revocation are written to the activity log.
See Authentication for the fields and errors, and Keys for your customers for per-tenant keys.
The API accepts requests from any origin, so a key in browser or mobile code can be copied and used by anyone who opens your app. Call Pozy from your backend, and give AI assistants the MCP server with OAuth instead of a raw key.
#Webhooks
- Every delivery is signed.
X-Pozy-Signatureis the hex HMAC-SHA256 of the raw request body, keyed with the endpoint's secret (whsec_...). Verify it before you trust a payload. See Verify signatures. - Signing secrets are encrypted at rest with AES-256-GCM.
- Pozy does not follow redirects when it delivers, so a delivery cannot be bounced to another host.
- Webhook endpoints are managed by owners and admins, or by keys that have not disabled the
webhooksgroup.
#Access inside a workspace
Every member has one of five roles: owner, admin, member, viewer or billing. The role is checked on every API call made with a dashboard session or an OAuth token, so a viewer's write request is refused by the server, not hidden in the UI.
API keys do not have a role. They are limited by their own settings instead: a key restricted to some profiles gets 403 profile_out_of_scope for anything outside them, a read-only key gets 403 read_only_key on writes, and a disabled resource group returns 403 resource_group_disabled.
#Apps you have signed in to
When you connect an AI assistant to the MCP server, Pozy issues an OAuth token for that app. List the apps that hold tokens for your user with GET /v1/me/connected-apps, and revoke one with DELETE /v1/me/connected-apps/{clientId}. The same list is under Settings → Connected apps.
#Logs
GET /v1/logs and Logs in the dashboard show up to 90 days of history.
type |
What it contains | Who can read it |
|---|---|---|
api_request |
Every API call: method, path, status, duration, the key that made it and its request id. | Owners, admins and members |
webhooks |
Every webhook delivery attempt and the endpoint's response. | Owners, admins and members |
activity |
Team and security changes: invites created, accepted, declined and revoked; members removed, role changes, members leaving; workspace changes; SSO connected, removed and domains verified; API keys created and revoked. Each entry names who did it and, for dashboard actions, the IP address. | Owners and admins |
publishing, connections, messaging, workflow_event |
What happened to posts, account connects, messages and automations. | Owners, admins and members |
Filter by requestId to find one call: every response carries X-Request-Id, and you can send your own x-request-id header to correlate with your logs.
curl "https://api.pozy.ai/v1/logs?type=activity&days=30" \
-H "Authorization: Bearer $POZY_API_KEY"#Report a security issue
Email support@pozy.ai with "Security" in the subject. Include the request ids involved, never a full API key or secret. The same contact is published in /.well-known/security.txt.
#In this section
#Endpoints
| Endpoint | What it does |
|---|---|
GET /v1/auth/verify |
Verify credential |
GET /v1/api-keys |
List keys |
POST /v1/api-keys |
Create key |
DELETE /v1/api-keys/{keyId} |
Delete key |
GET /v1/me/connected-apps |
List connected apps |
DELETE /v1/me/connected-apps/{clientId} |
Revoke connected app |
GET /v1/logs |
List activity logs |