> ## 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.

# Errors and troubleshooting

> Handle gateway failures, validation errors, and failed agent runs.

Use structured Agent SDK errors when your application needs to decide whether to retry, ask the user for different input, or show request details to an operator.

## Handle gateway failures

Gateway failures are rethrown as `AgentGatewayError`:

```typescript theme={null}
import { AgentGatewayError } from "@phaseo/agent-sdk";

try {
  await agent.run({ input, client });
} catch (error) {
  if (error instanceof AgentGatewayError) {
    console.error(error.status, error.requestId, error.reason);
  }
  throw error;
}
```

Failed runs and steps retain gateway error details when they are available.

## Handle schema failures

`AgentSchemaValidationError` identifies invalid tool input, tool output, progress events, or final output. Treat these as contract failures rather than transient model failures.

```typescript theme={null}
import { AgentSchemaValidationError } from "@phaseo/agent-sdk";

try {
  await agent.run({ input, client });
} catch (error) {
  if (error instanceof AgentSchemaValidationError) {
    console.error(error.target, error.message);
  }
  throw error;
}
```

## Inspect the failed run

When the runtime can checkpoint the failure, inspect:

* `result.run.status`
* `result.run.error`
* the latest step's `status`, `error`, and `modelAttempts`
* `requestId` and `nativeResponseId` for correlation with gateway logs

## Common checks

* Confirm `PHASEO_API_KEY` is available to the server process.
* Give each tool a unique, stable `id`.
* Use exact tool-call IDs when approving, rejecting, or supplying manual output.
* Keep model retries bounded; validation and approval failures should not retry blindly.
* Persist paused run state before returning control to a browser or queue worker.

## Related guides

* [Lifecycle hooks](https://phaseo.app/docs/v1/sdk-reference/typescript/agent-sdk-lifecycle-hooks.md)
* [DevTools](https://phaseo.app/docs/v1/sdk-reference/typescript/agent-sdk-devtools.md)
* [State and approval](https://phaseo.app/docs/v1/sdk-reference/typescript/agent-sdk-state-and-approval.md)


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