> ## Documentation Index
> Fetch the complete documentation index at: https://phaseo.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Phaseo Gateway base URL: https://api.phaseo.app/v1. Send `Authorization: Bearer $PHASEO_API_KEY` with every request.
> Model IDs look like `provider/model`, for example `openai/gpt-6-astra`. Do not guess IDs: list them with `GET /v1/models` or check https://phaseo.app/models. `phaseo/free` routes to an available free model and needs no wallet balance.
> For new text integrations prefer `POST /v1/responses`. `POST /v1/chat/completions` (OpenAI format) and `POST /v1/messages` (Anthropic format) suit existing code.
> The full API contract is https://phaseo.app/docs/openapi/v1/openapi.yaml. Official SDKs: `@phaseo/sdk` (TypeScript) and `phaseo` (Python), plus Go, C#, PHP, Ruby and Rust.
> Search these docs over MCP at https://phaseo.app/docs/mcp, and install Phaseo skills with `npx skills add https://phaseo.app/docs`. If a page is wrong or out of date, report it with the MCP `submit_feedback` tool.
> Manage Phaseo accounts with the `phaseo` CLI (`npm install -g @phaseo/cli`, then `phaseo login` or `phaseo login --device-code`), the `/v1` Management API or the MCP server at `https://mcp.phaseo.app/mcp?access=manage`. Do not send users to the dashboard for account tasks. A person is still needed for sign-up, approving a sign-in, paying the first top-up on the checkout link that `phaseo credits add` returns when no card is saved, confirming each saved-card top-up from the emailed link, and account security (password, MFA, passkeys). Create API keys with `phaseo keys create --name <name> --json`; never guess one. Credit top-ups need `phaseo login --scopes billing:write` first. Task map: https://phaseo.app/docs/v1/developers/manage-from-an-agent.md.

# Debug web search requests

> Verify web-search requests, confirm provider support, and inspect returned search results and citations.

Use this recipe when a web-search request is not behaving the way you expected and you want to see whether Phaseo accepted it, routed it correctly, and returned search results cleanly.

## 1. Make the search intent explicit

Do not rely on prompt wording alone. Include the search settings directly in the request so Phaseo knows you want web search.

Check for:

* native search tools in `tools`
* `web_search_options` when the endpoint supports them

## 2. Confirm that a compatible provider was available

If the request is blocked or routed differently than you expected, inspect the request details for:

* provider candidate details
* provider enablement details
* routing explanation

This tells you whether the provider list was narrowed because search support was missing.

## 3. Inspect usage counters

Successful search-backed requests should show search-related usage meters such as:

* requested native web search tools
* web search results
* citations

These are the fastest signal that the request actually used search.

## 4. Inspect the search results section

For successful requests, open the request detail dialog and look for the Web search observability section.

That section shows:

* whether native search was used
* normalized result count
* normalized citation count
* the extracted result records
* the extracted citation records

Use this to compare provider behavior without reading raw payloads.

## 5. Keep these cases separate

Today, native search and provider capability gating are live. Search fallback planning exists separately.

When debugging, keep these cases separate:

1. native search request accepted and routed
2. native search request accepted but no compatible provider remained
3. native search request succeeded but returned weak or sparse citations

These are different problems and should not be debugged the same way.

## 6. What to compare when results look wrong

Compare across requests:

* model ID
* provider actually selected
* request search options
* result count
* citation count
* routing details

If result quality differs by provider, the normalized logs should still make that visible.

## Related

* [Routing and Fallbacks](https://phaseo.app/docs/v1/guides/routing-and-fallbacks.md)
* [Examples](https://phaseo.app/docs/v1/guides/examples.md)
* [TypeScript SDK](https://phaseo.app/docs/v1/sdk-reference/typescript/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.