Change password
Overview
Start an authenticated password change. It verifies the current password, then emails a change_password OTP rather than changing the password directly. (Completion happens via verify/email/otp + users/reset/password.)
Prerequisites
- A bearer token. Callable with Partner and Account tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/users/change/password
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner and Account tokens.
-
Authentication runs inside the
users/prefix of the authenticated group. -
The target is the caller only: it checks and acts on (no id param, no company scoping).
-
The OTP email is branded using the caller's
person.company_id. -
Any authenticated role may change their own password.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
current_password | string | yes | Must match the caller's current password, else 400 with a current_password error. |
password | string | yes | New password. Rules: confirmed (requires password_confirmation), different:current_password, min 8 / max 100 chars, at least one letter, mixed case, and at least one number, plus a regex requiring 1 special char and forbidding ", ', \, whitespace, control chars. Note: not persisted here — only validated; the OTP is sent. |
password_confirmation | string | yes | Required by the confirmed rule on password; must equal password. |
{
"current_password": "OldP@ss123",
"password": "<new-password>",
"password_confirmation": "NewP@ss456"
}Response
data.status(string) —success.data.response(string) —Otp has been sent successfully!
200 OK · 200
200{ "data": { "status": "success", "response": "Otp has been sent successfully!" } }Errors
| Status | Meaning |
|---|---|
400 | The request was rejected — the response explains why |
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/users/change/password" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"current_password": "OldP@ss123", "password": "<new-password>", "password_confirmation": "NewP@ss456"}'Updated 11 days ago
Did this page help you?
