tinyhumansai/openhuman · error
Exa returned non-2xx status {status}
Error message
Exa returned non-2xx status {status} What it means
Exa answered a non-2xx status other than the auth-rejected case — transient upstream errors, bad request shape, or rate limiting. Body is dropped to avoid leaking the echoed query.
Source
Thrown at src/openhuman/search/tools/exa.rs:243
tracing::warn!("[exa] request to {path} failed: {e}");
anyhow::anyhow!("Exa request failed: {e}")
})?;
let status = resp.status();
if !status.is_success() {
// Read and drop the body: Exa echoes the query back in errors and
// the message reaches the agent transcript.
let body_len = resp.text().await.unwrap_or_default().len();
tracing::warn!(status = %status, body_len, "[exa] non-2xx response");
if status == reqwest::StatusCode::UNAUTHORIZED
|| status == reqwest::StatusCode::FORBIDDEN
{
anyhow::bail!(
"Exa rejected the configured API key (HTTP {status}). \
Check your Exa API key under Connections > Search engine."
);
}
anyhow::bail!("Exa returned non-2xx status {status}");
}
resp.json().await.map_err(|e| {
tracing::warn!("[exa] failed to read response JSON: {e}");
anyhow::anyhow!("Failed to read Exa response JSON: {e}")
})
}
async fn post_documents(&self, path: &str, body: Value) -> anyhow::Result<Vec<ExaResultItem>> {
let value = self.post(path, body).await?;
let parsed: ExaSearchResponse = serde_json::from_value(value).map_err(|e| {
tracing::warn!("[exa] failed to parse {path} response: {e}");
anyhow::anyhow!("Failed to parse Exa response: {e}")
})?;
tracing::debug!(path, result_count = parsed.results.len(), "[exa] call ok");
Ok(parsed.results)
}
View on GitHub (pinned to 7491200858)
Solutions
- Retry the request for 5xx/429 responses
- Check request parameters for 4xx responses
- Check Exa status if failures persist
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at src/openhuman/search/tools/exa.rs:243 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/7910c2bfccfc403e.
Report an issue: GitHub.