Realtime input for Live API sessions.
User input that is sent in real time. Different from ClientContent in that:
- Can be sent continuously without interrupting model generation
- End of turn is derived from user activity (e.g., end of speech)
- Data is processed incrementally for fast response start
- Always assumed to be user's input (cannot populate conversation history)
Fields
media_chunks- Deprecated: Use audio, video, or text insteadaudio- Realtime audio input streamvideo- Realtime video input streamtext- Realtime text input streamactivity_start- Marks start of user activity (only with manual detection)activity_end- Marks end of user activity (only with manual detection)audio_stream_end- Indicates audio stream has ended (e.g., mic off)
Example
# Audio input
%RealtimeInput{
audio: %{mime_type: "audio/pcm", data: base64_audio_data}
}
# Text input
%RealtimeInput{text: "Hello, how are you?"}
Summary
Functions
Parses from API response.
Creates a new RealtimeInput.
Converts to API format (camelCase).
Types
@type t() :: %Gemini.Types.Live.RealtimeInput{ activity_end: boolean() | nil, activity_start: boolean() | nil, audio: Gemini.Types.Blob.t() | map() | nil, audio_stream_end: boolean() | nil, media_chunks: [Gemini.Types.Blob.t() | map()] | nil, text: String.t() | nil, video: Gemini.Types.Blob.t() | map() | nil }