---
title: "Get data for multiple widgets"
method: POST
path: "/dashboards/widgets/bulk_data/"
tags: ["dashboards"]
---

# Get data for multiple widgets

`POST /dashboards/widgets/bulk_data/`

## Request

- Base URL: `https://api.cekura.ai`
- URL: `https://api.cekura.ai/dashboards/widgets/bulk_data/`
- Auth: one of:
  - API key in header `X-CEKURA-API-KEY`
  - HTTP bearer
  - HTTP bearer
  - API key in header `X-VOCERA-SHAREABLE-LINK-TOKEN`
  - HTTP bearer

Get plot data for multiple widgets at once.

Accepts a list of widget IDs and optional override filters.
Returns data for all specified widgets.
Filter format follows filter JSON structure.

## Query parameters

- `page` integer
- `page_size` integer
- `timezone` string

## Request body

- BulkWidgetDataRequest
  - `widget_ids` integer[], required: List of widget IDs to get data for
  - `filters` object: Optional override filters for all widgets. Filter conditions to scope the data. See the [Dashboards guide](https://docs.cekura.ai/documentation/guides/dashboards#filters) for supported fields, operators, and syntax.
    - `field` string: Field name to filter on
    - `op` 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'startswith' | 'endswith' | 'in' | 'isnull' | 'regex': Comparison operator
    - `value` unknown
    - `operator` 'and' | 'or' | 'same_row': Logical operator to combine conditions
    - `conditions` unknown[]: List of filter conditions or nested groups
      - unknown

## Response `200`

- PaginatedWidgetDataResponseList
  - `count` integer, required
  - `next` string, uri, nullable
  - `previous` string, uri, nullable
  - `results` WidgetDataResponse[], required
    - `widget_id` integer, required
    - `field_name` string, required
    - `chart_type` string, required
    - `data` object[], required: Chart data. Format depends on `chart_type`: **Line chart:** `[{id, timestamp, value}, ...]` **Bar chart:** `[{time_interval, value, sample_count}, ...]` **Enum daily share:** `[{time_interval, group, value, selected_calls, total_calls, evaluated_calls}, ...]`, where `value` is the selected enum value's percentage of total filtered calls. **Pie chart:** `[{label, value, percentage}, ...]` See the [Dashboards guide](https://docs.cekura.ai/documentation/guides/dashboards#chart-output-formats) for full examples.
    - `aggregation_function` string, nullable, required
    - `time_period` string, nullable, required
    - `group_by` unknown, required
    - `can_group_by` boolean
    - `metadata` object, required: Additional metadata about the plotted data. See the [Dashboards guide](https://docs.cekura.ai/documentation/guides/dashboards#widget-data) for details.
      - `display_name` string: Human-readable name of the field
      - `data_type` 'numeric' | 'boolean' | 'string' | 'datetime' | 'dynamic' | 'percentage': Resolved data type of the field
      - `filter_value` unknown
      - `series_dimension` 'enum_value': Server-supplied series dimension for enum daily shares.
      - `normalization` 'total_calls': Denominator used for enum daily shares.
    - `warning` WidgetDataWarning
      - `code` string, required
      - `message` string, required

## Changes

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

[Operation history](https://skmtc.dev/cekura/apis/cekura-api/changes/dashboards/widgets/bulk_data/post.md)

---

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