Glowb Dev Docs
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.resultCodedata.resultMessage는 Aligo SMS API의 실제 에러 코드와 메시지입니다. 네트워크 오류 등 Aligo API 호출 자체가 실패한 경우 resultCode: -999로 반환됩니다.

이메일 발송 실패 (500) — JP 캠페인

{
  "status": 500,
  "code": "CONTRACT_EMAIL_SEND_FAILED",
  "message": "인증 이메일 발송에 실패했습니다.",
  "data": {
    "resultMessage": "메일 서버 연결 실패"
  }
}

API 테스트

On this page