---
title: "Update a live report"
method: PATCH
path: "/v1/live-report/{reportId}"
tags: ["Live Report"]
---

# Update a live report

`PATCH /v1/live-report/{reportId}`

## Request

- Base URL: `https://api.roark.ai`
- URL: `https://api.roark.ai/v1/live-report/{reportId}`
- Auth: HTTP bearer

Changes the fields sent. Set `status` to PAUSED to stop scheduled reports.

## Path parameters

- `reportId` string, uuid, required

## Request body

- UpdateLiveReportInput: Omitted fields keep their current value. Reports already written keep what they covered.
  - `name` string
  - `description` string, nullable
  - `agentId` string, uuid, nullable
  - `filters` object[]
    - `type` 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE', required: What the filter narrows on. GET /v1/analytics/schema lists each type.
    - `property` string: The property to compare. Required for CALL_PROPERTY and METRIC_PROPERTY; may be omitted for AGENT_PROPERTY, DATASET, MODALITY and CALL_ID.
    - `operator` 'EQUALS' | 'NOT_EQUALS' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUAL_TO' | 'LESS_THAN' | 'LESS_THAN_OR_EQUAL_TO' | 'CONTAINS' | 'STARTS_WITH' | 'IS_SET' | 'IS_NOT_SET': Defaults to EQUALS. IS_SET / IS_NOT_SET (CALL_PROPERTY only) keep conversations where the property is set, whatever the value, or missing (never sent, sent as null, or removed); they take no value.
    - `value` union: The value to compare against (an agent id, "call" / "chat", a property value). Required except with IS_SET / IS_NOT_SET.
      - string
      - number
      - boolean
  - `targets` object[]
    - `metric` string, required: The metric's slug (e.g. `task_completion`) or id.
    - `aggregation` 'PASS_RATE' | 'AVG' | 'MEDIAN' | 'PERCENTILE' | 'MIN' | 'MAX': Defaults to PASS_RATE for thresholds and booleans, AVG for anything numeric.
    - `percentile` integer: Required with PERCENTILE, e.g. 95.
    - `passOperator` 'EQUALS' | 'NOT_EQUALS' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUAL_TO' | 'LESS_THAN' | 'LESS_THAN_OR_EQUAL_TO': PASS_RATE on a metric that isn't a threshold: the per-call condition a call passes on.
    - `passValue` union
      - string
      - number
      - boolean
    - `comparator` 'AT_LEAST' | 'AT_MOST': AT_LEAST (default for PASS_RATE) or AT_MOST (default for every other aggregation).
    - `value` number, required: The bar, in display units. A PASS_RATE bar is a percentage, 0-100.
    - `label` string: Shown instead of the metric's name.
  - `dashboardId` string, uuid, nullable
  - `cadence` 'DAILY' | 'WEEKLY' | 'MONTHLY'
  - `timezone` string
  - `deliveryHour` integer
  - `status` 'ACTIVE' | 'PAUSED'
  - `notifications` object
    - `email` object, required
      - `enabled` boolean, required
      - `recipients` string[], required
    - `slack` object[], required
      - `channelId` string, required
      - `channelName` string, required
  - `includeTranscriptExcerpts` boolean

## Response `200`

The report

- object
  - `data` LiveReport, required
    - `id` string, uuid, required
    - `projectId` string, uuid, required
    - `name` string, required
    - `description` string, nullable, required
    - `agentId` string, uuid, nullable, required
    - `filters` object[], required
      - `type` 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE', required: What the filter narrows on. GET /v1/analytics/schema lists each type.
      - `property` string: The property to compare. Required for CALL_PROPERTY and METRIC_PROPERTY; may be omitted for AGENT_PROPERTY, DATASET, MODALITY and CALL_ID.
      - `operator` 'EQUALS' | 'NOT_EQUALS' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUAL_TO' | 'LESS_THAN' | 'LESS_THAN_OR_EQUAL_TO' | 'CONTAINS' | 'STARTS_WITH' | 'IS_SET' | 'IS_NOT_SET': Defaults to EQUALS. IS_SET / IS_NOT_SET (CALL_PROPERTY only) keep conversations where the property is set, whatever the value, or missing (never sent, sent as null, or removed); they take no value.
      - `value` union: The value to compare against (an agent id, "call" / "chat", a property value). Required except with IS_SET / IS_NOT_SET.
        - string
        - number
        - boolean
    - `targets` object[], required
      - `metric` string, required: The metric's slug (e.g. `task_completion`) or id.
      - `aggregation` 'PASS_RATE' | 'AVG' | 'MEDIAN' | 'PERCENTILE' | 'MIN' | 'MAX': Defaults to PASS_RATE for thresholds and booleans, AVG for anything numeric.
      - `percentile` integer: Required with PERCENTILE, e.g. 95.
      - `passOperator` 'EQUALS' | 'NOT_EQUALS' | 'GREATER_THAN' | 'GREATER_THAN_OR_EQUAL_TO' | 'LESS_THAN' | 'LESS_THAN_OR_EQUAL_TO': PASS_RATE on a metric that isn't a threshold: the per-call condition a call passes on.
      - `passValue` union
        - string
        - number
        - boolean
      - `comparator` 'AT_LEAST' | 'AT_MOST': AT_LEAST (default for PASS_RATE) or AT_MOST (default for every other aggregation).
      - `value` number, required: The bar, in display units. A PASS_RATE bar is a percentage, 0-100.
      - `label` string: Shown instead of the metric's name.
    - `dashboardId` string, uuid, nullable, required
    - `cadence` 'DAILY' | 'WEEKLY' | 'MONTHLY', required
    - `timezone` string, required
    - `deliveryHour` integer, required
    - `status` 'ACTIVE' | 'PAUSED', required
    - `notifications` object, required
      - `email` object, required
        - `enabled` boolean, required
        - `recipients` string[], required
      - `slack` object[], required
        - `notificationConfigId` string, uuid, required
        - `channelId` string, required
        - `channelName` string, required
      - `fromConfig` boolean
    - `includeTranscriptExcerpts` boolean, required
    - `configKey` string, nullable, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `configManaged` boolean, required: Managed by config as code: read-only here (edits return 409).
    - `nextDeliveryAt` string, nullable, required: When the next scheduled report is written. Null while the report is paused.

## Other responses

- `400`: Invalid report: an unknown agent, dashboard or metric, a target its metric cannot be read on, or a bad filter
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Report or document not found
- `409`: The report is managed by config as code
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

> 187 revisions in range; 1 not diffed.

- **2026-11-03** `1a91a5c90e44`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/roarkhq/apis/roark-analytics-api/changes/v1/live-report/:reportId/patch.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.dev/roarkhq/apis/roark-analytics-api/revisions/1a91a5c90e44?raw)
