HTTP 오류

우리의 API는 예측 가능한 HTTP 오류 코드 형식을 따릅니다:

  • 400 - invalid_request_error: 요청의 형식이나 내용에 문제가 있습니다. 아래에 나열되지 않은 다른 4XX 상태 코드에도 이 오류 유형을 사용할 수 있습니다.

  • 401 - authentication_error: API 키에 문제가 있습니다.

  • 403 - permission_error: API 키가 지정된 리소스를 사용할 권한이 없습니다.

  • 404 - not_found_error: 요청된 리소스를 찾을 수 없습니다.

  • 413 - request_too_large: 요청이 허용된 최대 바이트 수를 초과합니다.

  • 429 - rate_limit_error: 계정이 속도 제한에 도달했습니다.

  • 500 - api_error: Anthropic 시스템 내부에서 예기치 않은 오류가 발생했습니다.

  • 529 - overloaded_error: Anthropic의 API가 일시적으로 과부하 상태입니다.

    갑작스러운 사용량 증가는 529 오류 발생률을 높일 수 있습니다. 점진적으로 사용량을 늘리고 일관된 사용 패턴을 유지하는 것을 권장합니다.

SSE를 통해 스트리밍 응답을 받을 때, 200 응답을 반환한 후에 오류가 발생할 수 있으며, 이 경우 오류 처리가 이러한 표준 메커니즘을 따르지 않을 수 있습니다.

오류 형태

오류는 항상 JSON으로 반환되며, 최상위 error 객체에는 항상 typemessage 값이 포함됩니다. 예시:

JSON
{
  "type": "error",
  "error": {
    "type": "not_found_error",
    "message": "The requested resource could not be found."
  }
}

우리의 버전 관리 정책에 따라, 이러한 객체 내의 값을 확장할 수 있으며, type 값은 시간이 지남에 따라 증가할 수 있습니다.

요청 ID

모든 API 응답에는 고유한 request-id 헤더가 포함됩니다. 이 헤더에는 req_018EeWyXxfu5pfWkrYcMdjWG와 같은 값이 포함됩니다. 특정 요청에 대해 지원팀에 문의할 때는 문제를 신속하게 해결할 수 있도록 이 ID를 포함해 주시기 바랍니다.

공식 SDK는 x-request-id 헤더의 값을 포함하는 최상위 응답 객체의 속성으로 이 값을 제공합니다:

긴 요청

특히 10분 이상 걸리는 요청의 경우 스트리밍 메시지 API 또는 메시지 배치 API를 사용하는 것을 적극 권장합니다.

스트리밍 메시지 API 또는 메시지 배치 API를 사용하지 않고 큰 max_tokens 값을 설정하는 것은 권장하지 않습니다:

  • 일부 네트워크는 일정 시간이 지난 후 유휴 연결을 끊을 수 있으며, 이로 인해 Anthropic으로부터 응답을 받지 못한 채 요청이 실패하거나 시간 초과될 수 있습니다.
  • 네트워크마다 신뢰성이 다릅니다; 메시지 배치 API를 사용하면 중단 없는 네트워크 연결이 필요한 대신 결과를 폴링할 수 있어 네트워크 문제의 위험을 관리하는 데 도움이 됩니다.

직접 API 통합을 구축하는 경우, TCP 소켓 keep-alive를 설정하면 일부 네트워크에서 유휴 연결 시간 초과의 영향을 줄일 수 있다는 점을 알아야 합니다.

우리의 SDK는 스트리밍되지 않는 메시지 API 요청이 10분 시간 초과를 초과하지 않도록 검증하며, TCP keep-alive를 위한 소켓 옵션도 설정합니다.

Was this page helpful?