Verify email OTP
Overview
Verify the email OTP previously sent for a forgot-password / change-password / signup flow. On success for forgot_password it returns a short-lived Passport access token used to complete the password reset.
Prerequisites
- No authentication is required; this endpoint is public.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/verify/email/otp
Authentication
-
No bearer token is required.
-
This endpoint is public and has no company or role scoping.
-
It identifies the target by
emailandtype. -
It then matches the newest unexpired, unverified
Otprecord for that category. -
The response includes a
tokenonly whentypeisforgot_password.
Rate limit
- 10 requests/min per IP.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
type | string | yes | One of change_password, forgot_password, rs_signup. |
email | string | yes | email:rfc,dns. Must belong to a registered User (change/forgot) or SignupActivation (rs_signup), else 400 "Email address is not registered". |
otp | string | yes | The code emailed to the user. Compared with hash_equals; 3 failed attempts invalidates the OTP. |
{
"type": "forgot_password",
"email": "[email protected]",
"otp": "123456"
}Response
data.status(string) — alwayssuccesson a verified OTP.data.response(string) —The one time password has been verified successfully.data.token(string) — Passport personal access token; present ONLY whentype=forgot_password(used to authorize the subsequentusers/reset/passwordcall). Absent forchange_passwordandrs_signup.
200 OK · 200
200{
"data": {
"status": "success",
"response": "The one time password has been verified successfully",
"token": "<access-token>"
}
}Errors
| Status | Meaning |
|---|---|
400 | The request was rejected — the response explains why |
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/verify/email/otp" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type": "forgot_password", "email": "[email protected]", "otp": "123456"}'Updated 8 days ago
Did this page help you?
