tinyhumansai/openhuman · error

SearXNG returned {status}: {detail}

Error message

SearXNG returned {status}: {detail}

What it means

The SearXNG instance answered a non-success HTTP status; {detail} carries a UTF-8-safe 500-char prefix of the body. For a self-hosted instance this usually means a bad base_url, a missing format=json setting, or the instance refusing the bot.

Source

Thrown at src/openhuman/search/tools/searxng.rs:191

        );

        let response = self
            .http_client
            .get(url.clone())
            .timeout(Duration::from_secs(self.timeout_secs))
            .send()
            .await
            .map_err(|err| {
                tracing::warn!(error = %err, "[searxng] request failed");
                anyhow::anyhow!("SearXNG request failed: {err}")
            })?;

        let status = response.status();
        if !status.is_success() {
            let body = response.text().await.unwrap_or_default();
            let detail = utf8_safe_prefix_at_byte_boundary(&body, 500);
            tracing::warn!(status = %status, "[searxng] non-2xx response: {detail}");
            anyhow::bail!("SearXNG returned {status}: {detail}");
        }

        let raw: RawSearxngResponse = response.json().await.map_err(|err| {
            tracing::warn!(error = %err, "[searxng] failed to parse JSON response");
            anyhow::anyhow!("Failed to parse SearXNG response: {err}")
        })?;

        let results = normalize_results(raw, max_results);
        tracing::debug!(result_count = results.len(), "[searxng] search complete");

        Ok(SearxngSearchResponse {
            query: query.to_string(),
            results,
        })
    }

    fn search_endpoint_url(&self) -> anyhow::Result<reqwest::Url> {
        let base = self.base_url.trim().trim_end_matches('/');

View on GitHub (pinned to 7491200858)

Solutions

  1. Verify the instance allows the `search` endpoint with JSON format enabled
  2. Fix the configured base_url if it points at the HTML UI
  3. Retry for transient gateway errors
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src/openhuman/search/tools/searxng.rs:191 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/54b9571296620465. Report an issue: GitHub.