vxcontrol/pentagi · warning · Retryable
there had a problem with our server. try again later
Error message
there had a problem with our server. try again later
What it means
Thrown in tavily.parseHTTPResponse when Tavily answers HTTP 500 Internal Server Error, mapped to "there had a problem with our server. try again later". This is a server-side failure at Tavily, not a problem with your request. It is classified Retryable(err, 0) so the orchestrator can retry or fall back to another search engine.
Source
Thrown at backend/pkg/tools/searchers/tavily.go:162
var respBody tavilySearchResult
if err := json.NewDecoder(resp.Body).Decode(&respBody); err != nil {
return "", Fatal(fmt.Errorf("failed to decode response body: %v", err))
}
return t.buildTavilyResult(ctx, &respBody), nil
case http.StatusBadRequest:
return "", Fatal(fmt.Errorf("request is invalid"))
case http.StatusUnauthorized:
return "", Fatal(fmt.Errorf("API key is wrong"))
case http.StatusForbidden:
return "", Fatal(fmt.Errorf("the endpoint requested is hidden for administrators only"))
case http.StatusNotFound:
return "", Fatal(fmt.Errorf("the specified endpoint could not be found"))
case http.StatusMethodNotAllowed:
return "", Fatal(fmt.Errorf("there need to try to access an endpoint with an invalid method"))
case http.StatusTooManyRequests:
return "", Retryable(fmt.Errorf("there are requesting too many results"), 0)
case http.StatusInternalServerError:
return "", Retryable(fmt.Errorf("there had a problem with our server. try again later"), 0)
case http.StatusBadGateway:
return "", Retryable(fmt.Errorf("there was a problem with the server. Please try again later"), 0)
case http.StatusServiceUnavailable:
return "", Retryable(fmt.Errorf("there are temporarily offline for maintenance. please try again later"), 0)
case http.StatusGatewayTimeout:
return "", Retryable(fmt.Errorf("there are temporarily offline for maintenance. please try again later"), 0)
default:
return "", Fatal(fmt.Errorf("unexpected status code: %d", resp.StatusCode))
}
}
func (t *tavily) buildTavilyResult(ctx context.Context, result *tavilySearchResult) string {
var writer strings.Builder
writer.WriteString("# Answer\n\n")
writer.WriteString(result.Answer)
writer.WriteString("\n\n# Links\n\n")
isRawContentExists := falseView on GitHub (pinned to ea665308ba)
Solutions
- Retry after a short delay — the error is Retryable, so confirm the orchestrator's retry/backoff and fallback engine chain are active.
- Check Tavily's status page or dashboard for an ongoing incident; wait it out if so.
- If one specific query reliably 500s, simplify it (shorter, remove special characters) — it may trip a server-side bug; report it to Tavily support.
- Verify network path is not returning a synthetic 500 (proxy error pages can mimic 500s) with curl from the container.
- Reduce reliance on a single engine by keeping fallback searchers configured in web_search's fallbackStrategy.
Defensive patterns
Strategy: retry
Try / catch
var re *RetryableError
if errors.As(err, &re) && strings.Contains(err.Error(), "problem with our server") {
if retryN < maxRetries {
time.Sleep(backoff(retryN))
return retry(retryN + 1)
}
return fallbackSearcher.Handle(ctx, req) // engine-level fallback after retries exhausted
} Prevention
- Configure exponential backoff with a small retry count; 500s are usually transient.
- Subscribe to Tavily status updates to correlate outages with bursts of 500s.
- Always keep a fallback engine in the web_search chain.
- Log the query when a 500 occurs to detect queries that deterministically trip server-side bugs.
When it happens
Trigger: POST to api.tavily.com/search returns 500: a transient Tavily backend failure, capacity problem during peak load, or a fault triggered by an unusual query (very long/odd content) crashing part of their pipeline.
Common situations: Tavily incidents/outages (check status.tavily.com); repeated 500s across many different queries during a known outage window; isolated 500 on one exotic query that their backend chokes on; regional infrastructure issues.
Related errors
- %s (HTTP %d)
- temporal window search failed: %w
- entity relationships search failed: %w
- %s (HTTP 429)
- failed to do request: %v
AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01).
Data as JSON: /api/errors/828e140bf0c41f87.
Report an issue: GitHub.