알려진 API 오류는 다음 구조의 JSON 본문을 반환합니다:
{
"error": {
"message": "Human-readable description",
"code": "error_code"
}
}
오류 참조
400 Bad Request
| Code | Cause | Fix |
|---|
invalid_json | 요청 본문이 유효한 JSON이 아닙니다 | JSON 구문을 확인하세요 |
missing_model | model 필드가 없거나 문자열이 아닙니다 | 요청 본문에 "model": "provider/name"를 포함하세요 |
missing_input | input 필드가 없거나 객체가 아닙니다 | 요청 본문에 "input": {...}를 포함하세요 |
invalid_input | 입력이 모델의 스키마와 일치하지 않습니다 | 필수 필드와 유효한 값은 해당 모델의 API 참조를 확인하세요 |
model_not_found | 모델 ID가 사용 가능한 어떤 모델과도 일치하지 않습니다 | 유효한 모델 ID는 models page를 참조하세요 |
401 Unauthorized
| Code | Cause | Fix |
|---|
missing_api_key | Authorization 헤더가 없거나 형식이 잘못되었습니다 | 요청에 Authorization: Bearer sk-...를 포함하세요 |
invalid_api_key | 키가 유효하지 않거나, 비활성화되었거나, 만료되었습니다 | 새 키를 만들거나 Settings → API Keys에서 기존 키를 다시 활성화하세요 |
402 Payment Required
| Code | Cause | Fix |
|---|
insufficient_balance | 이 실행에는 잔액이 너무 부족합니다 | Settings → Credits에서 잔액을 충전하세요 |
403 Forbidden
| Code | Cause | Fix |
|---|
api_key_spend_limit_exceeded | 해당 키의 평생 지출 한도에 도달했습니다 | Settings → API Keys에서 지출 한도를 높이세요 |
ip_not_allowed | 귀하의 IP가 해당 키의 허용 목록에 없습니다 | 키의 허용 목록에 귀하의 IP를 추가하거나, 허용 목록을 제거하세요 |
429 Too Many Requests
| Code | Cause | Fix |
|---|
RATE_LIMITED | 짧은 시간에 요청이 너무 많습니다 | 기다렸다가 다시 시도하세요. rate limits를 참조하세요 |
USAGE_EXCEEDED | 해당 키의 사용 할당량이 소진되었습니다 | 지원팀에 문의하거나 새 키를 만드세요 |
404 Not Found
| Code | Cause | Fix |
|---|
run_not_found | 귀하의 계정에 이 ID의 실행이 없습니다 | 실행 ID가 올바른지, 그리고 이 API 키로 생성되었는지 확인하세요 |
500 Internal Server Error
당사 측에서 예상치 못한 오류가 발생했습니다. 이 문제가 계속되면 support@runbase.net로 문의하세요.
코드에서 오류 처리하기
response=$(curl -s -w "\n%{http_code}" https://runbase.net/api/v1/runs \
-H "Authorization: Bearer $RUNBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "google/nano-banana-2", "input": {"prompt": "test"}}')
http_code=$(echo "$response" | tail -1)
body=$(echo "$response" | head -1)
if [ "$http_code" -ne 201 ]; then
echo "Error $http_code: $(echo $body | jq -r '.error.message')"
fi
429 오류의 경우, 지수 백오프를 구현하세요 — 다시 시도하기 전에 1초, 그다음 2초, 그다음 4초를 기다리세요.