vxcontrol/pentagi · error · Fatal
the endpoint requested is hidden for administrators only
Error message
the endpoint requested is hidden for administrators only
What it means
Thrown in tavily.parseHTTPResponse when Tavily answers HTTP 403 Forbidden, mapped to the message "the endpoint requested is hidden for administrators only". It means the credentials are valid but the account is not allowed to use this endpoint/feature — a plan or permission problem, not a malformed request. Classified Fatal: retrying with the same account cannot succeed.
Source
Thrown at backend/pkg/tools/searchers/tavily.go:154
defer resp.Body.Close()
return t.parseHTTPResponse(ctx, resp)
}
func (t *tavily) parseHTTPResponse(ctx context.Context, resp *http.Response) (string, error) {
switch resp.StatusCode {
case http.StatusOK:
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))
}
}View on GitHub (pinned to ea665308ba)
Solutions
- Log in to the Tavily dashboard and verify the account's plan and standing — upgrade if the requested features (search_depth=advanced, raw_content) require a paid tier.
- Read the 403 response body from Tavily (it names the denied feature) instead of relying on the static string.
- Reduce the request to plan-supported options (drop IncludeRawContent/IncludeAnswer or set SearchDepth to "basic") and retest.
- If the account was suspended, contact Tavily support to restore access.
- If the feature is not needed, keep the current plan and disable the premium options in tavilyRequest.
Example fix
// before: premium features on a free plan -> 403
reqPayload := tavilyRequest{ ..., SearchDepth: "advanced", IncludeRawContent: true, IncludeAnswer: true }
// after: plan-safe defaults
reqPayload := tavilyRequest{ ..., SearchDepth: "basic", IncludeRawContent: false, IncludeAnswer: false } Defensive patterns
Strategy: fallback
Validate before calling
// check plan entitlements before enabling premium request options
if planTiers[cfg.TavilyPlan] < planRequired("advanced") {
useBasicDepthOnly = true
} Try / catch
if err != nil {
if strings.Contains(err.Error(), "hidden for administrators only") {
// permanent for this account: switch permanently to a fallback engine
return fallbackSearcher.Handle(ctx, req)
}
return err
} Prevention
- Match request options (search_depth=advanced, raw_content, include_answer) to the account's actual plan.
- Verify account standing in the Tavily dashboard after any billing/plan change.
- Read the 403 body once to learn which feature is denied, then disable it in code.
- Keep a non-Tavily fallback engine configured so plan restrictions degrade gracefully.
When it happens
Trigger: POST to api.tavily.com/search returns 403: the account's plan does not include the requested feature (e.g. advanced search depth, raw_content, include_answer), the account is suspended, or the key lacks required scope.
Common situations: Free-tier account hitting features that require a paid plan; account temporarily banned for abuse; org switched plans and the old key lost entitlements; regional/IP-based blocking by Tavily presenting as 403.
Related errors
- failed to do request: %v
- failed to decode response body: %v
- request is invalid
- the specified endpoint could not be found
- there need to try to access an endpoint with an invalid meth
AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01).
Data as JSON: /api/errors/64dad1ad3dcb731b.
Report an issue: GitHub.