SaaS API전자계약 API
POST /ai/contract/{contractId}/otp/send
서명을 위한 OTP 인증번호를 발송합니다. (일반 캠페인 SMS / JP 캠페인 이메일)
OTP 발송 요청
서명 전 본인인증을 위한 OTP 인증번호를 발송합니다.
| 항목 | 값 |
|---|---|
| 메서드 | POST |
| 경로 | /ai/contract/{contractId}/otp/send |
| 인증 | Bearer Token (크리에이터) |
발송 채널 (캠페인 nation 기준 자동 분기)
엔드포인트는 동일하며, 계약이 속한 캠페인의 nation 값에 따라 발송 채널이 자동으로 결정됩니다.
| 캠페인 nation | 발송 채널 | 수신지 | 본문 언어 |
|---|---|---|---|
JP 또는 일본 (JP 캠페인) | 이메일 | 크리에이터 이메일(influence.email) | 일본어 |
| 그 외 | SMS (Aligo) | 크리에이터 전화번호(influence.tel) | 한국어 |
- JP 캠페인은 해외(일본) 크리에이터가 국내 SMS를 수신하기 어려워 이메일로 발송합니다.
- 이메일은 Glow.B 브랜드 HTML 템플릿으로 발송되며, nation에 따라 본문 언어가 분기됩니다 (JP=일본어, 그 외=영어).
- 인증 성공 시 실제 사용된 채널(
SMS/EMAIL)이 계약에 기록됩니다. - 발송 채널과 무관하게 검증(
/otp/verify)·Redis 키·요청 제한은 동일하게 동작합니다.
FILLED또는OTP_VERIFIED상태에서만 요청 가능합니다.- 인증번호는 3분간 유효합니다.
- 10분 내 최대 3회까지 요청 가능합니다. (SMS·이메일 합산, 동일 카운터)
- JP 캠페인인데 크리에이터 이메일이 미등록이면
INVALID_DATA오류가 발생합니다.
요청
POST /ai/contract/1/otp/send HTTP/1.1
Host: api.glowb.com
Authorization: Bearer {access_token}curl -X POST "https://api.glowb.com/ai/contract/1/otp/send" \
-H "Authorization: Bearer {access_token}"const response = await fetch('/ai/contract/1/otp/send', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
},
});
const result = await response.json();Path Parameters
Prop
Type
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "인증번호가 발송되었습니다.",
"data": null
}에러 응답
상태 오류 (400)
{
"status": 400,
"code": "CONTRACT_INVALID_STATE",
"message": "현재 상태에서는 OTP를 요청할 수 없습니다.",
"data": null
}요청 제한 초과 (429)
{
"status": 429,
"code": "CONTRACT_OTP_RATE_LIMIT",
"message": "OTP 요청이 너무 많습니다. 잠시 후 다시 시도해주세요.",
"data": null
}SMS 발송 실패 (500)
{
"status": 500,
"code": "CONTRACT_SMS_SEND_FAILED",
"message": "인증 문자 발송에 실패했습니다.",
"data": {
"resultCode": -101,
"resultMessage": "잔액부족"
}
}data.resultCode와 data.resultMessage는 Aligo SMS API의 실제 에러 코드와 메시지입니다.
네트워크 오류 등 Aligo API 호출 자체가 실패한 경우 resultCode: -999로 반환됩니다.
이메일 발송 실패 (500) — JP 캠페인
{
"status": 500,
"code": "CONTRACT_EMAIL_SEND_FAILED",
"message": "인증 이메일 발송에 실패했습니다.",
"data": {
"resultMessage": "메일 서버 연결 실패"
}
}