에러
Scavio API는 표준 HTTP 상태 코드를 사용하며, 문제를 신속하게 디버깅할 수 있도록 구조화된 오류 응답을 반환합니다.
오류 응답 형식
JSON
{
"error": {
"code": "error_code_string",
"message": "Human-readable error description"
}
}상태 코드
| 상태 | 코드 | 설명 |
|---|---|---|
| 400 | bad_request | 잘못된 요청 본문 또는 필수 매개변수 누락 |
| 401 | unauthorized | API 키 누락 또는 유효하지 않음 |
| 403 | forbidden | API 키에 이 작업에 대한 권한이 없음 |
| 402 | insufficient_credits | 크레딧이 없습니다. 충전하거나 요금제를 업그레이드하세요. |
| 429 | rate_limit_exceeded | 요청이 너무 많습니다. 잠시 후 다시 시도하세요. |
| 500 | internal_error | 서버 오류입니다. 잠시 후 다시 시도하세요. |
일반적인 오류
누락된 쿼리 매개변수
400 잘못된 요청
{
"error": {
"code": "bad_request",
"message": "The 'query' field is required"
}
}유효하지 않은 search_type
400 잘못된 요청
{
"error": {
"code": "bad_request",
"message": "Invalid search_type. Must be one of: classic, news, maps, images, lens"
}
}유효하지 않은 API 키
401 인증 실패
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key"
}
}크레딧 부족
402 결제 필요
{
"error": {
"code": "insufficient_credits",
"message": "No credits remaining. Please upgrade your plan or purchase additional credits."
}
}속도 제한 초과
429 요청 과다
{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Retry after 30 seconds."
}
}모범 사례
- 응답 본문을 구문 분석하기 전에 항상 HTTP 상태 코드를 확인하세요.
- 프로그래밍 방식 오류 처리를 위해
error.code필드를 사용하세요. - 로깅 및 디버깅을 위해
error.message필드를 사용하세요. - 429 및 500 오류에 대해 지수 백오프를 사용한 재시도 로직을 구현하세요.
- 400 또는 401 오류는 재시도하지 말고 먼저 요청을 수정하세요.