API 오류
API 오류
이 페이지는 모든 Interactions API 오류 코드에 대한 참조를 제공하고, 오류 응답 형식을 설명하며, API가 다양한 요청 유형에 대해 오류를 전달하는 방식을 설명해요.
출처: 원문
본문
표준 API 오류 코드
이 일반 요청 수준 오류 코드는 표준 HTTP 상태 코드에 해당해요. 애플리케이션 로직에서 code 필드를 사용해 프로그래밍 방식으로 오류를 처리하세요.
| 코드 | HTTP 상태 | 설명 | 권장 조치 |
|---|---|---|---|
| invalid_request | 400 Bad Request | 요청 페이로드가 잘못되었거나 유효하지 않은 매개변수가 포함되어 있어요. | API 참조에 대해 요청 구문과 매개변수를 확인하세요. |
| failed_precondition | 400 Bad Request | 선행 조건이 충족되지 않아(예: 결제 비활성화) 요청을 처리할 수 없어요. | 프로젝트 결제 상태 또는 계정 사전 요건을 확인하세요. |
| out_of_range | 416 Requested Range Not Satisfiable | 요청 매개변수가 유효 범위를 벗어났어요. | 매개변수 값과 한도를 확인하세요. |
| parameter_unknown | 400 Bad Request | 요청에 알 수 없는 매개변수가 포함되어 있어요. | 인식되지 않은 매개변수를 제거하고 다시 시도하세요. |
| authentication | 401 Unauthorized | API 키가 없거나, 유효하지 않거나, 만료되었어요. | API 키를 확인하세요. |
| payment_required | 402 Payment Required | 선불 크레딧 잔액이 소진되었어요. | 결제 계정에 크레딧을 추가하거나 자동 충전을 켜세요. 재시도하지 마세요: 크레딧이 추가되기 전까지 요청은 성공하지 않아요. |
| permission_denied | 403 Forbidden | API 키에 이 리소스에 대한 권한이 없어요. | API 키 권한과 프로젝트 접근을 확인하세요. |
| not_found | 404 Not Found | 요청한 리소스를 찾을 수 없어요. | 리소스 경로와 매개변수를 확인하세요. |
| model_not_found | 404 Not Found | 지정한 모델을 찾을 수 없어요. | 모델 이름을 확인하거나 다른 모델로 대체하세요. |
| already_exists | 409 Conflict | 생성하려는 엔터티가 이미 존재해요. | 다시 생성하기 전에 리소스가 이미 존재하는지 확인하세요. |
| aborted | 409 Conflict | 충돌 또는 동시성 검사 실패로 작업이 중단되었어요. | 더 높은 애플리케이션 수준에서 요청을 재시도하세요. |
| rate_limit_exceeded | 429 Too Many Requests | 분당 또는 초당 요청·토큰 한도를 초과했어요. | 지수 백오프로 기다렸다가 재시도하세요. |
| quota_exceeded | 429 Too Many Requests | 일일 할당량을 초과했어요. | 할당량이 재설정될 때까지 기다리거나 할당량 증가를 요청하세요. |
| too_many_requests | 429 Too Many Requests | 짧은 시간에 너무 많은 요청을 했어요. | 지수 백오프로 기다렸다가 재시도하세요. |
| cancelled | 499 Client Closed Request | 클라이언트가 요청을 완료하기 전에 취소했어요. | 조치가 필요 없어요. 대개 클라이언트가 연결을 끊었다는 뜻이에요. |
| api_error | 500 Internal Server Error | 서버에서 예기치 않은 오류가 발생했어요. | 요청을 재시도하세요. 지속되면 지원팀에 문의하세요. |
| unimplemented | 501 Not Implemented | 작업 또는 기능이 구현되지 않았거나 지원되지 않아요. | API 기능을 확인하거나 지원되는 기능으로 전환하세요. |
| service_unavailable | 503 Service Unavailable | 서비스가 일시적으로 과부하되거나 다운되었어요. | 지수 백오프로 기다렸다가 재시도하세요. |
| deadline_exceeded | 504 Gateway Timeout | 요청이 마감 시간 내에 완료되지 않았어요. | 서버 기본값을 사용하도록 클라이언트 마감 시간 설정을 제거하거나 늘리세요. |
생성 차단 코드
이 오류 코드는 정책, 안전 또는 콘텐츠 제한이 모델 출력을 차단했음을 나타내요. 이 코드 중 하나를 받으면 입력을 수정하고 다시 시도하세요.
| 코드 | 설명 |
|---|---|
| safety | 안전 위반(유해 콘텐츠)으로 요청이 차단되었어요. |
| recitation | 저작권 또는 낭송 제한으로 요청이 차단되었어요. |
| language | 지원되지 않는 언어로 요청이 차단되었어요. |
| prohibited_content | 금지 콘텐츠 지침으로 요청이 차단되었어요. |
| spii | 민감한 개인 식별 정보(Sensitive Personally Identifiable Information) 제한으로 요청이 차단되었어요. |
| blocklist | 블록리스트의 금지 용어로 요청이 차단되었어요. |
| image_safety | 안전 위반으로 이미지 생성이 차단되었어요. |
| image_prohibited_content | 금지 콘텐츠 지침으로 이미지 생성이 차단되었어요. |
| image_recitation | 저작권 또는 낭송 제한으로 이미지 생성이 차단되었어요. |
| image_other | 명시되지 않은 이유로 이미지 생성이 차단되었어요. |
| content_blocked | 명시되지 않은 정책 이유로 요청이 차단되었어요. |
생성 오류 코드
이 오류 코드는 모델의 생성 출력에 구조적 문제가 있음을 나타내요(예: 잘못된 함수 호출 또는 선언되지 않은 도구 호출).
| 코드 | 설명 |
|---|---|
| malformed_function_call | 모델이 파싱할 수 없는 함수 호출을 생성했어요. |
| malformed_tool_call | 모델이 파싱할 수 없는 도구 호출을 생성했어요. |
| unexpected_tool_call | 모델이 요청에 선언되지 않은 도구를 호출했어요. |
| no_image | 모델이 이미지를 생성하지 못했어요. |
| too_many_tool_calls | 모델이 허용된 것보다 더 많은 도구 호출을 생성했어요. |
| missing_thought_signature | 응답에 필수 thought 서명이 없어요. |
오류 응답 형식
Interactions API의 모든 오류는 code와 message를 포함하는 error 객체를 반환해요. 예를 들어 지원되지 않는 도구 유형을 전달하면 다음과 같이 반환돼요.
{
"error": {
"code": "invalid_request",
"message": "The value 'invalid_tool_type_xyz' is not supported for 'type' at 'tools[0]'. Supported values: 'function', 'code_execution', 'mcp_server', 'filesystem', 'google_maps', 'google_search', 'bash', 'computer_use', 'file_search', 'url_context'."
}
}
| 필드 | 유형 | 설명 |
|---|---|---|
| code | string | snake_case의 기계 판독 가능한 오류 코드 |
| message | string | 무엇이 잘못되었는지에 대한 사람이 읽을 수 있는 설명 |
오류가 전달되는 방식
API는 표준 HTTP 요청을 하는지 스트리밍(SSE) 요청을 하는지에 따라 오류를 다르게 전달해요.
표준 HTTP 요청
표준(비스트리밍) 요청의 경우 API는 HTTP 응답 상태 코드(예: 400 Bad Request, 401 Unauthorized, 429 Too Many Requests)를 설정하고 JSON 응답 본문에 error 객체를 반환해요.
{
"error": {
"code": "invalid_request",
"message": "The value 'invalid_tool_type_xyz' is not supported for 'type' at 'tools[0]'."
}
}
스트리밍(SSE) 요청
스트리밍 요청(stream: true)의 경우 API는 event_type을 "error"로 설정하여 Server-Sent Events(SSE) 스트림을 통해 오류 이벤트를 보내요. error 필드는 동일한 code와 message 구조를 포함해요.
{
"event_type": "error",
"error": {
"code": "not_found",
"message": "Failed to get completed interaction: Result not found."
}
}
전체 SSE 이벤트 스키마는 Interactions API 참조를 참조하세요.