Reports API
The Reports v2 API lets you manage automated dashboard reports that are organized into folders. Every report belongs to a folder; if you do not specify one, the report is placed in the default folder.
These endpoints are served under the /api/v2/{org_id}/reports prefix and identify reports by their report_id (a KSUID). Folder placement is controlled with the folder query parameter. In OpenObserve Enterprise, this parameter is also used for RBAC permission checks and should be sent on every request that targets a report (see Permissions).
All requests require an authorization header. See the API Reference for how to build the HTTP basic-auth header.
Permissions
Report access is scoped by folder. In RBAC, permissions are evaluated against the rfolder (report folder) resource for the folder a report lives in, rather than against individual reports. To list, view, or modify reports in a folder, a user must hold the corresponding permission on that report folder.
Enterprise: pass the
folderparameter for RBAC. In OpenObserve Enterprise, the permission check is evaluated against the report's folder (rfolder). For any request that targets a specific report (create, get, update, delete, enable, and trigger), include thefolderquery parameter set to the report's folder ID so the check resolves against the correct folder. Omitting it can cause the request to be denied or evaluated against the wrong folder. In Open Source (no RBAC),folderis optional and defaults todefault.
Endpoints
| Method | Path | Description |
|---|---|---|
GET |
/api/v2/{org_id}/reports |
List reports, optionally scoped to a folder |
POST |
/api/v2/{org_id}/reports |
Create a report in a folder |
GET |
/api/v2/{org_id}/reports/{report_id} |
Get a report by ID |
PUT |
/api/v2/{org_id}/reports/{report_id} |
Update a report (and optionally move it) |
DELETE |
/api/v2/{org_id}/reports/{report_id} |
Delete a report by ID |
DELETE |
/api/v2/{org_id}/reports/bulk |
Delete multiple reports by ID |
PATCH |
/api/v2/{org_id}/reports/move |
Move reports between folders |
PATCH |
/api/v2/{org_id}/reports/{report_id}/enable |
Enable or disable a report |
PUT |
/api/v2/{org_id}/reports/{report_id}/trigger |
Manually trigger a report |
Common path parameters
| Parameter | Type | Description |
|---|---|---|
org_id |
string | Organization name. |
report_id |
string | Report identifier (KSUID). |
List Reports
Lists reports for the organization. Use the query parameters to scope the result to a folder or a specific dashboard.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | No | Folder ID to filter by. When omitted, reports across folders are returned (in Enterprise, limited to the folders you have permission on). |
dashboard_id |
string | No | Return only reports that target this dashboard. |
cache |
boolean | No | When true, return only destination-less (cache) reports. |
Example request
Response
[
{
"report_id": "2cP9kZ7yQx1rT3wVnLm0",
"name": "weekly-overview",
"title": "Weekly Overview",
"folder_id": "f_2abcDEF",
"dashboards": ["3hQ8..."],
"frequency": {
"type": "weeks",
"interval": 1,
"cron": "",
"align_time": false
},
"enabled": true,
"owner": "admin@example.com",
"last_triggered_at": 1717400000000000
}
]
Create Report
Creates a new report in the folder named by the folder query parameter, or in the default folder when omitted.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | Enterprise | Folder ID to create the report in. Defaults to default. Required in Enterprise so the RBAC create check resolves against the target folder. |
Request Body
Use the Report schema. The org_id, dashboards, and destinations fields are required.
{
"name": "weekly-overview",
"title": "Weekly Overview",
"org_id": "default",
"description": "Weekly summary delivered every Monday",
"message": "Please find the weekly overview attached.",
"enabled": true,
"frequency": {
"type": "weeks",
"interval": 1,
"cron": "",
"align_time": false
},
"start": 1717400000000000,
"timezone": "UTC",
"timezoneOffset": 0,
"dashboards": [
{
"dashboard": "3hQ8...",
"folder": "default",
"tabs": ["default"],
"variables": [],
"timerange": {
"type": "relative",
"period": "1w",
"from": 0,
"to": 0
}
}
],
"destinations": [
{ "email": "team@example.com" }
]
}
Field reference (Report)
| Field | Type | Description |
|---|---|---|
name |
string | Unique report name within the organization. |
title |
string | Display title used in the report email. |
org_id |
string | Organization name. Required. |
description |
string | Optional description. |
message |
string | Message body included in the report email. |
enabled |
boolean | Whether the report schedule is active. |
frequency |
object | Schedule definition. type is one of once, hours, days, weeks, months, cron. Use interval for periodic types and cron for a cron expression. |
start |
integer | Start time of report generation, in UNIX microseconds. |
timezone |
string | Timezone name used to evaluate the schedule. |
timezoneOffset |
integer | Fixed timezone offset in minutes. |
dashboards |
array | Dashboards to render. Each entry references a dashboard ID, its folder, tabs, optional variables, and a timerange. |
destinations |
array | Where to deliver the report, e.g. { "email": "user@example.com" }. |
owner |
string | Report owner. Defaults to the requesting user when empty. |
Response
Get Report
Returns a single report by ID.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | Enterprise | The report's folder ID. Required in Enterprise so the RBAC permission check resolves against the correct folder; optional in Open Source. |
Response
Returns the full Report object. Returns 404 Not Found if the report does not exist.
Update Report
Updates an existing report. Provide the full Report body. To move the report to a different folder in the same request, include the folder query parameter; when omitted, the report stays in its current folder.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | Enterprise | Move the report to this folder ID. When omitted, the folder is unchanged. In Enterprise, the report's folder is also used for the RBAC permission check. |
Example request
Response
Delete Report
Deletes a single report by ID.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | Enterprise | The report's folder ID. Required in Enterprise so the RBAC permission check resolves against the correct folder; optional in Open Source. |
Response
Bulk Delete Reports
Deletes multiple reports by ID in a single request. Deletion is idempotent: IDs that do not exist are reported as successful.
Endpoint
Request Body
Response
Move Reports
Moves one or more reports to a destination folder.
Endpoint
Request Body
| Field | Type | Description |
|---|---|---|
report_ids |
string[] | IDs of the reports to move. |
dst_folder_id |
string | Destination folder ID. |
Response
Enable or Disable a Report
Enables or disables a report's schedule.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | Enterprise | The report's folder ID. Required in Enterprise so the RBAC permission check resolves against the correct folder; optional in Open Source. |
value |
boolean | No | true to enable, false to disable. Defaults to false. |
Example request
Response
Trigger a Report
Manually triggers report generation and delivery, independent of its schedule.
Endpoint
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
folder |
string | Enterprise | The report's folder ID. Required in Enterprise so the RBAC permission check resolves against the correct folder; optional in Open Source. |
Response
Next steps
- API Reference: Overview of the OpenObserve REST API and how to build the authorization header.
- Reports: Create and schedule dashboard reports from the UI.
- Stream Settings API: Manage stream-level settings via the API.
Need some help?
- Join our Community Slack
- Or Contact support