Metrics catalog version 2026-06-01.cost-breakdown-basis. Public fields use Local enriched, Live telemetry, Integration connectors, Cloud billing connectors, and Calculated by Ottto labels.
222 metrics
222 total catalog entries
| Metric | Definition | Source | Unit | Visibility |
|---|---|---|---|---|
session.row_id aliases: session.uuid SessionSummaryResponse.id | Ottto database UUID for fetching session detail. always | Calculated by Ottto | UUID | Public stable |
session.id aliases: session.external_id, session.session_id SessionSummaryResponse.session_id | External telemetry session identifier. always after a session row is projected | Local enrichedLocal enrichedLive telemetry | string | Public stable |
session.display_name SessionSummaryResponse.session_display_name | Display-safe session title shown in list and detail views. always provenance: session_display_name_source granularity: row | Local enrichedLive telemetryCalculated by Ottto | string | Public stable |
session.display_name_source SessionSummaryResponse.session_display_name_source | Provenance label for the display-safe session title. always; defaults to a safe fallback label | Local enrichedLive telemetryCalculated by Ottto | enum | Public stable |
session.first_seen SessionSummaryResponse.first_seen | Earliest known session timestamp. nullable until a source supplies timing evidence provenance: usage_origin granularity: row | Local enrichedLocal enrichedLive telemetry | RFC3339 timestamp | Public stable |
session.last_seen SessionSummaryResponse.last_seen | Latest known session activity timestamp. nullable until a source supplies timing evidence provenance: timeline_origin granularity: row | Local enrichedLocal enrichedLive telemetry | RFC3339 timestamp | Public stable |
session.tokens.total aliases: session.total_tokens SessionSummaryResponse.total_tokens | Total billable token count excluding reasoning to avoid double counting. always | Calculated by Ottto | tokens | Public stable |
session.tokens.unattributed_total SessionSummaryResponse.total_unattributed_tokens | Total-only local token evidence that cannot be safely split into input/output/cache dimensions. 0 when no total-only local evidence exists provenance: usage_origin granularity: field | Local enrichedLocal enriched | tokens | Public stable |
session.tokens.input SessionSummaryResponse.total_input_tokens | Input tokens for the session. always provenance: usage_origin granularity: field | Local enrichedLocal enrichedLive telemetry | tokens | Public stable |
session.tokens.output SessionSummaryResponse.total_output_tokens | Output tokens for the session. always provenance: usage_origin granularity: field | Local enrichedLocal enrichedLive telemetry | tokens | Public stable |
session.tokens.cache_read SessionSummaryResponse.total_cache_read_tokens | Cached input tokens read during the session. always provenance: usage_origin granularity: field | Local enrichedLocal enrichedLive telemetry | tokens | Public stable |
session.tokens.cache_creation aliases: session.tokens.cache_write SessionSummaryResponse.total_cache_creation_tokens | Cached input tokens written during the session. always provenance: usage_origin granularity: field | Local enrichedLocal enrichedLive telemetry | tokens | Public stable |
session.tokens.cache_creation_5m SessionSummaryResponse.total_cache_creation_5m_tokens | Cached input tokens written to the five-minute prompt-cache tier. always provenance: usage_origin granularity: field | Local enrichedLocal enrichedLive telemetry | tokens | Public stable |
session.tokens.cache_creation_1h SessionSummaryResponse.total_cache_creation_1h_tokens | Cached input tokens written to the one-hour prompt-cache tier. always provenance: usage_origin granularity: field | Local enrichedLocal enrichedLive telemetry | tokens | Public stable |
session.tokens.reasoning_output aliases: session.tokens.reasoning SessionSummaryResponse.total_reasoning_output_tokens | Reasoning output tokens, a subset of output tokens. 0 when the source does not report reasoning tokens provenance: usage_origin granularity: field | Local enrichedLocal enriched | tokens | Public stable |
session.cost.usd aliases: session.cost.total_usd SessionSummaryResponse.cost_usd | Total session cost in USD. always; may be 0 when pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.input_usd SessionSummaryResponse.total_input_cost_usd | Input-token cost for the session. nullable when dimension pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.output_usd SessionSummaryResponse.total_output_cost_usd | Output-token cost for the session. nullable when dimension pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.cache_read_usd SessionSummaryResponse.total_cache_read_cost_usd | Cache-read token cost for the session. nullable when dimension pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.cache_creation_usd aliases: session.cost.cache_write_usd SessionSummaryResponse.total_cache_creation_cost_usd | Cache-creation token cost for the session. nullable when dimension pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.cache_creation_5m_usd SessionSummaryResponse.total_cache_creation_5m_cost_usd | Five-minute prompt-cache creation cost for the session. nullable when dimension pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.cache_creation_1h_usd SessionSummaryResponse.total_cache_creation_1h_cost_usd | One-hour prompt-cache creation cost for the session. nullable when dimension pricing is unresolved provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.cost.kind SessionSummaryResponse.cost_kind | Whether the displayed cost is actual or estimated. always provenance: cost_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | enum | Public stable |
session.cost.source_kind SessionSummaryResponse.cost_source_kind | Internal cost provenance value for the session. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | enum | Public stable |
session.cost.source_label SessionSummaryResponse.cost_source_label | Human-readable cost source label. always, using a safe default when unresolved | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | string | Public stable |
session.cost.projection_status SessionSummaryResponse.cost_projection_status | Pricing projection state for the session cost. always provenance: cost_source_kind granularity: row | Calculated by OtttoUnresolved | enum | Public stable |
session.cost.materialized_at SessionSummaryResponse.cost_materialized_at | Timestamp when the selected cost projection was materialized. nullable before the pricing projector materializes the row | Calculated by OtttoCalculated by Ottto | RFC3339 timestamp | Public stable |
session.cost.is_stale SessionSummaryResponse.is_stale | Whether the cost was projected from a stale pricing catalog snapshot. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
session.cost.pricing_provenance SessionSummaryResponse.pricing_provenance | Sanitized pricing audit snapshot for the selected session cost. nullable when no pricing projection has been built provenance: cost_source_kind granularity: row | Calculated by OtttoCalculated by OtttoUnresolved | object | Public stable |
session.request_count SessionSummaryResponse.request_count | Count of transcript turns or live telemetry records, depending on source. always provenance: usage_origin granularity: row | Local enrichedLocal enrichedLive telemetry | count | Public stable |
session.primary_model SessionSummaryResponse.primary_model | Model key with the largest token share in the session. nullable when no model attribution exists | Calculated by Ottto | string | Public stable |
session.primary_model_display_name SessionSummaryResponse.primary_model_display_name | Display name for the primary model. nullable when no model attribution exists | Calculated by Ottto | string | Public stable |
session.source SessionSummaryResponse.source | Canonical AI app or telemetry source for the session. nullable for legacy rows without source inference | Local enrichedLocal enrichedLive telemetry | enum | Public stable |
session.initiator SessionSummaryResponse.initiator | Session-level human-vs-AI origin classification derived from raw local/live origin signals. always; defaults to unknown when origin evidence is absent | Local enrichedLive telemetryCalculated by Ottto | enum | Public stable |
session.initiator_label SessionSummaryResponse.initiator_label | Display label for the session-level human-vs-AI origin classification. always; defaults to Unknown when origin evidence is absent | Local enrichedLive telemetryCalculated by Ottto | string | Public stable |
session.machine_id SessionSummaryResponse.machine_id | Best-known computer identifier for the session. nullable when no machine evidence exists | Local enrichedSource plan profileLive telemetry | string | Public stable |
session.machine_name SessionSummaryResponse.machine_name | Display-safe computer name for the session. nullable when no display-safe machine name exists | Local enrichedSource plan profileLive telemetryCalculated by Ottto | string | Public stable |
session.machine_icon_id SessionSummaryResponse.machine_icon_id | Selected icon identifier for the session computer. nullable when no icon is configured | Source plan profileCalculated by Ottto | string | Public stable |
session.machine_icon_url SessionSummaryResponse.machine_icon_url | Renderable icon URL for the session computer. nullable when no icon is configured | Source plan profileCalculated by Ottto | URL | Public stable |
session.machine_icon_version SessionSummaryResponse.machine_icon_version | Version counter for the session computer icon. always | Source plan profileCalculated by Ottto | count | Public stable |
session.project_label SessionSummaryResponse.project_label | Display-safe workspace/project label. nullable when workspace evidence is absent or unsafe provenance: project_label_source granularity: row | Local enrichedLive telemetryCalculated by Ottto | string | Public stable |
session.project_label_source SessionSummaryResponse.project_label_source | Source marker for the display-safe project label. always | Local enrichedLive telemetryCalculated by Ottto | enum | Public stable |
session.branch_label SessionSummaryResponse.branch_label | Display-safe branch label for the session workspace. nullable when branch evidence is absent or unsafe | Local enrichedLive telemetryCalculated by Ottto | string | Public stable |
session.worktree_label SessionSummaryResponse.worktree_label | Display-safe worktree label for the session workspace. nullable when worktree evidence is absent or unsafe | Local enrichedCalculated by Ottto | string | Public stable |
session.lifecycle_status SessionSummaryResponse.lifecycle_status | Lifecycle state inferred for the session. always | Local enrichedLocal enrichedLive telemetry | enum | Public stable |
session.source_plan_profile_id SessionSummaryResponse.source_plan_profile_id | Durable source-plan attribution profile id. nullable when attribution is unknown | Source plan profileLive telemetryLocal enriched | UUID | Public stable |
session.source_plan SessionSummaryResponse.source_plan | Display-safe source-plan summary for subscription/billing attribution. nullable when no profile is attributed | Source plan profile | object | Public stable |
session.pricing_status SessionSummaryResponse.pricing_status | Fine-grained pricing coverage status for the row. always provenance: cost_source_kind granularity: row | Calculated by OtttoUnresolved | enum | Public stable |
session.usage_mode SessionSummaryResponse.usage_mode | Usage mode selected from source-plan and telemetry attribution. always | Source plan profileLive telemetryLocal enrichedCalculated by Ottto | enum | Public stable |
session.runtime_defaults SessionDetailResponse.runtime_defaults | Display-safe runtime defaults captured for the session when local status evidence exists. nullable when no runtime-default evidence was captured for the session | Local enrichedLocal enrichedCalculated by Ottto | object | Public stable |
session.attribution SessionSummaryResponse.attribution | Display-safe billing/model attribution snapshot. nullable when no attribution evidence exists | Source plan profileLive telemetryLocal enrichedCalculated by Ottto | object | Public stable |
session.usage_origin SessionSummaryResponse.usage_origin | Source path that currently owns the session usage totals. always provenance: usage_origin granularity: row | Local enrichedLocal enrichedLive telemetry | enum | Public stable |
session.timeline_origin SessionSummaryResponse.timeline_origin | Source path that currently owns session timing. always provenance: timeline_origin granularity: row | Local enrichedLive telemetry | enum | Public stable |
session.reconciled_at SessionSummaryResponse.reconciled_at | Timestamp of the latest local/live reconciliation pass. nullable until reconciliation runs | Calculated by OtttoReconciledDrift | RFC3339 timestamp | Public stable |
session.reconciliation_status SessionSummaryResponse.reconciliation_status | Status comparing Local enriched and Live telemetry evidence. always provenance: reconciliation_status granularity: row | ReconciledDriftLive telemetry onlyLocal enriched only | enum | Public stable |
session.error_count SessionDetailResponse.error_count | Count of errors associated with the session detail. always | Live telemetryCalculated by Ottto | count | Public stable |
session.elapsed_seconds SessionDetailResponse.first_seen + SessionDetailResponse.last_seen | Elapsed wall-clock seconds for a session: last_seen minus first_seen. This is the headline Duration stat on session detail and spans the whole observed run, including idle gaps between bursts of telemetry. nullable until both session bounds are known | Local enrichedLocal enrichedLive telemetryCalculated by Ottto | seconds | Public stable |
session.active_seconds SessionDetailResponse.total_active_seconds | Active wall-clock seconds for a session: total time spent on requests with each idle gap capped at 5 minutes. The session header's Duration stat shows the full wall-clock span (last_seen minus first_seen) on top and pairs it with this active-only figure beneath, so a long-running session with idle stretches reads as both a long wall time and a shorter active time. 0 when no activity records exist | Live telemetryCalculated by Ottto | seconds | Public stable |
session.model_breakdown[*] SessionDetailResponse.model_breakdown | Per-model usage and cost rows for a session. always provenance: dimension_cost_source granularity: row | Local enrichedLocal enrichedLive telemetryCalculated by Ottto | array | Public stable |
session.tool_summaries[*] SessionDetailResponse.tool_summaries | Redaction-safe per-tool session summaries with per-element source tags. empty when neither path has tool evidence granularity: element | Live telemetry | array | Public stable |
session.file_summaries[*] SessionDetailResponse.file_summaries | Redaction-safe file/workspace evidence summaries with per-element source tags. empty when neither path has file evidence granularity: element | Local enriched | array | Public stable |
session.conversation_turns[*] SessionDetailResponse.conversation_turns | Redaction-safe conversation turn summaries with per-element source tags. empty when turn evidence is unavailable granularity: element | Live telemetry | array | Public stable |
session.conversation_turn_count SessionDetailResponse.conversation_turn_count | Total number of token-bearing telemetry records for the session. Lets the UI render an honest 'N of M turns' header when conversation_turns is capped and evenly sampled. always | Live telemetry | count | Public stable |
session.workflow_markers[*] SessionDetailResponse.workflow_markers | Display-safe workflow behavior markers derived from telemetry metadata. empty when no known workflow marker is detected granularity: element | Local enrichedLive telemetryCalculated by Ottto | array | Public stable |
session.tool_summaries[*].source_path SessionToolSummaryResponse.source_path | Source path attached to each redaction-safe tool summary element. always granularity: element | Live telemetry | enum | Public stable |
session.file_summaries[*].source_path SessionFileSummaryResponse.source_path | Source path attached to each redaction-safe file summary element. always granularity: element | Local enriched | enum | Public stable |
session.conversation_turns[*].source_path SessionConversationTurnSummaryResponse.source_path | Source path attached to each redaction-safe turn summary element. always granularity: element | Live telemetry | enum | Public stable |
session.artifacts SessionDetailResponse.session_artifacts | VCS artifacts (PR / issue / commit) a session produced; opt-in, local-derived. always | Local enrichedCalculated by Ottto | object | Public stable |
session.model_breakdown[*].input_cost_usd SessionModelBreakdownResponse.input_cost_usd | Per-model input-token cost. nullable when dimension pricing is unresolved provenance: dimension_cost_source granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.model_breakdown[*].output_cost_usd SessionModelBreakdownResponse.output_cost_usd | Per-model output-token cost. nullable when dimension pricing is unresolved provenance: dimension_cost_source granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.model_breakdown[*].cache_read_cost_usd SessionModelBreakdownResponse.cache_read_cost_usd | Per-model cache-read token cost. nullable when dimension pricing is unresolved provenance: dimension_cost_source granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.model_breakdown[*].cache_creation_cost_usd SessionModelBreakdownResponse.cache_creation_cost_usd | Per-model cache-creation token cost. nullable when dimension pricing is unresolved provenance: dimension_cost_source granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
session.records[*] SessionRecordsResponse.records | Live telemetry record rows for a session. empty when Live telemetry is disabled or has no records | Live telemetry | array | Public stable |
session.records[*].id TelemetryRecordResponse.id | Database id for a live telemetry record. always | Live telemetry | integer | Public stable |
session.records[*].received_at TelemetryRecordResponse.received_at | Server receive timestamp for a live telemetry record. always | Live telemetry | RFC3339 timestamp | Public stable |
session.records[*].telemetry_type TelemetryRecordResponse.telemetry_type | OpenTelemetry signal type for a live telemetry record. always | Live telemetry | enum | Public stable |
session.records[*].raw_record_material_exposed TelemetryRecordResponse.raw_record_material_exposed | Invariant proving session record rows omit raw resource and payload material. always | Calculated by Ottto | bool | Public stable |
session.records[*].model TelemetryRecordResponse.model | Model identifier attached to a live telemetry record. nullable when the record does not carry model attribution | Live telemetry | string | Public stable |
session.records[*].tokens.input aliases: session.records[*].usage.input_tokens TelemetryRecordResponse.input_tokens | Input tokens attached to a live telemetry record. always | Live telemetry | tokens | Public stable |
session.records[*].tokens.output aliases: session.records[*].usage.output_tokens TelemetryRecordResponse.output_tokens | Output tokens attached to a live telemetry record. always | Live telemetry | tokens | Public stable |
session.records[*].tokens.cache_read aliases: session.records[*].usage.cache_read_tokens TelemetryRecordResponse.cache_read_tokens | Cache-read tokens attached to a live telemetry record. always | Live telemetry | tokens | Public stable |
session.records[*].tokens.cache_creation aliases: session.records[*].usage.cache_creation_tokens TelemetryRecordResponse.cache_creation_tokens | Cache-creation tokens attached to a live telemetry record. always | Live telemetry | tokens | Public stable |
session.records[*].reasoning_effort TelemetryRecordResponse.reasoning_effort | Actual reasoning effort the Codex turn ran at, distinct from the configured default. nullable; Codex turns that emit a per-turn reasoning signal | Live telemetry | enum | Public stable |
session.records[*].duration_ms TelemetryRecordResponse.duration_ms | Wall-clock duration of one model request (a single turn) for agents that report per-turn latency over OTLP — Claude Code and Pi. Session detail averages this across the loaded turns as the 'Response time' stat and surfaces the slowest turn (max) alongside it; time to first token is the responsiveness portion. nullable; agents that emit per-turn latency over OTLP (Claude Code, Pi) | Live telemetry | milliseconds | Public stable |
session.records[*].time_to_first_token_ms TelemetryRecordResponse.time_to_first_token_ms | Latency to the first output token for the Codex turn attached to a live telemetry record. nullable; Codex turns that emit per-turn latency | Live telemetry | milliseconds | Public stable |
session.session_avg_duration_ms SessionDetailResponse.session_avg_duration_ms | Average wall-clock duration of a Codex agentic turn across the session — a rollout `task_complete` task, i.e. model time plus tool execution and idle, so long-running turns can span minutes. The local collector aggregates it per session because Codex never emits per-turn latency over OTLP. Shown in session detail as the 'Turn duration' stat; the average smooths over the longest turn, and time to first token is the model's responsiveness. nullable; Codex sessions with completed turns | Local enriched | milliseconds | Public stable |
session.session_avg_time_to_first_token_ms SessionDetailResponse.session_avg_time_to_first_token_ms | Average latency to the first output token across the session's turns, aggregated by the local collector from the Codex rollout (never emitted over OTLP). nullable; Codex sessions with completed turns | Local enriched | milliseconds | Public stable |
session.session_max_duration_ms SessionDetailResponse.session_max_duration_ms | Duration of the slowest single Codex agentic turn in the session (the max the average smooths over), aggregated by the local collector from the rollout. Surfaced next to the 'Turn duration' average as the tail signal. nullable; Codex sessions with completed turns | Local enriched | milliseconds | Public stable |
session.session_max_time_to_first_token_ms SessionDetailResponse.session_max_time_to_first_token_ms | Slowest time to the first output token across the session's Codex turns, aggregated by the local collector from the rollout (never emitted over OTLP). nullable; Codex sessions with completed turns | Local enriched | milliseconds | Public stable |
cost.period_start CostBreakdownResponse.period_start | Inclusive start date for a cost breakdown window. always | Calculated by Ottto | date | Public stable |
cost.period_end CostBreakdownResponse.period_end | Inclusive end date for a cost breakdown window. always | Calculated by Ottto | date | Public stable |
cost.range_preset CostBreakdownResponse.range_preset | Calendar preset used for a cost breakdown window. nullable for custom or rolling day windows | Calculated by Ottto | enum | Public stable |
cost.bucket_granularity CostBreakdownResponse.bucket_granularity | Bucket granularity used for cost trend arrays. always | Calculated by Ottto | enum | Public stable |
cost.data_basis CostBreakdownResponse.data_basis | Data projection basis used for the cost breakdown. always | Calculated by Ottto | string | Public stable |
cost.date_basis CostBreakdownResponse.date_basis | Session date field used to assign records to the requested cost window. always | Calculated by OtttoCalculated by Ottto | string | Public stable |
cost.cost_basis CostBreakdownResponse.cost_basis | Cost field selected for cost totals and grouped breakdowns. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | string | Public stable |
cost.source_filter_applied CostBreakdownResponse.source_filter_applied | Whether the cost breakdown was filtered to one or more AI app sources. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
cost.machine_filter_applied CostBreakdownResponse.machine_filter_applied | Whether the cost breakdown was filtered to one or more machines. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
cost.source_plan_filter_applied CostBreakdownResponse.source_plan_filter_applied | Whether the cost breakdown was filtered to one or more source-plan profiles. always | Calculated by OtttoSource plan profileCalculated by Ottto | bool | Public stable |
cost.selector_filter_applied CostBreakdownResponse.selector_filter_applied | Whether the cost breakdown was filtered by selector dimension values. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
cost.diagnostics CostBreakdownResponse.diagnostics | Display-safe diagnostics for the requested cost breakdown. always | Calculated by Ottto | object | Public stable |
cost.total_usd aliases: cost.total CostBreakdownResponse.total_cost_usd | Total cost over the requested window. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
cost.kind CostBreakdownResponse.cost_kind | Whether the cost breakdown is actual or estimated. always provenance: cost_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | enum | Public stable |
cost.source_kind CostBreakdownResponse.cost_source_kind | Internal cost provenance value for the breakdown. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | enum | Public stable |
cost.source_label CostBreakdownResponse.cost_source_label | Human-readable cost source label for the breakdown. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | string | Public stable |
cost.projection_status CostBreakdownResponse.cost_projection_status | Pricing projection state for the cost breakdown. always provenance: cost_source_kind granularity: row | Calculated by OtttoUnresolved | enum | Public stable |
cost.is_stale CostBreakdownResponse.is_stale | Whether the cost breakdown was projected from stale pricing data. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
cost.pricing_provenance CostBreakdownResponse.pricing_provenance | Sanitized pricing audit snapshot for the breakdown. nullable when no pricing projection has been built provenance: cost_source_kind granularity: row | Calculated by OtttoCalculated by OtttoUnresolved | object | Public stable |
cost.by_model[*] CostBreakdownResponse.by_model | Cost and usage totals grouped by model. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_model_daily[*] CostBreakdownResponse.by_model_daily | Cost and usage buckets grouped by model and day or hour. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_day[*] CostBreakdownResponse.by_day | Daily cost and usage buckets for the requested window. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_source[*] CostBreakdownResponse.by_source | Cost and usage totals grouped by AI app/source. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_selector[*] CostBreakdownResponse.by_selector | Current, previous, and delta cost totals grouped by selector dimension. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_source_daily[*] CostBreakdownResponse.by_source_daily | Daily cost buckets grouped by AI app/source. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_source_hourly[*] CostBreakdownResponse.by_source_hourly | Hourly cost buckets grouped by AI app/source. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
cost.by_machine[*] CostBreakdownResponse.by_machine | Cost and usage totals grouped by computer. always | Local enrichedSource plan profileCalculated by Ottto | array | Public stable |
cost.by_machine_daily[*] CostBreakdownResponse.by_machine_daily | Daily cost buckets grouped by computer. always | Local enrichedSource plan profileCalculated by Ottto | array | Public stable |
cost.by_machine_hourly[*] CostBreakdownResponse.by_machine_hourly | Hourly cost buckets grouped by computer. always | Local enrichedSource plan profileCalculated by Ottto | array | Public stable |
cost.by_source_plan[*] CostBreakdownResponse.by_source_plan | Cost and usage totals grouped by source-plan profile. always | Source plan profileCalculated by Ottto | array | Public stable |
cost.by_source_plan_daily[*] CostBreakdownResponse.by_source_plan_daily | Daily cost buckets grouped by source-plan profile. always | Source plan profileCalculated by Ottto | array | Public stable |
cost.by_source_plan_hourly[*] CostBreakdownResponse.by_source_plan_hourly | Hourly cost buckets grouped by source-plan profile. always | Source plan profileCalculated by Ottto | array | Public stable |
cost.by_billing_identity[*] CostBreakdownResponse.by_billing_identity | Cost and usage totals grouped by billing identity. always | Source plan profileIntegration connectorCloud billing connectorCalculated by Ottto | array | Public stable |
cost.by_billing_identity_daily[*] CostBreakdownResponse.by_billing_identity_daily | Daily cost buckets grouped by billing identity. always | Source plan profileIntegration connectorCloud billing connectorCalculated by Ottto | array | Public stable |
cost.by_billing_identity_hourly[*] CostBreakdownResponse.by_billing_identity_hourly | Hourly cost buckets grouped by billing identity. always | Source plan profileIntegration connectorCloud billing connectorCalculated by Ottto | array | Public stable |
agent.context.cost.total_usd AgentContextResponse.cost.total_cost_usd | Total cost in the bounded agent context pack for the requested scope. always provenance: AgentContextResponse.cost.provenance.cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
agent.context.cost.total_tokens AgentContextResponse.cost.total_tokens | Total tokens in the bounded agent context pack for the requested scope. always provenance: AgentContextResponse.cost.provenance.usage_origin granularity: row | Local enrichedLocal enrichedLive telemetryCalculated by Ottto | tokens | Public stable |
agent.context.cost.total_requests AgentContextResponse.cost.total_requests | Request count in the bounded agent context pack for the requested scope. always provenance: AgentContextResponse.cost.provenance.usage_origin granularity: row | Local enrichedLocal enrichedLive telemetry | count | Public stable |
agent.context.cost.total_sessions AgentContextResponse.cost.total_sessions | Session count in the bounded agent context pack for the requested scope. always | Calculated by Ottto | count | Public stable |
agent.context.cost.provenance AgentContextResponse.cost.provenance | Cost, freshness, and customer-facing provenance labels for the agent context cost summary. always provenance: AgentContextResponse.cost.provenance.cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by OtttoCalculated by Ottto | object | Public stable |
agent.context.cost.top_models[*] AgentContextResponse.cost.top_models | Top model cost rows included in the bounded agent context pack. always provenance: dimension_cost_source granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
agent.context.cost.by_source[*] AgentContextResponse.cost.by_source | Source cost rows included in the bounded agent context pack. always provenance: dimension_cost_source granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
agent.context.sources[*] AgentContextResponse.sources | Source health rows included in the bounded agent context pack. always | Live telemetryLocal enrichedLocal enrichedCalculated by Ottto | array | Public stable |
agent.context.subscriptions[*] AgentContextResponse.subscriptions | Subscription attribution rows included in the bounded agent context pack. empty when subscription data is unavailable or cannot be safely scoped provenance: AgentContextSubscription.provenance.cost_source_kind granularity: row | Source plan profileLocal enrichedCalculated by OtttoCalculated by Ottto | array | Public stable |
agent.context.subscription_totals AgentContextResponse.subscription_totals | Subscription monthly-vs-PAYG rollup included in the bounded agent context pack. nullable when subscription totals cannot be safely scoped provenance: AgentContextSubscription.provenance.cost_source_kind granularity: row | Source plan profileCalculated by OtttoCalculated by Ottto | object | Public stable |
dashboard.summary.period_start SummaryResponse.period_start | Inclusive start date for a dashboard summary window. always | Calculated by Ottto | date | Public stable |
dashboard.summary.period_end SummaryResponse.period_end | Inclusive end date for a dashboard summary window. always | Calculated by Ottto | date | Public stable |
dashboard.summary.days SummaryResponse.days | Rolling day count used for the dashboard summary window. always | Calculated by Ottto | days | Public stable |
dashboard.summary.account_first_telemetry_at SummaryResponse.account_first_telemetry_at | All-time earliest telemetry received_at for the user. Authoritative anchor for the new-account ramp UI (Day-N pill, pre-tracking spend clip, hour preview, activity backfill). Null when the user has never emitted telemetry. always | Live telemetry | RFC3339 timestamp | Public stable |
dashboard.summary.total_usage SummaryResponse.total_usage | Total token usage over the dashboard summary window. always provenance: usage_origin granularity: row | Local enrichedLocal enrichedLive telemetryCalculated by Ottto | TokenUsage | Public stable |
dashboard.summary.total_cost_usd SummaryResponse.total_cost_usd | Total cost over the dashboard summary window. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | USD | Public stable |
dashboard.summary.cost.kind SummaryResponse.cost_kind | Whether the dashboard summary cost is actual or estimated. always provenance: cost_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | enum | Public stable |
dashboard.summary.cost.source_kind SummaryResponse.cost_source_kind | Internal cost provenance value for the dashboard summary. always provenance: cost_source_kind granularity: row | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | enum | Public stable |
dashboard.summary.cost.source_label SummaryResponse.cost_source_label | Human-readable cost source label for the dashboard summary. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | string | Public stable |
dashboard.summary.cost.projection_status SummaryResponse.cost_projection_status | Pricing projection state for the dashboard summary. always provenance: cost_source_kind granularity: row | Calculated by OtttoUnresolved | enum | Public stable |
dashboard.summary.cost.is_stale SummaryResponse.is_stale | Whether the dashboard summary cost was projected from stale pricing data. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
dashboard.summary.cost.pricing_provenance SummaryResponse.pricing_provenance | Sanitized pricing audit snapshot for the dashboard summary. nullable when no pricing projection has been built provenance: cost_source_kind granularity: row | Calculated by OtttoCalculated by OtttoUnresolved | object | Public stable |
dashboard.summary.total_requests aliases: dashboard.summary.requests SummaryResponse.total_requests | Total request/record count over the dashboard summary window. always provenance: usage_origin granularity: row | Local enrichedLocal enrichedLive telemetry | count | Public stable |
dashboard.summary.total_sessions SummaryResponse.total_sessions | Total session count over the dashboard summary window. always | Calculated by Ottto | count | Public stable |
dashboard.summary.by_model[*] SummaryResponse.by_model | Dashboard summary usage and cost totals grouped by model. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
dashboard.summary.daily[*] SummaryResponse.daily | Dashboard summary daily usage and cost buckets. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
dashboard.summary.by_source[*] SummaryResponse.by_source | Dashboard summary usage and cost totals grouped by source. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
dashboard.summary.by_source_daily[*] SummaryResponse.by_source_daily | Dashboard summary daily cost buckets grouped by source. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
dashboard.summary.by_source_hourly[*] SummaryResponse.by_source_hourly | Dashboard summary hourly cost buckets grouped by source. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | array | Public stable |
dashboard.summary.cost_breakdown SummaryResponse.cost_breakdown | Cost split for the dashboard summary. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolvedCalculated by Ottto | object | Public stable |
dashboard.summary.by_device[*] SummaryResponse.by_device | Dashboard summary local device contribution rows. always | Local enrichedCalculated by Ottto | array | Public stable |
dashboard.summary.session_breakdown[*] SummaryResponse.session_breakdown | Dashboard summary session counts grouped by AI app and computer. always | Local enrichedLive telemetryCalculated by Ottto | array | Public stable |
dashboard.summary.previous_period SummaryResponse.previous_period | Previous equivalent dashboard summary window. nullable unless compare_previous is requested | Calculated by OtttoCalculated by Ottto | object | Public stable |
activity.hourly.period_start HourlyActivityResponse.period_start | Inclusive local calendar start for the hourly activity query. always | Calculated by Ottto | date | Public stable |
activity.hourly.period_end HourlyActivityResponse.period_end | Inclusive local calendar end for the hourly activity query. always | Calculated by Ottto | date | Public stable |
activity.hourly.days HourlyActivityResponse.days | Rolling day count for the hourly activity query. always | Calculated by Ottto | days | Public stable |
activity.hourly.timezone HourlyActivityResponse.timezone | IANA timezone used for local day, hour, and weekday fields. always | Calculated by Ottto | IANA timezone | Public stable |
activity.hourly.dimension HourlyActivityResponse.dimension | Grouping dimension requested for the hourly activity query. always | Calculated by Ottto | enum | Public stable |
activity.hourly.origin HourlyActivityResponse.origin | Activity source path used for this response. always | Local enriched | enum | Public stable |
activity.hourly.coverage_status HourlyActivityResponse.coverage_status | Whether local activity buckets fully cover the requested period. complete only when every eligible latest local snapshot has matching bucket totals; partial, unsupported, or empty responses must not be rendered as heatmaps | Local enrichedCalculated by Ottto | enum | Public stable |
activity.hourly.eligible_session_count HourlyActivityResponse.eligible_session_count | Latest local snapshots considered for hourly activity coverage. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.covered_session_count HourlyActivityResponse.covered_session_count | Eligible latest local snapshots with complete activity bucket coverage. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.missing_session_count HourlyActivityResponse.missing_session_count | Eligible latest local snapshots missing complete activity bucket coverage. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.last_bucket_at HourlyActivityResponse.last_bucket_at | Newest covered UTC activity bucket in the response window. nullable when no complete bucket rows exist | Local enrichedCalculated by Ottto | RFC3339 timestamp | Public stable |
activity.hourly.rows[*] HourlyActivityResponse.rows | Hourly local activity buckets safe to render when coverage is complete. empty unless coverage_status is complete | Local enrichedCalculated by Ottto | array | Public stable |
activity.hourly.rows[*].bucket_start HourlyActivityRowResponse.bucket_start | UTC hour boundary for an activity bucket. always | Local enriched | RFC3339 timestamp | Public stable |
activity.hourly.rows[*].local_date HourlyActivityRowResponse.local_date | Calendar date for this bucket in the requested timezone. always | Calculated by OtttoCalculated by Ottto | date | Public stable |
activity.hourly.rows[*].local_hour HourlyActivityRowResponse.local_hour | Hour of day for this bucket in the requested timezone. always | Calculated by OtttoCalculated by Ottto | hour | Public stable |
activity.hourly.rows[*].local_weekday HourlyActivityRowResponse.local_weekday | Weekday for this bucket in the requested timezone, with Monday as 0. always | Calculated by OtttoCalculated by Ottto | weekday | Public stable |
activity.hourly.rows[*].dimension HourlyActivityRowResponse.dimension | Grouping dimension represented by this row. always | Calculated by Ottto | enum | Public stable |
activity.hourly.rows[*].dimension_key HourlyActivityRowResponse.dimension_key | Stable grouping key for this activity bucket. always | Source plan profileLocal enrichedCalculated by Ottto | string | Public stable |
activity.hourly.rows[*].label HourlyActivityRowResponse.label | Display label for the row's grouping key. always | Source plan profileLocal enrichedCalculated by Ottto | string | Public stable |
activity.hourly.rows[*].source HourlyActivityRowResponse.source | AI app source for source-grouped activity rows. nullable for non-source dimensions | Local enriched | enum | Public stable |
activity.hourly.rows[*].source_plan_profile_id HourlyActivityRowResponse.source_plan_profile_id | Source-plan profile id for source-plan grouped activity rows. nullable when the selected dimension is not source_plan | Source plan profileLocal enriched | UUID | Public stable |
activity.hourly.rows[*].billing_identity_id HourlyActivityRowResponse.billing_identity_id | Shared billing identity id for billing-identity grouped activity rows. nullable when the selected dimension is not billing_identity | Source plan profileLocal enriched | UUID | Public stable |
activity.hourly.rows[*].active_session_count HourlyActivityRowResponse.active_session_count | Distinct local sessions active in the hour; each session counts at most once. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.rows[*].request_count HourlyActivityRowResponse.request_count | Sum of locally observed request or turn counts inside this activity bucket. always | Local enriched | count | Public stable |
activity.events[*] LiveTelemetryProvider.events | In-memory live telemetry events emitted to the browser. empty when Live telemetry is disabled or disconnected | Live telemetryLive telemetry | array | Public stable |
activity.is_connected LiveTelemetryProvider.isConnected | Browser-visible live telemetry stream connection state. always | Live telemetryLive telemetry | bool | Public stable |
source_status.name SourceStatusResponse.name | Canonical source identifier for one source-status row. always | Calculated by Ottto | enum | Public stable |
source_status.descriptor SourceStatusResponse.descriptor | Static source capability and ownership descriptor. always | Calculated by Ottto | object | Public stable |
source_status.connected SourceStatusResponse.connected | Whether the source has recent observed data. always | Live telemetryIntegration connectorCalculated by Ottto | bool | Public stable |
source_status.first_data_at SourceStatusResponse.first_data_at | Earliest observed source data timestamp. nullable until source data exists | Live telemetryIntegration connector | RFC3339 timestamp | Public stable |
source_status.last_data_at SourceStatusResponse.last_data_at | Most recent observed source data timestamp. nullable until source data exists | Live telemetryIntegration connector | RFC3339 timestamp | Public stable |
source_status.record_count_1h SourceStatusResponse.record_count_1h | Observed source session requests from sessions active in the last hour. always provenance: volume_count_kind granularity: row | Local enrichedLocal enrichedLive telemetryIntegration connector | count | Public stable |
source_status.record_count_24h SourceStatusResponse.record_count_24h | Observed source session requests from sessions active in the last 24 hours. always provenance: volume_count_kind granularity: row | Local enrichedLocal enrichedLive telemetryIntegration connector | count | Public stable |
source_status.volume_count_kind SourceStatusResponse.volume_count_kind | Semantic grain for source-status volume counters. always | Calculated by Ottto | enum | Public stable |
source_status.selector_diagnostics SourceStatusResponse.selector_diagnostics | Selector completeness diagnostics for one source-status row. always | Live telemetryLocal enrichedCalculated by Ottto | object | Public stable |
source_status.selector.status SourceSelectorDiagnosticsResponse.status | Selector coverage state for one telemetry source. always | Live telemetryLocal enrichedCalculated by Ottto | enum | Public stable |
source_status.selector.summary_label SourceSelectorDiagnosticsResponse.summary_label | Display label summarizing selector evidence for one telemetry source. always | Live telemetryLocal enrichedCalculated by Ottto | string | Public stable |
source_status.selector.provider_code SourceSelectorDiagnosticsResponse.provider_code | Pricing provider bucket used for selector-health rollout checks. always | Calculated by Ottto | enum | Public stable |
source_status.selector.pricing_enabled SourceSelectorDiagnosticsResponse.selector_pricing_enabled | Whether organization settings allow selector context to affect cost projection. always | Organization settings | bool | Public stable |
source_status.selector.live_complete SourceSelectorDiagnosticsResponse.live_selector_complete | Whether live telemetry has reported selector evidence in the last 24 hours. always | Live telemetryCalculated by Ottto | bool | Public stable |
source_status.selector.local_complete SourceSelectorDiagnosticsResponse.local_selector_complete | Whether local enriched collection is synced for this source. always | Local enrichedCalculated by Ottto | bool | Public stable |
source_status.selector.sessions_24h SourceSelectorDiagnosticsResponse.selector_session_count_24h | Model/selector rows considered by the 24-hour selector-health denominator. always | Live telemetryLocal enrichedCalculated by Ottto | count | Public stable |
source_status.selector.observed_24h SourceSelectorDiagnosticsResponse.selector_observation_count_24h | Model/selector rows with selector context observed in the last 24 hours. always | Live telemetryLocal enrichedCalculated by Ottto | count | Public stable |
source_status.selector.speed_observed_24h SourceSelectorDiagnosticsResponse.speed_observation_count_24h | Model/selector rows with speed-mode selector context observed in the last 24 hours. always | Live telemetryLocal enrichedCalculated by Ottto | count | Public stable |
source_status.selector.fast_observed_24h SourceSelectorDiagnosticsResponse.fast_observation_count_24h | Model/selector rows with fast or priority selector context observed in the last 24 hours. always | Live telemetryLocal enrichedCalculated by Ottto | count | Public stable |
source_status.selector.missing_24h SourceSelectorDiagnosticsResponse.missing_selector_count_24h | Model/selector rows blocked by missing selector context in the last 24 hours. always | Calculated by OtttoUnresolvedCalculated by Ottto | count | Public stable |
source_status.selector.completeness_ratio_24h SourceSelectorDiagnosticsResponse.selector_completeness_ratio_24h | Share of recent model/selector rows with selector context. nullable until the source has recent selector rows | Live telemetryLocal enrichedCalculated by Ottto | ratio | Public stable |
source_status.selector.missing_ratio_24h SourceSelectorDiagnosticsResponse.missing_selector_ratio_24h | Share of recent model/selector rows blocked by missing selector context. nullable until the source has recent selector rows | Calculated by OtttoUnresolvedCalculated by Ottto | ratio | Public stable |
source_status.selector.rollout_guardrail_status SourceSelectorDiagnosticsResponse.rollout_guardrail_status | Rollout guardrail status derived from selector completeness and mismatch ratios. always | Live telemetryLocal enrichedCalculated by OtttoCalculated by Ottto | enum | Public stable |
source_status.selector.rollout_guardrail_label SourceSelectorDiagnosticsResponse.rollout_guardrail_label | Display label explaining the selector rollout guardrail status. always | Live telemetryLocal enrichedCalculated by OtttoCalculated by Ottto | string | Public stable |
source_status.local_snapshot_health SourceStatusResponse.local_snapshot_health | Latest local snapshot collector health for a source. nullable for sources without a local collector | Local enrichedLocal enriched | object | Public stable |
source_status.agent_status SourceStatusResponse.agent_status | Display-safe agent status snapshot for a source. nullable until the local collector reports status | Local enriched | object | Public stable |
source_status.agent_status_sync_diagnostic SourceStatusResponse.agent_status_sync_diagnostic | Warning when local collector freshness and backend-visible agent status diverge. nullable unless Codex or Claude Code status sync is delayed | Local enrichedLocal enrichedCalculated by Ottto | object | Public stable |
source_status.current_runtime_defaults SourceStatusResponse.current_runtime_defaults | Current display-safe runtime defaults reported by the local collector for a source. nullable until the local collector reports runtime defaults | Local enriched | object | Public stable |
source_status.runtime_default_history SourceStatusResponse.runtime_default_history | Collapsed runtime-default change intervals for a source. empty unless callers opt into bounded default history | Local enrichedCalculated by Ottto | array | Public stable |
source_status.plan_profiles SourceStatusResponse.plan_profiles | Configured source-plan profiles for a source. always | Source plan profile | array | Public stable |
source_status.plan_observations SourceStatusResponse.plan_observations | Recent source-plan observations for a source. always | Source plan profileLocal enriched | array | Public stable |
settings.telemetry_enabled OrganizationTelemetrySettingsResponse.telemetry_enabled | Organization master switch for Live telemetry ingest. always | Organization settings | bool | Public stable |
settings.local_usage_reconciliation_enabled OrganizationTelemetrySettingsResponse.local_usage_reconciliation_enabled | Organization switch for local snapshot upload and reconciliation. always | Organization settings | bool | Public stable |
settings.local_usage_backfill_window_days OrganizationTelemetrySettingsResponse.local_usage_backfill_window_days | Organization maximum local snapshot backfill window. always | Organization settings | days | Public stable |
settings.local_usage_session_titles_enabled OrganizationTelemetrySettingsResponse.local_usage_session_titles_enabled | Organization switch for filtered local session title upload. always | Organization settings | bool | Public stable |
settings.local_usage_workspace_labels_enabled OrganizationTelemetrySettingsResponse.local_usage_workspace_labels_enabled | Organization switch for path-free local workspace label upload. always | Organization settings | bool | Public stable |
settings.local_usage_session_artifacts_enabled OrganizationTelemetrySettingsResponse.local_usage_session_artifacts_enabled | Organization opt-in (default off) for session VCS artifact linkage (PR/issue/commit). always | Organization settings | bool | Public stable |
settings.selector_pricing_enabled OrganizationTelemetrySettingsResponse.selector_pricing_enabled | Organization rollout switch for selector-aware pricing cost projection. always | Organization settings | bool | Public stable |
settings.source_overrides[*] aliases: settings.source_telemetry_overrides OrganizationTelemetrySettingsResponse.source_telemetry_overrides | Per-source Live telemetry override map. always | Organization settings | object | Public stable |