# `Gemini.Types.Response.ListModelsResponse`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L281)

Response structure for listing models.

Contains the list of models and pagination information.

# `t`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L293)

```elixir
@type t() :: %Gemini.Types.Response.ListModelsResponse{
  models: [Gemini.Types.Response.Model.t()],
  next_page_token: String.t() | nil
}
```

# `filter_models`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L326)

```elixir
@spec filter_models(t(), (Gemini.Types.Response.Model.t() -&gt; boolean())) :: [
  Gemini.Types.Response.Model.t()
]
```

Filter models by a predicate function.

# `group_models`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L334)

```elixir
@spec group_models(t(), (Gemini.Types.Response.Model.t() -&gt; term())) :: map()
```

Group models by a classification function.

# `has_next_page?`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L302)

```elixir
@spec has_next_page?(t()) :: boolean()
```

Check if there are more pages available.

# `model_count`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L310)

```elixir
@spec model_count(t()) :: non_neg_integer()
```

Get the total number of models in this response.

# `model_names`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.11.0/lib/gemini/types/response/types_response_model.ex#L318)

```elixir
@spec model_names(t()) :: [String.t()]
```

Extract model names from the response.

---

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