오류 코드 및 처리
API 오류 이해 및 처리
오류 응답 형식
모든 오류 응답은 통일된 형식을 사용합니다:
{
"error": {
"code": "ERROR_CODE",
"message": "사람이 읽을 수 있는 오류 메시지",
"details": "추가 컨텍스트 (선택적)"
}
} 💡 error.code를 안정적인 분기 조건으로 사용하세요 (message는 변경될 수 있음)
HTTP 상태 코드
200 OK
요청 성공
201 Created
리소스 생성 성공
400 Bad Request
요청 매개변수가 유효하지 않습니다
{
"code": "INVALID_REQUEST",
"message": "유효하지 않은 요청 형식"
} 401 Unauthorized
인증되지 않았거나 API 키가 유효하지 않습니다
{
"code": "UNAUTHORIZED",
"message": "유효하지 않거나 만료된 API 키"
} 403 Forbidden
계정 잔액 또는 권한이 부족합니다
{
"code": "INSUFFICIENT_BALANCE",
"message": "계정 잔액이 부족합니다"
} 404 Not Found
리소스를 찾을 수 없습니다
{
"code": "ORDER_NOT_FOUND",
"message": "주문을 찾을 수 없습니다"
} 409 Conflict
리소스 충돌
{
"code": "ADDRESS_EXISTS",
"message": "주소가 이미 존재합니다"
} 429 Too Many Requests
API 키 요청 속도 제한 초과
{
"code": "RATE_LIMITED",
"message": "속도 제한 초과"
} 500 Internal Server Error
내부 서버 오류
{
"code": "INTERNAL_ERROR",
"message": "예기치 않은 오류가 발생했습니다"
} 503 Service Unavailable
서비스 일시적으로 사용 불가 (유지보수 중)
{
"code": "SERVICE_UNAVAILABLE",
"message": "서비스를 일시적으로 사용할 수 없습니다"
} 일반적인 오류 코드
| Error Code | Status | Description | Solution |
|---|---|---|---|
| UNAUTHORIZED | 401 | API 키가 유효하지 않거나, 만료되었거나, 폐기되었습니다 | API 키가 올바른지 확인하고, 필요 시 새로 생성하세요 |
| INSUFFICIENT_BALANCE | 403 | 계정 잔액이 부족합니다 | 계정 잔액을 충전하세요 |
| INVALID_ADDRESS | 400 | TRON 주소 형식이 유효하지 않습니다 | 주소가 유효한 TRON 주소인지 확인하세요 (T로 시작) |
| INVALID_ENERGY_AMOUNT | 400 | 에너지 수량이 유효하지 않습니다 | 에너지 수량은 양의 정수여야 하며, USDT 전송 시 65000 권장 |
| INVALID_DURATION | 400 | 대여 기간이 유효하지 않습니다 | 유효한 기간을 사용하세요: 1H, 1D, 3D, 7D, 14D, 30D |
| ORDER_NOT_FOUND | 404 | 주문이 존재하지 않습니다 | 주문 ID가 올바른지 확인하세요 |
| ADDRESS_EXISTS | 409 | 주소가 이미 존재합니다 | 주소가 이미 추가되었는지 확인하거나 기존 주소를 사용하세요 |
| RATE_LIMITED | 429 | API 키 요청 속도 제한 초과 (현재 POST /v1/wallet/recharges에만 적용) | 지수 백오프 재시도를 구현하거나 호출 빈도를 줄이세요 |
처리 방법
| Error | Handling |
|---|---|
| 401 UNAUTHORIZED | API 키 확인/교체 |
| 403 INSUFFICIENT_BALANCE | 충전 또는 요청 금액 감소 |
| 409 ADDRESS_EXISTS | 조회/멱등성 처리로 전환 |
| 429 RATE_LIMITED | 백오프 재시도 (Retry-After 있으면 따르고, 없으면 지수 백오프) |
| 5xx | 재시도 + 요청 컨텍스트 로깅 |
재시도 가이드라인
- • 최대 재시도: 3회
- • 백오프: 지수 (1초, 2초, 4초...)
- • 429/5xx만 재시도
- • 4xx는 재시도하지 않음 (클라이언트 오류)