pub enum ClaudeError {
Show 13 variants
ApiKeyNotFound,
ApiRequestFailed(String),
ApiHttpError {
status: u16,
body: String,
},
InvalidResponseFormat(String),
AmendmentParsingFailed(String),
PromptTooLarge {
estimated_tokens: usize,
max_tokens: usize,
model: String,
},
RateLimitExceeded,
NetworkError(String),
SubprocessBinaryMissing(String),
SubprocessSpawnFailed(String),
SubprocessTimeout {
secs: u64,
},
SubprocessOutputTooLarge {
limit: usize,
},
SubprocessJsonParseFailed(String),
}Expand description
Claude API specific errors.
Variants§
ApiKeyNotFound
API key not found in environment variables.
ApiRequestFailed(String)
Claude API request failed with error message.
Used where no HTTP status is available (subprocess failures, or an error
the backend could not attribute to a status). Prefer
ClaudeError::ApiHttpError whenever a status is known, so callers can
tell a permanent failure from a retryable one.
ApiHttpError
AI API returned a non-success HTTP status.
Fields
InvalidResponseFormat(String)
Invalid response format from Claude API.
AmendmentParsingFailed(String)
Failed to parse amendments from Claude response.
PromptTooLarge
Prompt exceeds the model’s available input token budget.
Fields
RateLimitExceeded
Rate limit exceeded for Claude API.
NetworkError(String)
Network connectivity error.
SubprocessBinaryMissing(String)
Required subprocess binary is missing from PATH.
SubprocessSpawnFailed(String)
Failed to spawn a subprocess.
SubprocessTimeout
Subprocess exceeded the configured timeout.
SubprocessOutputTooLarge
Subprocess produced more output than the configured cap.
SubprocessJsonParseFailed(String)
Subprocess stdout was not valid JSON.
Implementations§
Source§impl ClaudeError
impl ClaudeError
Sourcepub fn is_transient(&self) -> bool
pub fn is_transient(&self) -> bool
Returns true when retrying the request could plausibly succeed.
Only a non-retryable 4xx is treated as permanent: the request is malformed, unauthorised, or names something that does not exist (a misspelled model, say), so no amount of retrying or falling back will help. Everything else — 5xx, network failures, timeouts, and any error this cannot positively classify — is reported as transient, which preserves the historical fall-back-and-degrade behaviour for errors whose permanence is unproven.
Sourcepub fn is_structured_output_rejection(&self) -> bool
pub fn is_structured_output_rejection(&self) -> bool
Returns true when the endpoint rejected the structured-output field
output_config itself, rather than anything about the request’s
content.
Anthropic’s Messages API takes output_config.format on models the
registry flags via supports_structured_output, but a gateway named by
ANTHROPIC_BEDROCK_BASE_URL may not pass the field through, and answers
a strict-schema rejection — {"message": "output_config.format: Extra inputs are not permitted"} — rather than a model or content error
(issue #1561). That is a property of the endpoint, which the
per-model registry gate cannot know, so callers use this to drop to the
YAML response path instead of failing the run.
The field-name match is the load-bearing half, keeping this narrow
enough that no ordinary 400 (bad model, oversized prompt, malformed
body) can trip it. 422 is accepted alongside 400 because
pydantic-style gateways conventionally use it for exactly this
unrecognised-field rejection.
Trait Implementations§
Source§impl Debug for ClaudeError
impl Debug for ClaudeError
Source§impl Display for ClaudeError
impl Display for ClaudeError
Source§impl Error for ClaudeError
impl Error for ClaudeError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for ClaudeError
impl RefUnwindSafe for ClaudeError
impl Send for ClaudeError
impl Sync for ClaudeError
impl Unpin for ClaudeError
impl UnsafeUnpin for ClaudeError
impl UnwindSafe for ClaudeError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.