vxcontrol/pentagi · warning
there are temporarily offline for maintenance. please try ag
Error message
there are temporarily offline for maintenance. please try again later
What it means
The Perplexity searcher maps HTTP 503 (Service Unavailable) from the Perplexity API to a plain error 'there are temporarily offline for maintenance. please try again later'. handleErrorResponse is invoked by search when the upstream returns a non-OK status, signaling the external search backend is temporarily down rather than a caller mistake.
Source
Thrown at backend/pkg/tools/searchers/perplexity.go:237
return errors.New("request is invalid")
case http.StatusUnauthorized:
return errors.New("API key is wrong")
case http.StatusForbidden:
return errors.New("the endpoint requested is hidden for administrators only")
case http.StatusNotFound:
return errors.New("the specified endpoint could not be found")
case http.StatusMethodNotAllowed:
return errors.New("there need to try to access an endpoint with an invalid method")
case http.StatusTooManyRequests:
return errors.New("there are requesting too many results")
case http.StatusInternalServerError:
return errors.New("there had a problem with our server. try again later")
case http.StatusBadGateway:
return errors.New("there was a problem with the server. Please try again later")
case http.StatusServiceUnavailable:
return errors.New("there are temporarily offline for maintenance. please try again later")
case http.StatusGatewayTimeout:
return errors.New("there are temporarily offline for maintenance. please try again later")
default:
return fmt.Errorf("unexpected status code: %d", statusCode)
}
}
// formatResponse formats the API response into readable text
func (p *perplexity) formatResponse(ctx context.Context, response *CompletionResponse, query string) string {
var builder strings.Builder
// Checking for response choices
if len(response.Choices) == 0 {
return "No response received from Perplexity API"
}
// Getting the response content
content := response.Choices[0].Message.Content
builder.WriteString("# Answer\n\n")
builder.WriteString(content)View on GitHub (pinned to ea665308ba)
Solutions
- Retry the search later; 503 is transient — prefer the web_search fallback chain which can fail over to another engine
- Check https://status.perplexity.ai or the provider status for an active outage
- Verify the PPLX/Perplexity API key and plan are valid and not exhausted
- Inspect network/proxy path for intermediaries generating the 503
Example fix
null
Defensive patterns
Strategy: retry
Validate before calling
// Availability check is not practical for transient 503; validate config instead
if (!process.env.PERPLEXITY_API_KEY) throw new Error('perplexity not configured'); Type guard
null
Try / catch
async function searchWithRetry(req, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
return await webSearch({ mode: req.mode, query: req.query, engine: 'perplexity' });
} catch (e) {
if (i === retries - 1 || !/offline for maintenance|problem with .*server/i.test(String(e))) throw e;
await new Promise(r => setTimeout(r, 2 ** i * 1000));
}
}
} Prevention
- Rely on the web_search fallback strategy so another engine serves the query
- Add exponential backoff for 5xx responses
- Monitor the Perplexity status page and alert on sustained 503s
- Keep the API key and plan valid to avoid provider-side throttling
When it happens
Trigger: web_search (perplexity mode/engine) issues a request and Perplexity's API responds with 503 — during provider maintenance windows, capacity throttling, or an outage.
Common situations: Perplexity status-page incidents, rate/burst limiting showing as 503, expired plan or overloaded API causing server-side unavailability, corporate proxy returning 503 for the upstream.
Related errors
- internal engine: all pages failed to fetch: %w
- failed to send request: %w
- failed to read response body: %w
- failed to do request: %w
- unexpected status code: %d
AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01).
Data as JSON: /api/errors/f2a37ac5c7a70795.
Report an issue: GitHub.