> ## Documentation Index
> Fetch the complete documentation index at: https://koreai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics explorer

The **Analytics Explorer** page, titled **Analytics** in the product, monitors event volume, LLM performance, token consumption, and cost in near real time. Use it to investigate production incidents, track the impact of model changes, or audit LLM spend during peak traffic.

**Navigation**: **Project** -> **Insights** -> **Analytics Explorer**

**Date range**: Set at the upper-right area of the page, for example **Last 7 days**. Quick ranges are 30 minutes, 1 hour, 24 hours, 7 days, and 30 days. A custom range can include the time of day and cover up to 90 days. Every tab follows this range.

**Filters**: Select **All environments** and **All channels** at the top of the page to narrow the data by deployment environment and channel. Filter selections are reflected in the page URL, so you can bookmark a filtered view or share it with a colleague.

![Analytics Explorer](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-overview.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=cfccf3803cae9b505ee57e9bb5f43292)

The page organizes its detail into six tabs.

| Tab | What it shows |
| - | - |
| **Overview** | Headline volume, error, token, and cost metrics for the selected period. |
| **LLM Performance** | Call volume, latency, token, and cost metrics, broken down by model. |
| **Sessions Explorer** | Session-level records with filters, columns, and export. |
| **Traces Explorer** | Individual trace events, with timeline and waterfall views. |
| **Generations** | Every recorded model call, with latency, token, cost, and credential detail. |
| **Query** | Ad-hoc SQL queries on project event data. |

## Overview

Six metric cards summarize the selected period at a glance. The cards have no status colours and no comparison with the previous period.

| Metric | Description |
| - | - |
| **Sessions** | Total sessions in the selected period, production only by default. A session is a single end-to-end interaction between a user and the agent system. It matches the **Conversations** card on At a Glance when the date ranges match. |
| **Messages** | Total messages across all sessions, including both user messages and agent responses. |
| **LLM Calls** | Total successful LLM API calls during the period, excluding per-turn rollups. Includes calls to all configured models, for example routing, generation, and evaluation. |
| **Errors** | Total errors during agent execution, including LLM failures, timeout errors, and tool invocation errors. The card adds up error counts across every event category, so it's bigger than the **Error** slice in **Events by Category**, which counts one category. |
| **Tokens** | Total LLM tokens, both input and output, across all calls. This card includes failed calls. **LLM Performance** counts successful calls only, so the two can differ slightly. |
| **Cost** | Estimated cost based on token usage and per-model price tables, for calls with a known model. It's an estimate, not an invoice. Use it to track spend relative to budgets or compare cost-efficiency across model configurations. |

Below the cards, three panels show where activity and errors come from.

| Panel | Description |
| - | - |
| **Event Volume Over Time** | All platform events per day. Spikes usually mean bursts of traffic or test runs. |
| **Events by Category** | Events split by type, such as system, message, LLM, agent, session, tool, and voice, with counts and shares. |
| **Recent Errors** | The latest errors, with the event type that reported each one (for example, `error.raised`), the agent, and the error text. Voice session events that aren't tied to an agent show an unknown agent. |

![Recent Errors](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-recent-errors.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=1c971242a534d61f5058f9cc4252840f)

## LLM performance

**LLM Performance** reports call volume, latency, tokens, and cost for the model calls in the selected period, broken down by model. Use it to benchmark models and to find the ones that drive latency or spend.

Five metric cards summarize the period.

| Metric | Description |
| - | - |
| **LLM Calls** | Total model calls in the selected period. |
| **Avg Latency** | Mean time a model call took to complete. |
| **P95 Latency** | Latency that 95% of calls finished within. Read it alongside the average, because a few slow calls can raise it while the average stays flat. |
| **Tokens** | Total input and output tokens across all calls. |
| **Cost** | Estimated cost based on token usage and per-model pricing. |

### Charts

Two charts show how latency and cost develop across the period.

