- Blocks the user from logging in to your app
- Revokes all of the user’s active sessions
- Prevents the user from refreshing their access token
- Keeps the user’s Privy ID, linked accounts, and embedded wallets unchanged
Access tokens issued before the freeze remain valid until they expire. If your backend verifies
access tokens itself, token verification alone does not enforce a freeze.
Freezing versus other controls
Freeze a user to pause their access, such as during an investigation of suspicious activity. Use the denylist to stop an identifier from logging in or creating accounts.
Freezing a user
Make a Replace A successful request returns a
POST request to:<user-id> with the user’s Privy ID, in the format did:privy:XXXXXX.Authenticate with your app ID and app secret. Send an empty JSON body:200 status code:Unfreezing a user
Make a A successful request returns a
DELETE request to the same path:200 status code with {"success": true}.Behavior and errors
- Idempotent requests: Repeating a freeze or unfreeze request returns a
200status code. Freezing an already frozen user keeps the original freeze time. Your app can safely retry either request. - Unknown users: The API returns a
404status code if the user does not exist or belongs to another app. - Authentication: Missing or invalid app credentials return a
401status code. - Server errors: Retry a freeze request that returns a
5xxstatus code. The user may already be frozen. - Activity logs: Each freeze or unfreeze appears in your organization’s Activity logs in the Privy dashboard and is attributed to an app secret.

