Reports
Query your workspace analytics: conversation volume, response times, CSAT, SLA compliance, teammate performance, AI agent resolutions and more. Start with the datasets catalog to discover metrics and attributes, then run queries with filters, grouping and period comparison.
List report datasets
Run a report query
Look up report filter values
Drill into report rows
ModelsExpand Collapse
ReportAttribute { id, allowedOperators, category, 9 more }
Attribute ID — use as fieldId in filter rules and as groupBy / segmentBy in query requests.
semantics: "current_state" | "historical_action" | "historical_snapshot" | "dynamic_metric_mapped"Whether the filter uses the latest mutable state, an immutable historical action/snapshot, or a metric-dependent mapping.
Whether the filter uses the latest mutable state, an immutable historical action/snapshot, or a metric-dependent mapping.
Whether POST /v2/reports/filter-values can list this attribute’s values.
ReportDataset { id, attributes, description, 2 more }
Attribute ID — use as fieldId in filter rules and as groupBy / segmentBy in query requests.
semantics: "current_state" | "historical_action" | "historical_snapshot" | "dynamic_metric_mapped"Whether the filter uses the latest mutable state, an immutable historical action/snapshot, or a metric-dependent mapping.
Whether the filter uses the latest mutable state, an immutable historical action/snapshot, or a metric-dependent mapping.
Whether POST /v2/reports/filter-values can list this attribute’s values.
Attribute IDs this specific metric accepts in filter expressions.
Attribute IDs this specific metric accepts as groupBy or segmentBy.
supportedViews: Array<"standard" | "hourly_heatmap" | "sankey">Which view values POST /v2/reports/query accepts for this metric. Most metrics support standard and hourly_heatmap; conversation-flow metrics are sankey-only.
Which view values POST /v2/reports/query accepts for this metric. Most metrics support standard and hourly_heatmap; conversation-flow metrics are sankey-only.
Local calendar date (ISO 8601) from which this specific metric has data, when it differs from the global reporting floor. Windows ending before this date are rejected for this metric.
Metrics sharing a variantGroupId are timestamp variants of one logical metric (same display name); each measures the same population at a different timestamp. Query the concrete metric id to pick a variant.
ReportFilterExpression { children, kind, op }
children: Array<ReportFilterRule { fieldId, kind, operator, value } | ReportFilterGroup { children, kind, op } >Rules and/or nested groups of rules. Groups may nest up to 6 levels at runtime; 100 rules max per expression.
Rules and/or nested groups of rules. Groups may nest up to 6 levels at runtime; 100 rules max per expression.
ReportFilterRule { fieldId, kind, operator, value }
Attribute ID to filter on (e.g. conversation.channel). Discover attribute IDs via GET /v2/reports/datasets.
operator: "is" | "is_not" | "in" | 10 moreComparison operator. Each attribute supports a subset of operators — see the allowedOperators field in the GET /v2/reports/datasets catalog.
Comparison operator. Each attribute supports a subset of operators — see the allowedOperators field in the GET /v2/reports/datasets catalog.
value?: string | number | boolean | Array<string | number | boolean>Value to compare against. Scalar for is, is_not, contains, not_contains, gte, lte (ISO date strings for date attributes); non-empty array for in, not_in, is_member_of, is_not_member_of; 2-element array for between; omit for exists / not_exists.
Value to compare against. Scalar for is, is_not, contains, not_contains, gte, lte (ISO date strings for date attributes); non-empty array for in, not_in, is_member_of, is_not_member_of; 2-element array for between; omit for exists / not_exists.
ReportFilterGroup { children, kind, op }
Attribute ID to filter on (e.g. conversation.channel). Discover attribute IDs via GET /v2/reports/datasets.
operator: "is" | "is_not" | "in" | 10 moreComparison operator. Each attribute supports a subset of operators — see the allowedOperators field in the GET /v2/reports/datasets catalog.
Comparison operator. Each attribute supports a subset of operators — see the allowedOperators field in the GET /v2/reports/datasets catalog.
value?: string | number | boolean | Array<string | number | boolean>Value to compare against. Scalar for is, is_not, contains, not_contains, gte, lte (ISO date strings for date attributes); non-empty array for in, not_in, is_member_of, is_not_member_of; 2-element array for between; omit for exists / not_exists.
Value to compare against. Scalar for is, is_not, contains, not_contains, gte, lte (ISO date strings for date attributes); non-empty array for in, not_in, is_member_of, is_not_member_of; 2-element array for between; omit for exists / not_exists.
ReportFilterRule { fieldId, kind, operator, value }
Attribute ID to filter on (e.g. conversation.channel). Discover attribute IDs via GET /v2/reports/datasets.
operator: "is" | "is_not" | "in" | 10 moreComparison operator. Each attribute supports a subset of operators — see the allowedOperators field in the GET /v2/reports/datasets catalog.
Comparison operator. Each attribute supports a subset of operators — see the allowedOperators field in the GET /v2/reports/datasets catalog.
value?: string | number | boolean | Array<string | number | boolean>Value to compare against. Scalar for is, is_not, contains, not_contains, gte, lte (ISO date strings for date attributes); non-empty array for in, not_in, is_member_of, is_not_member_of; 2-element array for between; omit for exists / not_exists.
Value to compare against. Scalar for is, is_not, contains, not_contains, gte, lte (ISO date strings for date attributes); non-empty array for in, not_in, is_member_of, is_not_member_of; 2-element array for between; omit for exists / not_exists.
ReportMetric { id, allowedAggregations, description, 13 more }
Attribute IDs this specific metric accepts in filter expressions.
Attribute IDs this specific metric accepts as groupBy or segmentBy.
supportedViews: Array<"standard" | "hourly_heatmap" | "sankey">Which view values POST /v2/reports/query accepts for this metric. Most metrics support standard and hourly_heatmap; conversation-flow metrics are sankey-only.
Which view values POST /v2/reports/query accepts for this metric. Most metrics support standard and hourly_heatmap; conversation-flow metrics are sankey-only.
Local calendar date (ISO 8601) from which this specific metric has data, when it differs from the global reporting floor. Windows ending before this date are rejected for this metric.
Metrics sharing a variantGroupId are timestamp variants of one logical metric (same display name); each measures the same population at a different timestamp. Query the concrete metric id to pick a variant.
ReportListDatasetsResponse { data, object }
Attribute ID — use as fieldId in filter rules and as groupBy / segmentBy in query requests.
semantics: "current_state" | "historical_action" | "historical_snapshot" | "dynamic_metric_mapped"Whether the filter uses the latest mutable state, an immutable historical action/snapshot, or a metric-dependent mapping.
Whether the filter uses the latest mutable state, an immutable historical action/snapshot, or a metric-dependent mapping.
Whether POST /v2/reports/filter-values can list this attribute’s values.
Attribute IDs this specific metric accepts in filter expressions.
Attribute IDs this specific metric accepts as groupBy or segmentBy.
supportedViews: Array<"standard" | "hourly_heatmap" | "sankey">Which view values POST /v2/reports/query accepts for this metric. Most metrics support standard and hourly_heatmap; conversation-flow metrics are sankey-only.
Which view values POST /v2/reports/query accepts for this metric. Most metrics support standard and hourly_heatmap; conversation-flow metrics are sankey-only.
Local calendar date (ISO 8601) from which this specific metric has data, when it differs from the global reporting floor. Windows ending before this date are rejected for this metric.
Metrics sharing a variantGroupId are timestamp variants of one logical metric (same display name); each measures the same population at a different timestamp. Query the concrete metric id to pick a variant.