| Chart | Description |
| - | - |
| **Latency Trend** | Plots daily average latency (solid line) and daily P95 latency (dashed line), so you can spot when calls slowed down. |
| **Cost by Model** | Shows each model's share of total cost, with a legend that lists the models in the period. When no cost is recorded, it shows tokens by model instead. |

### Model performance

The **Model Performance** table lists one row per model, sorted by **Cost** in descending order, so the models that cost the most appear first.

| Column | Description |
| - | - |
| **Model** | Model that served the calls, for example `gpt-realtime-1.5`. |
| **Provider** | Provider of the model, for example `openai`. |
| **Calls** | Number of calls the model served. |
| **Tokens** | Total tokens the model's calls consumed. |
| **Cost** | Estimated cost of the model's calls. |

> [!NOTE]
>
> **LLM Performance** groups calls by model, not by credential. To see which credential or auth profile supplied provider access for a call, use the **Credential Name** column on the [Generations](#generations) tab.

![LLM Performance](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-llm-performance.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=0cf8cd95a8a00ece68d7c279eef6b4e6)

## Sessions explorer

**Sessions Explorer** lists every session in the selected period so you can isolate the ones worth investigating. Four metric cards summarize the set.

| Metric | Description |
| - | - |
| **Total Sessions** | Sessions recorded in the selected period. |
| **Active** | Sessions currently in progress. Counted from the 50 rows loaded on screen, not from all sessions. Shows a dash when an environment or channel filter is set. |
| **Avg Duration** | Mean session duration, calculated from the 50 loaded rows only. Treat it as a sample. |
| **Error Rate** | Percentage of sessions that recorded at least one error. Calculated over all filtered sessions, including those outside the loaded rows. |

### Narrow the list

Status chips filter the list to **All**, **Active**, **Completed**, **Escalated**, **Failed**, or **Ended**. Below the chips, five controls refine the results further.

| Control | Description |
| - | - |
| **Search sessions** | Matches sessions by keyword. |
| **Channel** | Filters by the channel the session arrived on. Defaults to **All channels**. |
| **Environment** | Filters by deployment environment: `development`, `staging`, `production`, or `working-copy`. Defaults to **All environments**. |
| **Source** | Filters by session source, for example runtime (production) traffic or eval sessions. Defaults to **All sources**. |
| **Filters** | Opens additional filter options. |

Select **Columns** to choose which columns the table displays. Select **Export** to download the session list.

> [!NOTE]
>
> Sessions started from a project's working copy, the pre-deployment draft, are recorded under the `working-copy` environment. Filter it out to keep pre-deployment testing from skewing your production metrics, or select it to review draft behavior on its own.

### Session list

| Column | Description |
| - | - |
| **Session ID** | Unique session identifier, with a copy control. |
| **Agent** | Agent that handled the session, for example `MainSupervisor`. |
| **Status** | Current session state, for example `ended`. |
| **Environment** | Environment the session ran in. |
| **Last Activity** | Time since the last recorded activity. Sorts the table by default. |
| **Traces** | Number of trace events the session generated. |
| **Duration** | Total session duration. |
| **Tokens** | Total tokens the session consumed. |
| **Cost** | Estimated cost for the session. Values below the display threshold show as `<$0.001`. |
| **Errors** | Error count for the session. Non-zero values are highlighted. |

Expand a row to see the full session ID, channel, trace event count, and last activity. Select **View Traces** to open that session in **Traces Explorer**.

![Sessions Explorer](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-sessions-explorer.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=50c532f87b9f444590f9d5cc25d88bd7)

## Traces explorer

**Traces Explorer** inspects the individual events inside a session.

### Filter traces

Type chips filter events to **All**, **LLM Call**, **Tool Call**, **Decision**, **Handoff**, **Error**, or **Agent**. Each applied filter appears as a chip below the search field, for example `Type: LLM Call`. Remove a single filter from its chip, or select **Clear all** to remove them all. **Reset filter** shows the number of active filters and restores the unfiltered list.

Use **Search traces** to match events by keyword, **Filters** for additional filter options, and **Export** to download the trace list.

### Sessions panel

The left panel lists the sessions in scope. Each card shows the agent name, status, span count, turn count, and duration. Select a session to load its events in the detail panel.

### Timeline and waterfall

The detail panel shows the selected session's events in one of two views. A counter reports how many events the current filter matches, for example `4 of 84 events`. The list loads 50 events at a time.

| View | Description |
| - | - |
| **Timeline** | Lists events in sequence as expandable cards. Use it to read an event's full payload. |
| **Waterfall** | Plots spans on a shared time axis, with each span's offset from the session start and its duration bar. Use it to find latency gaps and see where errors occurred. |

**Waterfall** opens with a summary bar reporting the trace mode (for example, **Historical**), **Spans**, **Duration**, **Tokens**, **Cost**, and **Errors**. Each span row shows a status icon for success or failure, the agent and model, the offset from session start, and the duration bar. Chips on the row repeat the span duration, token count, and cost.

### Event detail

Every event card carries the event type, agent name, and duration, plus `phase`, `run`, and `cause` badges. Expand a card for the full record.

| Field | Description |
| - | - |
| **Trace ID** | Identifier for the trace the event belongs to. |
| **Session ID** | Session the event belongs to. |
| **Span ID** | Identifier for this span. |
| **Event ID** | Identifier for this event. |

Each identifier has a copy control.

An **LLM Call** event adds model execution detail: **Model**, **Provider**, **Input Tokens**, **Output Tokens**, **Total Tokens**, **Cost**, and **Streaming**. Expand **Messages** to read the prompt and user turns, and **Response** to read the model output.

A **Tool Call** event shows the **Tool** name, an expandable **Input**, and **Show raw data** for the unformatted payload.

When a lifecycle hook invokes a tool through a `CALL` action, the call appears as its own **Tool Call** event, tagged with the hook type. It shows the URL, request, response, duration, and whether the call succeeded or failed, so you can confirm that a hook ran and see what it exchanged.

![Traces Explorer](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-traces-explorer.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=cf62b3f1d283376b29418274f3ef58b5)

## Generations

The **Generations** tab lists every model call the platform recorded, drawn from a unified LLM call ledger. The ledger captures calls from across the platform in one place, including agent turns, pipeline runs, and guardrail evaluations, so you can account for model spend and latency across the whole project instead of one surface at a time. Each call also records the credential that supplied provider access, so you can attribute token consumption and cost to a specific credential or auth profile.

Use **Search generations** to match calls by keyword, **Filters** for additional filter options, **Columns** to choose which columns the table displays, and **Export** to download the list.

### Generation list

| Column | Description |
| - | - |
| **Model** | Model that served the call, for example `gpt-5.2`. |
| **Name** | Caller that issued the request: an agent name such as `MainSupervisor`, or an internal operation such as `pipeline_generate_text` or `guardrail_evaluation`. |
| **Status** | Outcome of the call, for example `Success`. |
| **Channel** | Channel the call originated on, for example `web_debug`. Shows `--` for calls not tied to a channel, such as pipeline runs. |
| **Source** | Part of the platform that issued the call. See [Sources](#sources). |
| **Latency** | Time the call took end to end. |
| **Credential Name** | Name of the credential or auth profile that supplied provider access for the call. See [Credential attribution](#credential-attribution). |
| **Provider** | Provider of the model that served the call, for example `openai`. |
| **Credential Type** | Kind of source that supplied provider access, for example `credential`. See [Credential attribution](#credential-attribution). |
| **Total Tokens** | Input and output tokens combined. |
| **Cost** | Estimated cost for the call. Values below the display threshold show as `<$0.001`. |
| **Start Time** | Date and time the call started. |
| **TTFT** | Time to first token. Shows `NA` when the call didn't report one. |

### Sources

The **Source** column shows a readable label rather than an internal identifier, so you can tell at a glance which part of the platform issued a call.

| Source | What it covers |
| - | - |
| **Runtime** | Model calls agents make while handling conversations. |
| **Runtime Internal** | Supporting model calls the runtime makes outside the agent's own turn. |
| **Pipelines** | Model calls made by analytics pipelines, such as LLM-as-judge evaluations. |
| **Guardrails** | Model calls made while evaluating content with guardrail policies. |

> [!NOTE]
>
> Filter by **Source** to separate what your agents spend from what evaluation and safety checks spend. Pipeline and guardrail calls run on every qualifying conversation, so they can account for a large share of total calls without appearing in any single agent's numbers.

Calls from the Arch assistant in Studio also appear in this list and in the model totals on **LLM Performance**. Keep that in mind when you measure the spend of deployed agents.

### Credential attribution

**Credential Name** and **Credential Type** identify the source that supplied provider access for each call. Use them to see which credential or auth profile consumed tokens and cost when a project and its workspace use several model configurations side by side.

| Credential type | What it identifies | Credential name shown |
| - | - | - |
| `credential` | A named credential that a model connection uses. | The credential name. Credential names can't change, so the name always matches the name at the time of the call. |
| `auth_profile` | An auth profile that a model connection uses. | The auth profile's current name. When you rename an auth profile, every call it supplied, past and future, shows the new name. |
| `platform_credit` | Model access that the platform manages. | `platform-credit` |
| `direct_key` | A legacy model connection that stores a provider key directly, with no credential or auth profile. | `Direct-key` |

Credentials and auth profiles that share a name stay separate. A project-level credential, a workspace-level credential, and a credential in another project never combine, even when their names match.

The following rules decide which credential a call reports and how long it keeps it.

| Situation | Behavior |
| - | - |
| Calls recorded before attribution | Don't carry a credential. The platform doesn't backfill earlier calls. |
| Replacing a provider key | Create a new credential for the new key. The new credential becomes a separate source, and its usage doesn't merge with the old credential's. |
| Failed calls | Carry a credential on the same terms as successful calls. |
| Pipeline and guardrail calls | Carry a credential when they write to the LLM call ledger. |
| Deleting a credential or auth profile | Calls keep their credential name for as long as the platform retains the call. |
| Secrets | Attribution stores only the credential identity and name. It never stores provider keys or secret values. |

![Generations](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-generations.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=7de16a497104e874ef37a065573dd245)

## Query

The **Query** tab runs SQL on project event data for investigations the pre-built views don't cover.

1. Select a table, for example `abl_platform.platform_events`.
2. Write your SQL, or select **Example Queries** to start from a template. Select **Guide** for help on the tables and columns. Templates include a starter query for the feedback table, which returns ratings, comments, and the custom dimensions captured on each session.
3. Select **Execute**. Select **Clear** to empty the editor.

Queries use the same scoping tokens as dashboard widgets. Use `{tenantId:String}` and `{projectId:String}` for tenant and project isolation, and `{from:DateTime64(3)}` and `{to:DateTime64(3)}` to follow the selected time range. `{sessionId:String}` is optional. Results are capped at 1,000 rows.

The following query counts events by type and flags errors:

```sql theme={null}
SELECT
  event_type,
  count() AS cnt,
  countIf(has_error = 1) AS errors
FROM abl_platform.platform_events
WHERE tenant_id = {tenantId:String}
  AND project_id = {projectId:String}
  AND timestamp >= {from:DateTime64(3)}
  AND timestamp <= {to:DateTime64(3)}
GROUP BY event_type
ORDER BY cnt DESC
LIMIT 100
```

The results panel reports the row count and runtime, for example `Results — 20 rows (11ms)`. Select **Copy** to copy the result set, or **Add to dashboard** to save the query as a widget on a custom dashboard.

![Query tab](https://mintcdn.com/koreai/lXC-Go3bScjrntQx/agent-platform/images/analytics-insights/analytics-query.png?fit=max\&auto=format\&n=lXC-Go3bScjrntQx\&q=85\&s=eb3cabd283ab5f736afbbfad148dcbc1)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.