# `Codex.Events.TurnCompleted`
[🔗](https://github.com/nshkrdotcom/codex_sdk/blob/v0.18.1/lib/codex/events.ex#L129)

Final event for a turn, optionally carrying response, usage, and timing data.

App-server completions with `status: "failed"` carry terminal failure
details in `error`. This is distinct from exec JSONL's `TurnFailed` event.

# `t`

```elixir
@type t() :: %Codex.Events.TurnCompleted{
  completed_at: integer() | nil,
  duration_ms: integer() | nil,
  error: map() | nil,
  final_response: Codex.Items.AgentMessage.t() | map() | nil,
  response_id: String.t() | nil,
  started_at: integer() | nil,
  status: String.t() | nil,
  thread_id: String.t() | nil,
  time_to_first_token_ms: integer() | nil,
  turn_id: String.t() | nil,
  usage: map() | nil
}
```

---

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