---
title: "Resets a password for a user that belongs to the password reset ticket."
method: POST
path: "/v2/passwords/reset"
tags: ["Accounts"]
---

# Resets a password for a user that belongs to the password reset ticket.

`POST /v2/passwords/reset`

This will log the user out of all sessions and re-authenticate.

## Request body

- RobloxAuthenticationApiModelsPasswordResetModel
  - `targetType` 0 | 1 | 2 — ['Email' = 0, 'PhoneNumber' = 1, 'RecoverySessionID' = 2]
  - `ticket` string
  - `userId` integer
  - `password` string
  - `passwordRepeated` string
  - `twoStepVerificationChallengeId` string
  - `twoStepVerificationToken` string
  - `accountBlob` string
  - `secureAuthenticationIntent` RobloxAuthenticationApiModelsRequestSecureAuthenticationIntentModel
    - `clientPublicKey` string
    - `clientEpochTimestamp` integer
    - `saiSignature` string
    - `serverNonce` string
  - `newEmail` string
  - `passkeySessionId` string
  - `passkeyRegistrationResponse` string

## Response `200`

OK

- RobloxAuthenticationApiModelsLoginResponse
  - `user` RobloxWebResponsesUsersSkinnyUserResponse
    - `id` integer
    - `name` string
    - `displayName` string
  - `twoStepVerificationData` RobloxAuthenticationApiModelsTwoStepVerificationSentResponse
    - `mediaType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 — ['Email' = 0, 'SMS' = 1, 'Authenticator' = 2, 'RecoveryCode' = 3, 'SecurityKey' = 4, 'CrossDevice' = 5, 'Password' = 6, 'Passkey' = 7]
    - `ticket` string
  - `identityVerificationLoginTicket` string
  - `isBanned` boolean
  - `accountBlob` string
  - `shouldUpdateEmail` boolean
  - `recoveryEmail` string
  - `passkeyRegistrationSucceeded` boolean
  - `shouldAutoLoginFromRecovery` boolean
  - `shouldPrompt2svRemoval` boolean
  - `shouldPromptPasskeyAddition` boolean
  - `shouldPromptCredentialInvalidation` boolean

## Other responses

- `400` — 3: Request was empty. 11: The password reset ticket is invalid. 12: The user is invalid. 20: The password is invalid. 21: Passwords do not match.
- `403` — 0: Token Validation Failed 16: The ticket is expired. 17: The nonce is expired.
- `500` — 0: Unknown error occured.
- `503` — 1: Feature temporarily disabled. Please try again later.

## Changes

- **2026-09-03** `d9b4ae8b3380` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/roblox/apis/roblox-api/changes/v2/passwords/reset/post.md)

---

[API](https://skmtc.dev/roblox/apis/roblox-api.md) · [All operations](https://skmtc.dev/roblox/apis/roblox-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roblox/roblox-api/revisions/d9b4ae8b3380/schema)
