Chart updates replace the data inside a chart that was already generated (or uploaded), without regenerating the deck. The chart’s type, colours, legend, axis formatting, and position on the slide are preserved — only the categories, series values, and optional data rows change.Documentation Index
Fetch the complete documentation index at: https://duomi.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.


When to use chart updates vs. regeneration
Use chart updates when you want to refresh chart data in a deck that already exists — either one the API generated, or one a user edited manually in PowerPoint. Layout, formatting, and any manual edits to other slides are preserved. Use full regeneration when the deck structure itself needs to change (different slides, different tables, different layouts).Endpoint
- JSON body — reference a presentation already in storage by its ID
- Multipart form — upload a
.pptxfile and update charts in it in one request
JSON body (presentation already in storage)
presentation_id path parameter accepts:
gen_xxx— from slide generation, deck generation, or chart updatespres_xxx— older direct-return generation output, if present
Multipart form (upload a .pptx and update it)
Use this when a user has edited a deck manually in PowerPoint and you want to refresh chart data in the edited file.updates field is a JSON string in the form body. When a file is uploaded, the path parameter is ignored — the response returns a new cupd_xxx ID for the updated file.
Response
Update fields
Each entry in theupdates array targets one chart:
| Field | Type | Required | Description |
|---|---|---|---|
slide_index | integer | yes | Zero-based slide index in the presentation |
chart_index | integer | no (default 0) | Zero-based chart index on the slide |
chart_data | object | yes | New chart data (see below) |
chart_data fields
| Field | Type | Required | Description |
|---|---|---|---|
categories | string[] | yes | Category labels for the x-axis |
series | object[] | yes | One object per series: { "name": "...", "values": [...] } |
data_rows | string[][] | no | Rows rendered in the data table beneath the chart |
data_table_header_column | bool | no (default true) | Whether the first value in each data_rows entry is a row header |
data_table_format | object | no | Font overrides for the data table: font_name, font_size, bold, italic, color |
chart_type | string | no | Override the chart type (e.g. "stacked_bar", "clustered_column") |
title | string | no | Override the chart title text |
title_format | object | no | Font overrides for the chart title |
legend | object | no | Legend position and formatting |
value_axis | object | no | Value axis formatting (min, max, labels) |
category_axis | object | no | Category axis formatting |
show_bar_labels | bool | no (default false) | Show value labels on bars |
show_data_table | bool | no (default false) | Show the built-in PowerPoint data table |
caption | string | no | Caption text below the chart |
categories and series are required. Omitted fields are left unchanged from the existing chart.
Slide index after pagination
slide_index refers to the output presentation, not the original input array. If a table slide paginated into multiple pages during generation, subsequent slide indexes shift.
The generation response includes total_pages_generated and slide_results — use those to determine the correct output position for each chart.
Errors
| Error | Status | Meaning |
|---|---|---|
| Slide index out of range | 400 | slide_index exceeds the number of slides |
| No chart found | 400 | No chart exists at that chart_index on the slide |
| Presentation not found | 404 | The presentation_id does not exist in storage |