---
title: "Sendcustomerotp"
method: POST
path: "/v2/giftcards/customers/otp/send"
tags: ["Gift Card Customers"]
---

# Sendcustomerotp

`POST /v2/giftcards/customers/otp/send`

## Request

- Base URL: `https://api.loyalty.dog`
- URL: `https://api.loyalty.dog/v2/giftcards/customers/otp/send`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/loyalty/apis/loyaltydog/docs/v2/giftcards/customers/otp/send/post.ts> (a function with typed inputs; its response is checked against the schema)

### Send OTP to Customer

Generate and send a one-time password to a customer's email or phone number.
The OTP is stored in Redis with a 5-minute expiry.

**Rate Limiting**:
- Maximum 5 requests per hour per target
- Maximum 10 requests per day per target

**Security**:
- OTP codes are 6 digits, cryptographically secure
- Codes expire after 5 minutes
- Maximum 3 verification attempts per code
- OTP codes are never returned in production (only in dev/test mode)

**Request Body**:
- `target`: Email address or phone number

**Status Codes**:
- 200: OTP sent successfully
- 400: Invalid target format
- 429: Rate limit exceeded

## Request body

- SendOTPRequest: Request to send an OTP to an email or phone number.
  - `target` string, required: Email address or phone number to send OTP to

## Response `200`

Successful Response

- SendOTPResponse
  - `success` boolean, required
  - `message` string, nullable
  - `error` string, nullable
  - `otpType` string, nullable
  - `mockCode` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/loyalty/apis/loyaltydog.md) - [All operations](https://skmtc.dev/loyalty/apis/loyaltydog/llms.txt) - [OpenAPI document](https://skmtc.dev/loyalty/apis/loyaltydog/revisions/5803242b0551?raw)
