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

# Create dashboard report (v2)

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

Creates a new automated dashboard report in the specified folder. Pass `?folder=<folder_id>` to place the report in a non-default folder.

## Path parameters

- `org_id` string, required

## Query parameters

- `folder` string

## 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 `200`

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)
