Metrics catalog version 2026-07-21.cloud-sessions-observability. Public fields use Local enriched, Live telemetry, Integration connectors, Cloud billing connectors, and Calculated by Ottto labels.
306 metrics
306 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.cache.health SessionDetailResponse.cache_health | Prompt-cache explanation for the session: hit rate, reuse ratio, and the token-weighted hit/miss split, derived from the canonical cache-metrics helper over the session's normalised token totals. inner ratios are null when the session has no prompt or cache activity | Calculated by Ottto | object | Public stable |
session.cache.health.hit_rate SessionCacheHealthResponse.cache_hit_rate | Share of all prompt-side tokens served from cache: cache_read / (input + cache_read + cache_creation). null when the session has no prompt tokens | Calculated by Ottto | ratio | Public stable |
session.cache.health.reuse_ratio SessionCacheHealthResponse.cache_reuse_ratio | How well the cache you paid to write is reused: cache_read / (cache_read + cache_creation). null when the session has no cache activity at all | Calculated by Ottto | ratio | Public stable |
session.cache.health.hit_token_count SessionCacheHealthResponse.cache_hit_token_count | Token-weighted cache hits for the session (cache_read tokens). 0 when no cache reads occurred | Calculated by Ottto | tokens | Public stable |
session.cache.health.miss_token_count SessionCacheHealthResponse.cache_miss_token_count | Token-weighted cache misses for the session: fresh input plus cache writes (prompt-side tokens not served from cache). 0 when there is no prompt-side activity | Calculated by Ottto | tokens | Public stable |
session.context.fill SessionDetailResponse.context_fill | Reconstructed per-session "% of context window used" (CC-insights A-probe): the most recent prompt-bearing turn's prompt-side tokens (input + cache_read + cache_creation) divided by the model's working context window. The window is family-accurate so the figure is correct cross-agent: 200K Claude-class, 272K GPT-5/Codex, 128K GPT-4-class, 1M Gemini, 300K Amazon Nova Pro/Lite (128K Micro). A Claude turn whose prompt is far past 200K (>300K) is scored against the 1M-context beta window (it can only be the beta) rather than clamped to a false 100%; a 200K-300K overflow keeps its CRITICAL band. Reproduces Claude Code's context-fill indicator from the local JSONL/snapshot path; the figure is flagged as a reconstruction, not Claude Code's own get_context_usage measurement. null when the session has no prompt-bearing turn or the model's working window cannot be resolved | Calculated by Ottto | object | Public stable |
session.context.fill.reconciliation SessionDetailResponse.context_fill_reconciliation | Reconciliation of the A-probe reconstruction (session.context.fill) against Claude Code's OWN captured /context measurement for this session's machine (CC-insights A-live): CC's authoritative working window + percentage, a window-agreement flag (whether the A-probe used CC's real window), a window-corrected probe percentage, and the residual delta. Sourced from the latest context_live_snapshots capture for the machine; only Claude-class sessions are eligible. null for non-Claude sessions or when no Claude Code /context capture exists for the session's machine | Local enrichedCalculated by Ottto | object | Public stable |
session.context.footprint SessionDetailResponse.context_footprint | Session-scoped Claude Code static context footprint from the GOLD context-footprint read model, enriched with scoped usage evidence when attribution facts exist. null when the session lacks machine/workspace evidence or no matching context-footprint snapshot exists | Local enrichedLive telemetryCalculated by Ottto | object | Public stable |
session.context.posture SessionDetailResponse.context_posture | Content-free local context high-water evidence: first and peak prompt tokens, resolved window and peak percentage, compaction event count, and source activity/collection timestamps. Current prompt tokens stay null until the collector captures a true current watermark. null when the session has no keyed local context-posture GOLD evidence | Local enrichedCalculated by Ottto | object | Public stable |
session.long_running SessionDetailResponse.long_running | Long-running-session advisory (CC-insights P3 contributing factor): set when the session has WORKED for 8h+ (active_seconds, the decoded Claude Code long-session threshold; wall-clock elapsed span is the fallback for historical sessions with no active signal). A session this long carries its whole history forward, inflating per-turn context and cost. Advisory only — it never changes a token or dollar figure. null unless the session crossed the 8h-active threshold | Calculated by Ottto | object | 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 | Model turns: model interactions recorded from the agent's local transcripts. Sessions tracked only through live telemetry count telemetry records instead; count_basis names the unit. always provenance: count_basis granularity: row | Local enrichedLocal enrichedLive telemetry | count | Public stable |
session.count_basis SessionSummaryResponse.count_basis | Which unit the session's activity count uses: local_model_turn (model interactions recorded from local transcripts), telemetry_usage_record (live telemetry usage records), or provider_request (provider-reported requests). always | Calculated by Ottto | string | 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.execution_location SessionSummaryResponse.execution_location | Where the observed work executed: locally, in a provider cloud, by remote control, or unknown. always | Local enrichedLocal enrichedLive telemetryProvider cloud metadataCalculated by Ottto | enum | Public experimental |
session.cloud.entity_kind SessionSummaryResponse.cloud_entity_kind | Content-free provider cloud entity classification. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadata | enum | Public experimental |
session.cloud.measurement_basis SessionSummaryResponse.cloud_measurement_basis | Explicit statement that provider cloud work is observed as metadata, not itemized usage. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadata | enum | Public experimental |
session.cloud.coverage_mask SessionSummaryResponse.cloud_coverage_mask | Compact bit mask recording which supported provider-cloud metadata dimensions were observed. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadata | bit mask | Public experimental |
session.cloud.semantic_updated_at SessionSummaryResponse.cloud_semantic_updated_at | Provider-reported time when the cloud entity last changed semantically. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadata | RFC3339 timestamp | Public experimental |
session.cloud.lifecycle_status SessionSummaryResponse.cloud_lifecycle_status | Normalized lifecycle state for an observed provider-cloud task or session. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadata | enum | Public experimental |
session.cloud.attempt_count SessionSummaryResponse.cloud_attempt_count | Observed provider-cloud attempt count when that provider exposes it. provider-cloud sessions with attempt coverage only | Provider cloud metadata | count | Public experimental |
session.cloud.environment_kind SessionSummaryResponse.cloud_environment_kind | Normalized execution-environment class for provider-cloud work. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadata | enum | Public experimental |
session.cloud.metric_availability SessionSummaryResponse.cloud_metric_availability | Per-dimension explanation of unavailable or intentionally non-itemized cloud metrics. provider-cloud sessions only; nullable for local and legacy rows | Provider cloud metadataCalculated by Ottto | object | Public experimental |
session.machine_applicable SessionSummaryResponse.machine_applicable | Whether machine attribution is meaningful for this session's execution location. always | Local enrichedLocal enrichedLive telemetryProvider cloud metadataCalculated by Ottto | bool | Public experimental |
session.originator SessionSummaryResponse.originator | Raw session-surface label from the source session_meta (Codex originator), e.g. codex_work_desktop for the unified ChatGPT desktop app's local Work sessions or codex_cli_rs for the CLI. Persisted raw; the source stays codex. nullable; only present when the collector forwarded a session originator | Local enriched | string | Public stable |
session.sub_surface SessionSummaryResponse.sub_surface | Derived display sub-surface refining session.source: chatgpt_work for the unified ChatGPT desktop app's local Work sessions (originator codex_work_desktop), else null. Deliberately conservative; the source stays codex. nullable; only chatgpt_work is derived today | Local enrichedCalculated by Ottto | 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.automation_attribution SessionSummaryResponse.session_attribution | Positive-only automation origin and neutral workflow facts, each with field-level evidence. always; empty when no attribution evidence is known granularity: element | Local enrichedLive telemetryCalculated by Ottto | object | Public stable |
session.used_workflow_orchestration SessionSummaryResponse.used_workflow_orchestration | Whether the session ran dynamic workflow orchestration (the Workflow tool, e.g. ultracode); detected from the local wf_*.json footprint and/or a tool_name == Workflow turn. Invisible in token usage (ultracode collapses to xhigh effort). always; defaults to false when no orchestration evidence exists | Local enrichedLive telemetry | bool | Public stable |
session.agent_identity SessionSummaryResponse.agent_identity | Where this session sits in a spawned-agent family: its direct parent, its root (the top-level human session), the Claude Code agent type/id, its nesting depth, and the owning Workflow run. Present only for sessions the collector re-keyed off their own subagent transcript. null unless the session is itself a spawned subagent | Local enrichedCalculated by Ottto | object | Public stable |
session.family_status SessionSummaryResponse.family_status | Whether the spawned-agent family numbers on this response can be trusted: available (exact), partial (the family exceeded the per-request member cap), or unavailable (the family read failed, so the family fields are null rather than zero - 'spawned nothing' and 'could not find out' are different answers). always | Calculated by Ottto | string | Public stable |
session.subagent_count SessionSummaryResponse.subagent_count | Number of spawned-agent descendants of this session, at every nesting depth. 0 when the session spawned nothing. null when family_status is unavailable | Calculated by Ottto | count | Public stable |
session.family.tokens SessionSummaryResponse.family_total_tokens | Total tokens for this session AND all of its spawned-agent descendants. The session's own total_tokens NEVER includes descendants, so family = own + children, counted exactly once at any depth. Equals the session's own total when it spawned nothing. null when family_status is unavailable | Calculated by Ottto | tokens | Public stable |
session.family.requests SessionSummaryResponse.family_request_count | Model turns for this session and all of its spawned agents, under the same no-double-counting rule as session.family.tokens. null when family_status is unavailable | Calculated by Ottto | count | Public stable |
session.family.cost_usd SessionSummaryResponse.family_cost_usd | Selected cost for this session and all of its spawned-agent descendants, under the same no-double-counting rule as session.family.tokens. null when family_status is unavailable | Calculated by Ottto | usd | Public stable |
session.subagents SessionDetailResponse.subagents | The spawned-agent family hanging off this session: descendant-only totals, the family rollup (own + descendants), and the child list with enough per agent to render a row and deep-link to it. null when the session spawned no agents granularity: element | Calculated by Ottto | object | Public stable |
session.parent SessionDetailResponse.parent | Backlink from a subagent session to the session that spawned it, plus the root of the whole family. null unless the session is itself a spawned subagent | Local enrichedCalculated by Ottto | object | 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.repository_hash SessionSummaryResponse.repository_hash | Organization-scoped opaque repository identity for grouping sessions. nullable when no repository can be resolved locally | Local enriched | opaque identifier | Public stable |
session.repository_label SessionSummaryResponse.repository_label | Display-safe repository name derived locally without a path or remote URL. nullable when no safe repository label can be resolved provenance: repository_label_source granularity: row | Local enriched | string | Public stable |
session.repository_label_source SessionSummaryResponse.repository_label_source | Local derivation source for the display-safe repository label. nullable when repository_label is absent | Local enriched | enum | Public stable |
session.repository_identity_source SessionSummaryResponse.repository_identity_source | Local derivation source for the opaque repository identity. nullable when repository_hash is absent | Local enriched | enum | Public stable |
session.workspace_kind SessionSummaryResponse.workspace_kind | Local workspace relationship to the repository, such as root or worktree. nullable when no repository workspace can be resolved | Local enriched | 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.cost_facts_truncated SessionDetailResponse.cost_facts_truncated | Whether this session's usage_cost_facts rows were truncated at the per-session fact cap (25,000 OTLP turns). True means the FACT-BACKED numbers (cost breakdown, cost rollups, fact-derived model rollups) cover only the session's first N turns; the session's own totals come from the uncapped session projection and stay complete, so the two disagree by design. always; defaults to false and is true only past the fact cap | Calculated by Ottto | bool | 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.mcp_server_summaries[*] SessionDetailResponse.mcp_server_summaries | Redaction-safe per-MCP-server call rollup (tool calls grouped by server). empty when the session invoked no MCP tools granularity: element | Live telemetry | array | Public stable |
session.capability_summaries[*] SessionDetailResponse.capability_summaries | Privacy-safe positive Chrome, browser, and Computer Use calls classified locally from the session record. empty until a compatible collector positively observes a supported capability granularity: element | Local enriched | array | Public stable |
session.activity.summary SessionDetailResponse.activity_summary | Content-free local activity evidence for tool, shell, patch, file, line-change, web, MCP, and subagent-spawn counts, with bounded tool, MCP-tool, and consent-gated skill labels. null until a compatible collector uploads a keyed activity summary | Local enriched | object | 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.model_breakdown[*].cache_efficiency_ratio SessionModelBreakdownResponse.cache_efficiency_ratio | Per-model cache reuse ratio: cache_read / (cache_read + cache_creation) over this model's normalised counts, from the canonical cache-metrics helper. 1.0 for read-only (cache_creation == 0) rows. null when the model row has no cache activity at all granularity: element | Calculated by Ottto | ratio | 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.model_filter_applied CostBreakdownResponse.model_filter_applied | Whether the cost breakdown was filtered to one or more models. always | Calculated by OtttoCalculated by Ottto | bool | Public stable |
cost.cloud CostBreakdownResponse.cloud | Organization-scope cloud provider billing composed into this window. Present only with include_cloud=true and the integrations.org_scope.read permission; absent from the payload otherwise, so an un-opted-in response is unchanged. Its own gross/credits/net, per-day and per-model rows, tokens, precedence overlap and freshness live inside the block; combined local+cloud figures appear ONLY under cloud.composed and never mutate a session-grain total on this response. always | Integration connectorCalculated by Ottto | object | 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.total_session_count CostBreakdownResponse.total_session_count | Exact distinct session count for the complete response window; clients must not sum by_source[*].session_count. always | Agent-reported actualCalculated by OtttoIntegration connectorUnresolved | count | 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.stale_reason CostBreakdownResponse.stale_reason | Why the cost totals carry a freshness qualifier: an in-flight local-data reconciliation, ordinary gold-rollup lag, or fresh. always | Local enrichedCalculated by Ottto | enum | Public stable |
cost.reconciliation_active CostBreakdownResponse.reconciliation_active | Whether a totals-pausing local-data reconciliation (account/machine backfill) is in flight for the cost breakdown. always | Local enrichedCalculated 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_reasoning_effort[*] CostBreakdownResponse.by_reasoning_effort | Cost and usage totals grouped by per-turn reasoning-effort tier, per source. 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 | Model turns 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.cloud_work SummaryResponse.cloud_work | Opt-in provider-cloud work counts, lifecycle mix, coverage, and collector freshness for a supported window. nullable unless explicitly requested; unavailable when rollout policy, consent, or collector health does not authorize a current view | Provider cloud metadataCalculated by Ottto | object | Public experimental |
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.stale_reason SummaryResponse.stale_reason | Why the dashboard summary totals carry a freshness qualifier: an in-flight local-data reconciliation, ordinary gold-rollup lag, or fresh. always | Local enrichedCalculated by Ottto | enum | Public stable |
dashboard.summary.cost.reconciliation_active SummaryResponse.reconciliation_active | Whether a totals-pausing local-data reconciliation (account/machine backfill) is in flight for the dashboard summary totals. always | Local enrichedCalculated 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 | Model turns over the dashboard summary window. Sessions tracked only through live telemetry count telemetry records instead. 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.session_model_breakdown[*] SummaryResponse.session_model_breakdown | Dashboard summary distinct-session counts per model; multi-model sessions count once per model they touched. 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.complete_before HourlyActivityResponse.complete_before | Exclusive UTC boundary before which hourly buckets are complete enough for recurring-period denominators. always | Calculated by OtttoCalculated by Ottto | RFC3339 timestamp | 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; total deduplicates sessions across sources within each hour. 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 | Available exact hourly local activity buckets for complete or partial coverage. available for complete or partial coverage; empty for empty or unsupported coverage | 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 with observed activity in the real clock hour; each session counts at most once within the selected dimension bucket. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.rows[*].request_count HourlyActivityRowResponse.request_count | Model turns recorded in this activity bucket. always | Local enriched | count | Public stable |
activity.hourly.detail.period_start HourlyActivityDetailResponse.period_start | Inclusive local calendar start behind one recurring activity cell. always | Calculated by Ottto | date | Public stable |
activity.hourly.detail.period_end HourlyActivityDetailResponse.period_end | Inclusive local calendar end behind one recurring activity cell. always | Calculated by Ottto | date | Public stable |
activity.hourly.detail.complete_before HourlyActivityDetailResponse.complete_before | Exclusive UTC boundary used to exclude incomplete activity hours. always | Calculated by OtttoCalculated by Ottto | RFC3339 timestamp | Public stable |
activity.hourly.detail.days HourlyActivityDetailResponse.days | Resolved calendar-day count for the selected detail window. always | Calculated by Ottto | days | Public stable |
activity.hourly.detail.timezone HourlyActivityDetailResponse.timezone | Persisted organization IANA timezone used by this detail. always | Organization settings | IANA timezone | Public stable |
activity.hourly.detail.local_weekday HourlyActivityDetailResponse.local_weekday | Selected local weekday, Monday zero through Sunday six. always | Calculated by Ottto | weekday | Public stable |
activity.hourly.detail.local_hour HourlyActivityDetailResponse.local_hour | Selected local wall-clock hour. always | Calculated by Ottto | hour | Public stable |
activity.hourly.detail.occurrence_count HourlyActivityDetailResponse.occurrence_count | Number of completed real clock-hour occurrences in the denominator. always | Calculated by OtttoCalculated by Ottto | count | Public stable |
activity.hourly.detail.session_occurrence_count HourlyActivityDetailResponse.session_occurrence_count | Sum of distinct session appearances across completed occurrences. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.detail.average_session_count HourlyActivityDetailResponse.average_session_count | Session appearances divided by completed real clock-hour occurrences. always | Local enrichedCalculated by Ottto | count per occurrence | Public stable |
activity.hourly.detail.unique_session_count HourlyActivityDetailResponse.unique_session_count | Canonical sessions appearing in any selected occurrence, deduplicated across dates. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.detail.occurrences[*] HourlyActivityDetailResponse.occurrences | Completed local date/hour occurrences behind the selected cell. always | Local enrichedCalculated by Ottto | array | Public stable |
activity.hourly.detail.occurrences[*].local_date HourlyActivityDetailOccurrenceResponse.local_date | Organization-local calendar date for one occurrence. always | Calculated by OtttoCalculated by Ottto | date | Public stable |
activity.hourly.detail.occurrences[*].bucket_start HourlyActivityDetailOccurrenceResponse.bucket_start | Exact UTC gold activity bucket represented by one occurrence. always | Local enriched | RFC3339 timestamp | Public stable |
activity.hourly.detail.occurrences[*].active_session_count HourlyActivityDetailOccurrenceResponse.active_session_count | Canonical distinct sessions active in this exact hour. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.detail.occurrences[*].request_count HourlyActivityDetailOccurrenceResponse.request_count | Model turns recorded in this exact hour. always | Local enriched | count | Public stable |
activity.hourly.detail.sources[*] HourlyActivityDetailResponse.sources | Session appearances grouped by agent source. always | Local enrichedCalculated by Ottto | array | Public stable |
activity.hourly.detail.sources[*].source HourlyActivityDetailSourceResponse.source | Canonical agent source for a detail breakdown row. always | Local enriched | enum | Public stable |
activity.hourly.detail.sources[*].label HourlyActivityDetailSourceResponse.label | Customer-facing agent source label. always | Local enrichedCalculated by Ottto | string | Public stable |
activity.hourly.detail.sources[*].session_count HourlyActivityDetailSourceResponse.session_count | Session appearances attributed to this agent source. always | Local enrichedCalculated by Ottto | count | Public stable |
activity.hourly.detail.machines[*] HourlyActivityDetailResponse.machines | Session appearances grouped by content-free machine identity. always | Local enrichedSource plan profileCalculated by Ottto | array | Public stable |
activity.hourly.detail.machines[*].machine_id HourlyActivityDetailMachineResponse.machine_id | Opaque machine identity for a detail breakdown row. always | Local enriched | string | Public stable |
activity.hourly.detail.machines[*].machine_name HourlyActivityDetailMachineResponse.machine_name | Customer-facing machine label resolved from registered device or source-plan identity. falls back to the opaque machine id when no display name exists | Source plan profileLocal enrichedCalculated by Ottto | string | Public stable |
activity.hourly.detail.machines[*].machine_icon_url HourlyActivityDetailMachineResponse.machine_icon_url | Ready customer-facing machine icon URL. nullable when no generated machine icon is ready | Source plan profileCalculated by Ottto | URL | Public stable |
activity.hourly.detail.machines[*].machine_icon_version HourlyActivityDetailMachineResponse.machine_icon_version | Version of the ready customer-facing machine icon. always | Source plan profileCalculated by Ottto | count | Public stable |
activity.hourly.detail.machines[*].session_count HourlyActivityDetailMachineResponse.session_count | Session appearances attributed to this machine. always | Local enrichedCalculated by Ottto | 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 | Model turns from this source's 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 | Model turns from this source's 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_statuses SourceStatusResponse.agent_statuses | Per-account current agent statuses for a source, one entry per identity. empty until the local collector reports status | Local enriched | array | 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.local_reconciliation SourceStatusResponse.local_reconciliation | Compatibility local reconciliation/readiness state for the latest source machine. nullable for sources without a local collector | Local enrichedLocal enrichedCalculated by Ottto | object | Public stable |
source_status.local_reconciliations SourceStatusResponse.local_reconciliations | Machine-scoped local reconciliation/readiness states for a source. empty for sources without local collector status | Local enrichedLocal enrichedCalculated by Ottto | array | 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.mcp_inventory_harvest_enabled OrganizationTelemetrySettingsResponse.mcp_inventory_harvest_enabled | Organization opt-out (default on) for the local platform's configured-MCP inventory harvest (tools/list only, never executes a tool). 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 |