# `PhoenixKitAI.Errors`
[🔗](https://github.com/BeamLabEU/phoenix_kit_ai/blob/v0.4.0/lib/phoenix_kit_ai/errors.ex#L1)

Central mapping from error atoms (returned by the AI module's public
API) to translated human-readable strings.

Keeping the API layer locale-agnostic means callers and integration
consumers can pattern-match on atoms and decide their own presentation.
Anything user-facing (flash messages, error banners) goes through
`message/1` which wraps each mapping in `gettext/1` using the
`PhoenixKitWeb.Gettext` backend.

## Supported reason shapes

  * plain atoms — `:endpoint_not_found`, `:invalid_api_key`, etc.
  * tagged tuples — `{:api_error, status}`, `{:connection_error, reason}`,
    `{:prompt_error, :not_found | :disabled | :missing_variables}`
  * unknown reasons — rendered as `"Unexpected error: <inspect>"` via
    gettext so nothing ever silently surfaces a raw struct

## Example

    iex> PhoenixKitAI.Errors.message(:invalid_api_key)
    "Invalid API key"

    iex> PhoenixKitAI.Errors.message({:api_error, 503})
    "API error: 503"

# `message`

```elixir
@spec message(term()) :: String.t()
```

Translates an error reason (atom or tagged tuple) into a user-facing
string via gettext.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
