에러

에러 응답 형식, 에러 코드, 그리고 무엇을 재시도해야 하는지.

API는 표준 HTTP 상태 코드를 사용하며, 에러 응답은 하나의 JSON 형식을 공유합니다.

에러 응답 바디

{
  "errorCode": "account_balance_insufficient",
  "message": "Account balance is insufficient"
}
  • errorCode — 안정적인 기계 판독용 snake_case 코드. 에러 분기는 message가 아니라 이 값으로 하세요.
  • message — 사람이 읽는 설명이며, 문구는 예고 없이 바뀔 수 있습니다.
📘

한 가지 예외: 401 Unauthorized는 빈 바디를 반환합니다 (JSON 없음). 401은 모두 API 키 누락/오류로 처리하세요.

에러 코드

요청 및 인증

HTTPerrorCode의미 / 대처
400invalid_request필드 누락·형식 오류·검증 실패 (범용). message에 해당 필드가 표시됩니다.
400invalid_phone_number_formatrecipient.phone_number가 상품 국가의 형식과 맞지 않습니다.
401(빈 바디)API 키 누락·오류, 또는 키/환경 불일치.
403permission_denied이 작업을 수행할 권한이 없는 키입니다.
404not_found존재하지 않는 경로 또는 리소스.
405method_not_allowed잘못된 HTTP 메서드.
429rate_limit_exceeded요청 과다 — 요청 제한 참고.
500unhandled_error예기치 못한 서버 오류. 지속되면 문의하세요.

주문

HTTPerrorCode의미 / 대처
400account_balance_insufficient잔액 부족. 대시보드에서 충전하세요 (충전).
400price_range_exceedcustom_amount가 상품의 min_amountmax_amount 범위를 벗어남. 참고: 1 미만 값은 스키마 검증에 먼저 걸려 invalid_request가 반환됩니다.
400invalid_order_access주문이 존재하지만 내 계정 소유가 아닙니다.
400resend_not_allowed재발송은 EMAIL·TEXT 주문 아이템만 지원합니다.
400acceptance_expired수신자의 수락 링크가 만료됐습니다.
400order_item_cancelled취소된 주문 아이템에는 작업할 수 없습니다.
404order_not_found / order_item_not_found내 계정에 해당 주문/주문 아이템이 없습니다.
404order_item_not_issued바우처가 아직 발급되지 않음 — 아이템 완료 후 다시 시도하세요.
500order_retry_needed일시적 동시성 충돌. 재시도해도 안전external_reference_id를 쓰면 재시도해도 중복 주문이 생기지 않습니다.

상품

HTTPerrorCode의미 / 대처
404item_not_found존재하지 않는 상품 ID.

재시도 가이드

  • 재시도: 429 (1초 후), order_retry_needed가 담긴 500 (짧은 백오프로 몇 회).
  • 재시도 금지: 그 외 모든 400 — 요청을 먼저 고치세요.
  • 주문 생성 시 항상 external_reference_id를 전달해 재시도가 절대 중복 주문을 만들지 않게 하세요. 중복 방지와 재시도 참고.

Did this page help you?