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

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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 email and type.

  • It then matches the newest unexpired, unverified Otp record for that category.

  • The response includes a token only when type is forgot_password.

Rate limit

  • 10 requests/min per IP.

Request body

FieldTypeRequiredDescription
typestringyesOne of change_password, forgot_password, rs_signup.
emailstringyesemail:rfc,dns. Must belong to a registered User (change/forgot) or SignupActivation (rs_signup), else 400 "Email address is not registered".
otpstringyesThe 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) — always success on a verified OTP.
  • data.response (string) — The one time password has been verified successfully.
  • data.token (string) — Passport personal access token; present ONLY when type=forgot_password (used to authorize the subsequent users/reset/password call). Absent for change_password and rs_signup.

200 OK · 200

{
  "data": {
    "status": "success",
    "response": "The one time password has been verified successfully",
    "token": "<access-token>"
  }
}

Errors

StatusMeaning
400The request was rejected — the response explains why
422The request failed validation — the response names the fields
500Unexpected 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"}'

Did this page help you?