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

# Summer Router errors

> Every Summer Router refusal has one stable tag, a one-line fix and a docs link, and the game keeps running. Each tag, its status and what to do.

A failed call never stops the game. The result has `ok` set to `false`, a stable `error` tag, a one-line `fix` and a `docs_url` to the tag below. Branch on the tag and show the character's offline line.

```gdscript theme={null}
var r: SummerRouterResult = await Summer.client.router.reply("guard", line)
if r.ok:
    $Subtitle.text = r.text
else:
    $Subtitle.text = "The guard ignores you."
    push_warning("%s: %s" % [r.error, r.fix])
```

| Tag | Status | Retry |
| - | - | - |
| [`unavailable`](#unavailable) | 503 | Yes |
| [`not_signed_in`](#not_signed_in) | 401 | No |
| [`not_on_summer_games`](#not_on_summer_games) | 403 | No |
| [`mic_denied`](#mic_denied) | in the game | No |
| [`character_not_found`](#character_not_found) | 404 | No |
| [`tool_unhandled`](#tool_unhandled) | in the game | No |
| [`mic_needs_player_action`](#mic_needs_player_action) | in the game | No |
| [`limit_reached`](#limit_reached) | 429 | After `resets_at` |
| [`credits_required`](#credits_required) | 402 | No |
| [`router_disabled`](#router_disabled) | 403 | No |
| [`age_restricted`](#age_restricted) | 403 | No |
| [`provider_unavailable`](#provider_unavailable) | 502 | Yes |
| [`moderated`](#moderated) | 422 | No |
| [`invalid_input`](#invalid_input) | 400 | No |
| [`rate_limited`](#rate_limited) | 429 | After `Retry-After` |

### unavailable

Keep the offline line. Summer Router runs in the Summer app for games on Summer Games: in the editor and in other builds every call answers this.

### not\_signed\_in

Only signed-in Summer players can use Summer Router. Ask the player to sign in to Summer, then try again.

### not\_on\_summer\_games

Summer Router works on games published on Summer Games. Publish the game there; coming soon for all platforms and storefronts. Keep the offline line.

### mic\_denied

Fall back to text. Do not send the player to Settings.

### character\_not\_found

Make the character on the game's Summer Router tab in Studio, then call it by its id.

### tool\_unhandled

Add a handler for this tool to the session's tools before the character calls it.

### mic\_needs\_player\_action

Call request\_access() from the talk button's pressed signal, not from \_ready(), a timer or a cutscene.

### limit\_reached

Show the offline line until `resets_at`, or raise the cap on the game's Summer Router tab in Studio.

### credits\_required

The game's owner adds credits in Studio.

### router\_disabled

Turn Summer Router back on for this game on its Summer Router tab in Studio.

### age\_restricted

Keep the offline fallback for this player.

### provider\_unavailable

Retry later. The game keeps running.

### moderated

The provider's safety filter blocked this turn. Rephrase, or show the fallback line.

### invalid\_input

Send inputs that match the kind's schema in the registry.

### rate\_limited

Slow down and retry after Retry-After seconds.

## What a result carries

| Field | On | Meaning |
| - | - | - |
| `ok` | every result | `true` when the call worked |
| `error`, `fix`, `docs_url` | a refusal | The tag, one line on what to do, and this page at the tag |
| `message` | a refusal | A plain line to show the players, such as "AI limit reached for this game today" |
| `retryable`, `retry_after` | a refusal | `true` when the same call can work later; for `rate_limited`, the seconds to wait |
| `scope`, `resets_at` | `limit_reached` | The cap that was reached (`player_day`, `game_day`, `game_month`, `account_month`, `character_player_day`, `character_game_day`), and when it resets, in Unix seconds |
| `reason` | some refusals | A finer reason, such as `not_found` from `verify_exchange` |
| `request_id` | every result | Send it to Summer support |
| `text`, `tool_calls`, `exchange_id`, `conversation_id` | a character reply | The answer, the tools it called, and the ids to verify or go on |
| `audio` | speech | The voice line, ready to play |
| `texture`, `image`, `data` | an image | The picture as a texture, an image and raw bytes |


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