---
title: "Create dashboard report"
method: POST
path: "/api/{org_id}/reports"
tags: ["Reports"]
---

# Create dashboard report

`POST /api/{org_id}/reports`

## 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/{org_id}/reports`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/reports/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new automated dashboard report configuration. Reports can be scheduled to automatically generate and distribute dashboard snapshots via email or other notification channels. Includes support for custom time ranges, recipient lists, delivery schedules, and output formats to keep stakeholders informed of key metrics and trends.

## Path parameters

- `org_id` string, required

## Request body

- object
  - `createdAt` string, date-time
  - `dashboards` ReportDashboard[], required
    - `attachment_dimensions` ReportAttachmentDimensions
      - `height` integer, required
      - `width` integer, required
    - `dashboard` string, required
    - `email_attachment_type` 'standard' | 'inline'
    - `folder` string, required
    - `report_type` 'pdf' | 'png' | 'csv'
    - `tabs` string[], required
    - `timerange` ReportTimerange
      - `from` integer, required
      - `period` string, required
      - `to` integer, required
      - `type` 'relative' | 'absolute', required
    - `variables` ReportDashboardVariable[]
      - `id` string, nullable
      - `key` string, required
      - `value` string, required
  - `description` string
  - `destinations` ReportDestination[], required
    - `email` string, required
  - `enabled` boolean
  - `frequency` ReportFrequency
    - `align_time` boolean
    - `cron` string: Cron expression
    - `interval` integer: Frequency interval in the `frequency_type` unit
    - `type` 'once' | 'hours' | 'days' | 'weeks' | 'months' | 'cron'
  - `imagePreview` boolean: When `true` and the report type is PDF, a PNG screenshot is also captured and embedded inline in the email body alongside the PDF attachment.
  - `lastEditedBy` string
  - `message` string: Message to include in the email
  - `name` string
  - `orgId` string, required
  - `owner` string
  - `start` integer: Start time of report generation in UNIX microseconds.
  - `timezone` string
  - `timezoneOffset` integer: Fixed timezone offset in minutes
  - `title` string
  - `updatedAt` string, date-time

## Response `201`

Report created

- HttpResponse: HTTP response code 200 is success code 400 is error code 404 is not found code 500 is internal server error code 503 is service unavailable code >= 1000 is custom error code message is the message or error message
  - `code` integer, required
  - `error_detail` string, nullable
  - `hint` string, nullable: One-line guidance on how to fix the error (agent self-correction, D4).
  - `id` string, nullable
  - `message` string, required
  - `name` string, nullable
  - `suggestions` string[], nullable: Closest valid alternatives for a mistyped field/function name.
  - `trace_id` string, nullable
  - `warnings` string[], nullable: Problems with a request that succeeded anyway. Distinct from `hint`, which explains a failure: these accompany a 200, and the caller is entitled to have meant it.

## Other responses

- `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)
