# `Gemini.Types.Live.ServerContent`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L1)

Server content message for Live API sessions.

Incremental server update generated by the model in response to client
messages. Content is generated as quickly as possible, not in real time.
Clients may choose to buffer and play it out in real time.

## Fields

- `model_turn` - Content generated by the model as part of the conversation
- `generation_complete` - True if the model is done generating
- `turn_complete` - True if the model has completed its turn
- `interrupted` - True if a client message interrupted model generation
- `grounding_metadata` - Grounding metadata for the generated content
- `input_transcription` - Transcription of input audio
- `output_transcription` - Transcription of model's audio output
- `url_context_metadata` - Metadata from URL context retrieval
- `turn_complete_reason` - Reason why the turn completed on Vertex Live

## Example

    %ServerContent{
      model_turn: %{role: "model", parts: [%{text: "Hello!"}]},
      turn_complete: true
    }

# `content`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L32)

```elixir
@type content() :: %{optional(:role) =&gt; String.t(), optional(:parts) =&gt; [map()]}
```

# `t`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L41)

```elixir
@type t() :: %Gemini.Types.Live.ServerContent{
  generation_complete: boolean() | nil,
  grounding_metadata: Gemini.Types.Live.GroundingMetadata.t() | nil,
  input_transcription: Gemini.Types.Live.Transcription.t() | nil,
  interrupted: boolean() | nil,
  model_turn: content() | nil,
  output_transcription: Gemini.Types.Live.Transcription.t() | nil,
  turn_complete: boolean() | nil,
  turn_complete_reason: Gemini.Types.Live.Enums.TurnCompleteReason.t() | nil,
  url_context_metadata: url_context_metadata() | nil
}
```

# `url_context_metadata`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L37)

```elixir
@type url_context_metadata() :: %{optional(:url_metadata) =&gt; [map()]}
```

# `extract_text`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L135)

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

Extracts text from the model turn.

# `from_api`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L106)

```elixir
@spec from_api(map() | nil) :: t() | nil
```

Parses from API response.

# `new`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L69)

```elixir
@spec new(keyword()) :: t()
```

Creates a new ServerContent.

# `to_api`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/server_content.ex#L87)

```elixir
@spec to_api(t() | nil) :: map() | nil
```

Converts to API format (camelCase).

---

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