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

Usage metadata for Live API responses.

Contains token count information about the request and response,
including breakdowns by modality.

## Fields

- `prompt_token_count` - Number of tokens in the prompt
- `cached_content_token_count` - Number of tokens in cached content
- `candidates_token_count` - Canonical output token count across Gemini Live and Vertex Live
- `response_token_count` - Backwards-compatible alias for Gemini Live `responseTokenCount`
- `tool_use_prompt_token_count` - Tokens in tool-use prompts
- `thoughts_token_count` - Tokens used for thinking
- `total_token_count` - Total token count (prompt + response)
- `prompt_tokens_details` - Token counts by modality for input
- `cache_tokens_details` - Token counts by modality for cached content
- `candidates_tokens_details` - Canonical output token details across Gemini Live and Vertex Live
- `response_tokens_details` - Backwards-compatible alias for Gemini Live `responseTokensDetails`
- `tool_use_prompt_tokens_details` - Token counts by modality for tool use

## Example

    %UsageMetadata{
      prompt_token_count: 100,
      candidates_token_count: 50,
      total_token_count: 150
    }

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

```elixir
@type modality_token_count() :: %{
  modality: String.t() | nil,
  token_count: integer() | nil
}
```

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

```elixir
@type t() :: %Gemini.Types.Live.UsageMetadata{
  cache_tokens_details: [modality_token_count()] | nil,
  cached_content_token_count: integer() | nil,
  candidates_token_count: integer() | nil,
  candidates_tokens_details: [modality_token_count()] | nil,
  prompt_token_count: integer() | nil,
  prompt_tokens_details: [modality_token_count()] | nil,
  response_token_count: integer() | nil,
  response_tokens_details: [modality_token_count()] | nil,
  thoughts_token_count: integer() | nil,
  tool_use_prompt_token_count: integer() | nil,
  tool_use_prompt_tokens_details: [modality_token_count()] | nil,
  total_token_count: integer() | nil
}
```

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

```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/usage_metadata.ex#L71)

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

Creates a new UsageMetadata.

# `output_token_count`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/usage_metadata.ex#L170)

```elixir
@spec output_token_count(t() | nil) :: integer() | nil
```

Returns the normalized output token count for either Gemini Live
(`responseTokenCount`) or Vertex Live (`candidatesTokenCount`) payloads.

# `output_tokens_details`
[🔗](https://github.com/nshkrdotcom/gemini_ex/blob/v0.13.0/lib/gemini/types/live/usage_metadata.ex#L181)

```elixir
@spec output_tokens_details(t() | nil) :: [modality_token_count()] | nil
```

Returns the normalized output token details for either Gemini Live
(`responseTokensDetails`) or Vertex Live (`candidatesTokensDetails`) payloads.

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

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

Converts to API format (camelCase).

---

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