오류 코드

모든 오류는 HTTP 상태 코드와 함께 아래 형식의 JSON 으로 반환됩니다. 코드 값(error.code)은 변경되지 않으므로 프로그램에서는 code 로 분기하세요. message 는 사람이 읽는 설명이며 바뀔 수 있습니다.

JSON
{
  "request_id": "req_a2b3c74d17246af7aa5f",
  "error": {
    "code": "MESSAGE_TOO_LONG",
    "message": "SMS 본문은 90 bytes 이하이어야 합니다.",
    "details": {
      "channel": "sms",
      "hint": "90 bytes 를 넘으면 /v1/messages/lms 를 사용하세요."
    }
  }
}

입력값 오류에는 details.field 에 문제가 된 필드명이 들어 있습니다. 문의 시 request_id 를 알려 주세요.

재시도 기준

HTTP의미재시도
2xx성공 / 접수—
400 · 401 · 403 · 404 · 405 · 413 · 415 · 422요청 자체를 고쳐야 하는 오류하지 않음
402잔액 부족충전 후
409처리 중 / 취소 불가REQUEST_IN_PROGRESS 만 Retry-After 후
429요청 제한Retry-After 후 (같은 Idempotency-Key)
500 · 503서버 오류 / 일시 장애지수 백오프로 (같은 Idempotency-Key)

오류 코드 목록

인증 · 계정

HTTPcode설명
401UNAUTHORIZEDAPI 키 누락·오류·폐기·만료
403IP_NOT_ALLOWED키의 허용 IP 목록에 없는 주소
403IP_WHITELIST_REQUIRED키에 허용 IP 가 등록되지 않음 (관리자 등록 필요)
403ACCOUNT_SUSPENDED이용이 제한된 계정
403API_DISABLED계정의 API 사용이 허용되지 않음
503API_DISABLED외부 API 일시 중단 (점검 등)
403BUSINESS_MEMBER_REQUIRED알림톡/브랜드메시지는 사업자 회원 전용

요청 형식

HTTPcode설명
400INVALID_JSONJSON 파싱 실패 / 본문 없음 / 최상위가 객체가 아님
404NOT_FOUND존재하지 않는 경로
405METHOD_NOT_ALLOWED허용되지 않는 HTTP 메서드
413PAYLOAD_TOO_LARGEJSON 본문 2MB 초과
415UNSUPPORTED_MEDIA_TYPEContent-Type 이 application/json 이 아님
422INVALID_REQUEST필드 누락·형식 오류·수신자 없음 (details.field)
422TOO_MANY_RECIPIENTS수신자 수 초과 (동일 문구·SMS/알림톡 개별 1,000명, LMS/MMS 개별 문구 500명). details.max 참고
422INVALID_SEND_AT예약 시각 형식 오류 / 과거 / 180일 초과

발송

HTTPcode설명
402INSUFFICIENT_BALANCE잔액 부족
403SENDER_API_NOT_ENABLED해당 발신번호의 API 사용이 허용되지 않음
422SENDER_NOT_APPROVED미승인·미등록 발신번호
422SENDER_BLOCKED통신사(KTOA)에서 중지된 발신번호
503KTOA_UNAVAILABLE발신번호 검증 서비스 일시 장애 (Retry-After)
422MESSAGE_TOO_LONG채널 길이 한도 초과
422SPAM_WORD_BLOCKED금칙어 포함 (details.words)
422ALL_RECIPIENTS_REJECTED접수 가능한 수신자가 없음 (전원 수신거부 등)
422FILE_NOT_FOUNDMMS 이미지가 없거나 만료됨
422INVALID_FILE업로드 파일 형식·크기 오류
422PROFILE_NOT_FOUND발신프로필 없음/비활성
422PROFILE_NOT_USABLE발신프로필이 차단·휴면 상태
422BRAND_NOT_ENABLED브랜드메시지 사용 불가 프로필
422TEMPLATE_NOT_FOUND템플릿 없음 또는 승인·정상 상태 아님
422TEMPLATE_VARIABLE_MISSING필수 변수 누락 (details.variable)
422REQUEST_REJECTED그 외 업무 규칙 위반 (message 참고)

멱등성 · 제한

HTTPcode설명
409REQUEST_IN_PROGRESS같은 Idempotency-Key 요청을 처리 중
422IDEMPOTENCY_KEY_REUSED같은 키를 다른 본문으로 사용
429RATE_LIMITED초당/분당 요청 한도 또는 인증 실패 과다
429CONCURRENCY_LIMIT동시 처리 중인 발송 요청이 너무 많음

조회 · 취소

HTTPcode설명
404MESSAGE_NOT_FOUND발송 건이 없거나, 내 계정의 건이 아니거나, API 로 접수한 건이 아님 (웹사이트에서 발송한 건 포함)
404PROFILE_NOT_FOUND템플릿 조회 시 발신프로필 없음
409CANCEL_NOT_ALLOWED취소 가능한 예약 건이 없음 (이미 발송 시작/취소됨)
422CANCEL_NOT_ALLOWED브랜드메시지는 취소 불가

서버

HTTPcode설명
503TEMPORARILY_UNAVAILABLE일시적 처리 불가 — 같은 요청을 그대로 재시도
503PROVIDER_CONFIG_ERROR · PRICE_NOT_FOUND서비스 설정 문제 — 고객센터 문의
500INTERNAL_ERROR서버 오류 — request_id 와 함께 문의

이 목록에 없는 새로운 code 가 추가될 수 있습니다. 알 수 없는 코드는 HTTP 상태 코드 기준으로 처리하세요. (4xx: 재시도 금지, 5xx: 재시도)