에러 분류학
Anthropic API는 표준 HTTP 에러 코드와 구조화된 JSON 바디. 400은 너 버그(요청 모양 잘못). 401/403은 인증. 429는 레이트리밋. 500/503은 서버 측; retry. 529는 overloaded; backoff와 함께 retry. SDK가 이것들에 매칭되는 typed exception을 raise해서 너가 바디 수동 parse 안 해도 됨.
안전한 재시도 vs 두 번 청구되는 재시도
Non-streaming POST는 429/5xx에 retry 안전 — SDK가 max_retries(디폴트 2)까지 자동. Streaming 요청은 stream 중간에 안전하게 retry 안 됨 — partial output이 이미 소비됨. 길고 비싼 완성이면 retry 말고 resume으로 디자인.
멱등성 키
Messages API가 Idempotency-Key 요청 헤더로 멱등성 키 지원. 네트워크 깜빡거림으로 호출이 도달했는지 확신 못 하면 같은 키로 retry — API가 두 번 청구하지 않고 원본 응답 반환. Retry 의미가 중요한 비싼 호출엔 idempotency key 써.
원칙: Retry 자세를 호출 종류별로 결정, globally X. 싼 haiku 읽기는 5x retry 가능; 비싼 opus 생성은 idempotency key 원해.