---
title: "List chat metrics"
method: GET
path: "/v1/chat/{id}/metrics"
tags: ["Chat"]
---

# List chat metrics

`GET /v1/chat/{id}/metrics`

Fetch all metrics for a specific chat, including both system-generated and custom metrics. Only returns rows from the **latest** metric-collection job per metric — if the same metric has been recomputed, prior runs are excluded and remain in the metric history. By default returns only successfully computed metrics; pass `?status=all` to also include rows that resolved as NOT_APPLICABLE / DATA_MISSING / ERROR (the `value` field is omitted on those entries — check `captureStatus`).

## Path parameters

- `id` string, required

## Query parameters

- `flatten` string — Whether to return a flat list instead of grouped by metric definition (default: false)
- `status` 'success' | 'all' — Filter metrics by capture status. `success` (default) returns only successfully computed metrics — backwards-compatible with the historical behavior. `all` also returns NOT_APPLICABLE / DATA_MISSING / ERROR rows (with `value` omitted), so clients can distinguish "still computing" from "computed but no value" and exit retry loops correctly.

## Response `200`

Metrics for a specific chat

- object
  - `data` object[], required — Conversation metrics response payload grouped by metric definition
    - `metricDefinitionId` string, uuid, required — Unique identifier for the metric definition
    - `slug` string, required — Stable metric slug
    - `metricId` string, required — Alias of `slug` retained for backwards compatibility. Same value as `slug`.
    - `name` string, required — Name of the metric
    - `description` string, required — Description of what the metric measures
    - `type` 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET', required — Type of value this metric produces
    - `scope` 'GLOBAL' | 'PER_PARTICIPANT', required — Whether metric is global or per-participant
    - `unit` object — Unit information if applicable
      - `name` string, required — Name of the unit
      - `symbol` string, nullable, required — Symbol for the unit
    - `values` union[], required — Array of metric values (multiple for PER_PARTICIPANT metrics, or multiple segments/turns)
      - union
        - object — A metric value entry. Applies to every metric.
          - `value` union — The metric value (type depends on outputType). Present only on SUCCESS rows; omitted for NOT_APPLICABLE / DATA_MISSING / ERROR.
            - number
            - boolean
            - string
          - `callId` string, uuid — ID of the call this value was computed on. Only set when the response spans multiple conversations (e.g. job-scoped metric values).
          - `chatId` string, uuid — ID of the chat this value was computed on. Only set when the response spans multiple conversations (e.g. job-scoped metric values).
          - `captureStatus` 'SUCCESS' | 'NOT_APPLICABLE' | 'DATA_MISSING' | 'ERROR', required — Result state of this metric computation. SUCCESS carries a real `value`; NOT_APPLICABLE / DATA_MISSING / ERROR do not (the `value` field is omitted). Non-SUCCESS rows only appear when the request includes ?status=all.
          - `errorMessage` string — Error detail when captureStatus is ERROR — e.g. provider down, LLM timeout. Undefined for other statuses.
          - `context` 'CALL' | 'SEGMENT' | 'SEGMENT_RANGE', required — Context level: CALL (entire conversation), SEGMENT (single segment), SEGMENT_RANGE (between/across segments)
          - `participantRole` 'agent' | 'customer' — Role of participant (only for PER_PARTICIPANT metrics)
          - `valueReasoning` string — Explanation for the metric value (especially useful for AI-computed metrics)
          - `confidence` number — Confidence score (0-1) for the computed value. Defaults to 1.0 for deterministic metrics. Omitted on non-SUCCESS rows.
          - `computedAt` string, date-time, required — ISO 8601 timestamp when the metric was computed
          - `policyIds` string[] — IDs of metric policies that triggered this metric computation
          - `segment` object — Segment information (for SEGMENT context metrics)
            - `id` string, uuid, required — Segment ID
            - `text` string, required — Segment text content
            - `startOffsetMs` number, required — Start time offset in milliseconds
            - `endOffsetMs` number, required — End time offset in milliseconds
          - `fromSegment` object — Starting segment information (for SEGMENT_RANGE context metrics)
            - `id` string, uuid, required — Segment ID
            - `text` string, required — Segment text content
            - `startOffsetMs` number, required — Start time offset in milliseconds
            - `endOffsetMs` number, required — End time offset in milliseconds
          - `toSegment` object — Ending segment information (for SEGMENT_RANGE context metrics)
            - `id` string, uuid, required — Segment ID
            - `text` string, required — Segment text content
            - `startOffsetMs` number, required — Start time offset in milliseconds
            - `endOffsetMs` number, required — End time offset in milliseconds
        - object — Returned for the Property Mismatch metric (`property_transcript_mismatch`): the standard entry plus the per-property verdict breakdown.
          - `value` union — The metric value (type depends on outputType). Present only on SUCCESS rows; omitted for NOT_APPLICABLE / DATA_MISSING / ERROR.
            - number
            - boolean
            - string
          - `callId` string, uuid — ID of the call this value was computed on. Only set when the response spans multiple conversations (e.g. job-scoped metric values).
          - `chatId` string, uuid — ID of the chat this value was computed on. Only set when the response spans multiple conversations (e.g. job-scoped metric values).
          - `captureStatus` 'SUCCESS' | 'NOT_APPLICABLE' | 'DATA_MISSING' | 'ERROR', required — Result state of this metric computation. SUCCESS carries a real `value`; NOT_APPLICABLE / DATA_MISSING / ERROR do not (the `value` field is omitted). Non-SUCCESS rows only appear when the request includes ?status=all.
          - `errorMessage` string — Error detail when captureStatus is ERROR — e.g. provider down, LLM timeout. Undefined for other statuses.
          - `context` 'CALL' | 'SEGMENT' | 'SEGMENT_RANGE', required — Context level: CALL (entire conversation), SEGMENT (single segment), SEGMENT_RANGE (between/across segments)
          - `participantRole` 'agent' | 'customer' — Role of participant (only for PER_PARTICIPANT metrics)
          - `valueReasoning` string — Explanation for the metric value (especially useful for AI-computed metrics)
          - `confidence` number — Confidence score (0-1) for the computed value. Defaults to 1.0 for deterministic metrics. Omitted on non-SUCCESS rows.
          - `computedAt` string, date-time, required — ISO 8601 timestamp when the metric was computed
          - `policyIds` string[] — IDs of metric policies that triggered this metric computation
          - `segment` object — Segment information (for SEGMENT context metrics)
            - `id` string, uuid, required — Segment ID
            - `text` string, required — Segment text content
            - `startOffsetMs` number, required — Start time offset in milliseconds
            - `endOffsetMs` number, required — End time offset in milliseconds
          - `fromSegment` object — Starting segment information (for SEGMENT_RANGE context metrics)
            - `id` string, uuid, required — Segment ID
            - `text` string, required — Segment text content
            - `startOffsetMs` number, required — Start time offset in milliseconds
            - `endOffsetMs` number, required — End time offset in milliseconds
          - `toSegment` object — Ending segment information (for SEGMENT_RANGE context metrics)
            - `id` string, uuid, required — Segment ID
            - `text` string, required — Segment text content
            - `startOffsetMs` number, required — Start time offset in milliseconds
            - `endOffsetMs` number, required — End time offset in milliseconds
          - `propertyVerdicts` object[] — Per-property verdicts for the Property Mismatch metric, in the order the properties were checked. Omitted for every other metric.
            - `propertyName` string, required — The call property checked, as sent at ingest
            - `expectedValue` string, required — The value supplied at ingest, frozen at scoring time
            - `observedValue` string — What the transcript said instead. Only present when verdict is MISMATCH.
            - `verdict` 'MATCH' | 'MISMATCH' | 'NOT_MENTIONED', required — How this property resolved against the transcript. NOT_MENTIONED means the subject never came up and is not a mismatch.
            - `reasoning` string — Judge reasoning for this verdict
            - `segment` object — The transcript segment this property was referred to in: the conflicting value for MISMATCH, the confirming reference for MATCH. Omitted for NOT_MENTIONED and when the verdict could not be anchored.
              - …

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal Server Error

## Changes

- **2026-08-17** `887b091b3d81` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/roarkhq/apis/roark-analytics-api/changes/v1/chat/:id/metrics/get.md)

---

[API](https://skmtc.dev/roarkhq/apis/roark-analytics-api.md) · [All operations](https://skmtc.dev/roarkhq/apis/roark-analytics-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roarkhq/roark-analytics-api/revisions/1d61b68e9429/schema)
