Skip to content

Forgot password ​

Resets a password in three steps: request a code, check the code, then set a new password.

This flow is for password accounts. Single sign-on email domains are rejected.

Asurion-enduser is required on verify and must match the account. Other headers are standard.

1. Request a code ​

POST /fieldservicegateway/usermanagement/v3/auth/forgot-password/init

FieldTypeRequiredDescription
emailstringyesAccount email
json
{
  "email": "user@example.com"
}
bash
curl --request POST 'https://[BASE_URL]/fieldservicegateway/usermanagement/v3/auth/forgot-password/init' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: {{x-api-key}}' \
  --header 'Authorization: {{Authorization}}' \
  --header 'Asurion-correlationid: correlation-id' \
  --header 'Asurion-enduser: end-user' \
  --header 'Asurion-sourcesystem: source-system' \
  --header 'Asurion-serviceprovider: company-id' \
  --header 'Asurion-client: default' \
  --data '{
    "email": "user@example.com"
  }'

200 OK. The same success body is returned when the email is unknown, so the call does not reveal whether an account exists.

json
{
  "success": true,
  "data": {
    "flow_id": "flow-id",
    "message": "If an account exists, a verification code has been sent."
  }
}

2. Check the code ​

POST /fieldservicegateway/usermanagement/v3/auth/forgot-password/verify

FieldTypeRequiredDescription
flow_idstringyesflow_id from step 1
codestringyesCode sent to the user. Up to 32 characters
json
{
  "flow_id": "flow-id",
  "code": "123456"
}
bash
curl --request POST 'https://[BASE_URL]/fieldservicegateway/usermanagement/v3/auth/forgot-password/verify' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: {{x-api-key}}' \
  --header 'Authorization: {{Authorization}}' \
  --header 'Asurion-correlationid: correlation-id' \
  --header 'Asurion-enduser: end-user' \
  --header 'Asurion-sourcesystem: source-system' \
  --header 'Asurion-serviceprovider: company-id' \
  --header 'Asurion-client: default' \
  --data '{
    "flow_id": "flow-id",
    "code": "123456"
  }'

200 OK

json
{
  "success": true,
  "data": {
    "reset_token": "reset-token",
    "expires_in": 1800,
    "message": "Code verified. You may now set a new password."
  }
}

Use reset_token in step 3. It expires after expires_in seconds.

3. Set a new password ​

POST /fieldservicegateway/usermanagement/v3/auth/forgot-password/reset

FieldTypeRequiredDescription
reset_tokenstringyesToken from step 2
passwordstringyes10–72 characters, with an uppercase letter, a lowercase letter, a digit, and a symbol. No spaces
json
{
  "reset_token": "reset-token",
  "password": "New-Passw0rd!"
}
bash
curl --request POST 'https://[BASE_URL]/fieldservicegateway/usermanagement/v3/auth/forgot-password/reset' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: {{x-api-key}}' \
  --header 'Authorization: {{Authorization}}' \
  --header 'Asurion-correlationid: correlation-id' \
  --header 'Asurion-enduser: end-user' \
  --header 'Asurion-sourcesystem: source-system' \
  --header 'Asurion-serviceprovider: company-id' \
  --header 'Asurion-client: default' \
  --data '{
    "reset_token": "reset-token",
    "password": "New-Passw0rd!"
  }'

200 OK

json
{
  "success": true,
  "data": {
    "message": "Password updated successfully."
  }
}

Errors ​

StatusCodeWhen
400VALIDATION_ERRORA required field is missing, or the new password does not meet the rules
400SSO_ONLY_ACCOUNTThe email uses single sign-on and cannot reset a password here
403ENDUSER_FLOW_MISMATCHAsurion-enduser does not match the account that owns the code
500INTERNAL_ERRORSomething unexpected failed
json
{
  "success": false,
  "error": "Forgot password is not available for SSO accounts",
  "code": "SSO_ONLY_ACCOUNT",
  "details": {
    "fields": []
  },
  "correlationId": "correlation-id",
  "timestamp": "2026-10-16T00:00:00.000Z"
}