# `Gemini.Types.Enums.FinishReason`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.15.0/lib/gemini/types/enums.ex#L204)

Reasons why generation finished.

## Values

- `:unspecified` - Default/unknown reason
- `:stop` - Natural stopping point (EOS token)
- `:max_tokens` - Maximum token limit reached
- `:safety` - Blocked due to safety concerns
- `:recitation` - Blocked due to recitation/copyright
- `:language` - Unsupported language
- `:other` - Other/unspecified reason
- `:blocklist` - Content matched a blocklist
- `:prohibited_content` - Prohibited content detected
- `:spii` - Sensitive PII detected
- `:malformed_function_call` - Invalid function call format
- `:image_safety` - Image safety issue

# `t`

```elixir
@type t() ::
  :unspecified
  | :stop
  | :max_tokens
  | :safety
  | :recitation
  | :language
  | :other
  | :blocklist
  | :prohibited_content
  | :spii
  | :malformed_function_call
  | :image_safety
```

# `from_api`

```elixir
@spec from_api(String.t() | nil) :: t() | nil
```

# `to_api`

```elixir
@spec to_api(t()) :: String.t()
```

---

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