# `Codex.Realtime.Config.ModelConfig`
[🔗](https://github.com/nshkrdotcom/codex_sdk/blob/v0.18.0/lib/codex/realtime/config.ex#L276)

Options for connecting to a realtime model.

# `api_key_fn`

```elixir
@type api_key_fn() :: (-&gt; String.t())
```

# `t`

```elixir
@type t() :: %Codex.Realtime.Config.ModelConfig{
  api_key: String.t() | api_key_fn() | nil,
  call_id: String.t() | nil,
  headers: %{required(String.t()) =&gt; String.t()} | nil,
  initial_model_settings: Codex.Realtime.Config.SessionModelSettings.t() | nil,
  playback_tracker: term() | nil,
  url: String.t() | nil
}
```

# `build_url`

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

Build the WebSocket URL with query parameters.

# `resolve_api_key`

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

Resolve the API key, calling function if needed.

---

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