# `Codex.Realtime.Events`
[🔗](https://github.com/nshkrdotcom/codex_sdk/blob/v0.16.1/lib/codex/realtime/events.ex#L1)

High-level session events for realtime applications.

These events are emitted by the session and provide a clean interface
for application code to react to session state changes.

# `t`

```elixir
@type t() ::
  Codex.Realtime.Events.AgentStartEvent.t()
  | Codex.Realtime.Events.AgentEndEvent.t()
  | Codex.Realtime.Events.HandoffEvent.t()
  | Codex.Realtime.Events.ToolStartEvent.t()
  | Codex.Realtime.Events.ToolEndEvent.t()
  | Codex.Realtime.Events.RawModelEvent.t()
  | Codex.Realtime.Events.AudioEndEvent.t()
  | Codex.Realtime.Events.AudioEvent.t()
  | Codex.Realtime.Events.AudioInterruptedEvent.t()
  | Codex.Realtime.Events.ErrorEvent.t()
  | Codex.Realtime.Events.HistoryUpdatedEvent.t()
  | Codex.Realtime.Events.HistoryAddedEvent.t()
  | Codex.Realtime.Events.GuardrailTrippedEvent.t()
  | Codex.Realtime.Events.InputAudioTimeoutTriggeredEvent.t()
```

# `agent_end`

```elixir
@spec agent_end(term(), map()) :: Codex.Realtime.Events.AgentEndEvent.t()
```

Create an agent end event.

# `agent_start`

```elixir
@spec agent_start(term(), map()) :: Codex.Realtime.Events.AgentStartEvent.t()
```

Create an agent start event.

# `audio`

```elixir
@spec audio(
  Codex.Realtime.ModelEvents.AudioEvent.t() | map(),
  String.t(),
  non_neg_integer(),
  map()
) ::
  Codex.Realtime.Events.AudioEvent.t()
```

Create an audio event.

# `audio_end`

```elixir
@spec audio_end(String.t(), non_neg_integer(), map()) ::
  Codex.Realtime.Events.AudioEndEvent.t()
```

Create an audio end event.

# `audio_interrupted`

```elixir
@spec audio_interrupted(String.t(), non_neg_integer(), map()) ::
  Codex.Realtime.Events.AudioInterruptedEvent.t()
```

Create an audio interrupted event.

# `error`

```elixir
@spec error(term(), map()) :: Codex.Realtime.Events.ErrorEvent.t()
```

Create an error event.

# `guardrail_tripped`

```elixir
@spec guardrail_tripped(list(), String.t(), map()) ::
  Codex.Realtime.Events.GuardrailTrippedEvent.t()
```

Create a guardrail tripped event.

# `handoff`

```elixir
@spec handoff(term(), term(), map()) :: Codex.Realtime.Events.HandoffEvent.t()
```

Create a handoff event.

# `history_added`

```elixir
@spec history_added(Codex.Realtime.Items.item(), map()) ::
  Codex.Realtime.Events.HistoryAddedEvent.t()
```

Create a history added event.

# `history_updated`

```elixir
@spec history_updated([Codex.Realtime.Items.item()], map()) ::
  Codex.Realtime.Events.HistoryUpdatedEvent.t()
```

Create a history updated event.

# `input_audio_timeout_triggered`

```elixir
@spec input_audio_timeout_triggered(map()) ::
  Codex.Realtime.Events.InputAudioTimeoutTriggeredEvent.t()
```

Create an input audio timeout triggered event.

# `raw_model_event`

```elixir
@spec raw_model_event(Codex.Realtime.ModelEvents.t(), map()) ::
  Codex.Realtime.Events.RawModelEvent.t()
```

Create a raw model event.

# `tool_end`

```elixir
@spec tool_end(term(), term(), String.t(), term(), map()) ::
  Codex.Realtime.Events.ToolEndEvent.t()
```

Create a tool end event.

# `tool_start`

```elixir
@spec tool_start(term(), term(), String.t(), map()) ::
  Codex.Realtime.Events.ToolStartEvent.t()
```

Create a tool start event.

---

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