---
title: "Get report run history"
method: GET
path: "/api/v2/{org_id}/reports/history"
tags: ["Reports"]
---

# Get report run history

`GET /api/v2/{org_id}/reports/history`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/v2/{org_id}/reports/history`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/v2/:org_id/reports/history/get.ts> (a function with typed inputs; its response is checked against the schema)

Lists the runs of scheduled reports from the organization's triggers stream: scheduled and manual runs, their outcome, recipients and timing. The full path is /api/v2/{org_id}/reports/history.

## Path parameters

- `org_id` string, required

## Query parameters

- `report_id` string
- `run_report_id` string
- `start_time` integer
- `end_time` integer
- `status` string[]
- `trigger_source` string
- `is_cached` boolean
- `from` integer
- `size` integer
- `retries` integer
- `sort_by` string
- `sort_order` string

## Response `200`

Success

- object
  - `counts` ReportRunCounts, required: Run counts over the filtered range, ignoring the status and cached filters.
    - `cached` integer, required: Cache-warming runs that succeeded.
    - `error` integer, required
    - `skipped` integer, required
    - `succeeded` integer, required: Emailed runs that succeeded.
    - `total` integer, required
  - `disabled_reason` string, nullable: Why the org records no run rows: own-org reporting off, remote mode or an expired trial.
  - `from` integer, required
  - `hits` ReportRunHit[], required
    - `attachment_type` string, nullable
    - `dashboard_count` integer, nullable
    - `delay_in_secs` integer, nullable
    - `delivery_attempted` boolean, nullable
    - `duration_ms` integer, nullable
    - `error` string, nullable
    - `finished_at` integer, nullable
    - `is_cached` boolean, required
    - `is_partial` boolean, required
    - `next_run_at` integer, nullable: The run after this one; provisional on a failed row.
    - `recipient_count` integer, nullable
    - `report_id` string, required
    - `report_name` string, required: Empty when the report was deleted.
    - `retries` integer, required
    - `scheduled_for` integer, nullable: The run's due time; null on rows written before it was recorded.
    - `scheduler_trace_id` string, nullable
    - `source_node` string, nullable
    - `status` string, required
    - `time_in_queue_ms` integer, nullable
    - `timestamp` integer, required: `_timestamp` of the row: when the run was picked up.
    - `trigger_source` string, required
    - `triggered_by` string, nullable
  - `size` integer, required
  - `total` integer, required

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `500`: Internal Server Error

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
