Resend email OTP
Overview
Resend an email OTP for a change-password / forgot-password / signup flow. Always returns the same uniform "if registered, an OTP has been sent" message to avoid email enumeration.
Prerequisites
- No authentication — this endpoint is public.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/resend/email/otp
Authentication
- No bearer token is required. This public endpoint has no company scoping.
- The endpoint uses a separate rate-limit group (3 requests per 3 minutes; 1,000 local).
- It finds the target by
email. - For
change_passwordandforgot_password, it uses the latestUserand that user'sperson.company_idfor branding. - For
rs_signup, it uses the latestSignupActivationand resolves the company through its referral code. - If 10 or more OTPs were created for an email address in the last hour, an in-handler guard steps in. It returns the same uniform response without sending an email.
Rate limit
- 3 requests per 3 minutes.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
type | string | yes | One of change_password, forgot_password, rs_signup. |
email | string | yes | email:rfc,dns. Unknown / unregistered emails still return the uniform success message (no enumeration). |
{
"type": "forgot_password",
"email": "[email protected]"
}Response
data.status(string) — alwayssuccess.data.response(string) —If the email address is registered, a one time password has been sent.
200 OK · 200
200{
"data": {
"status": "success",
"response": "If the email address is registered, a one time password has been sent."
}
}Errors
| Status | Meaning |
|---|---|
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/resend/email/otp" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type": "forgot_password", "email": "[email protected]"}'Updated 8 days ago
Did this page help you?
