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.
Presentation Generation
Generation turns an analyzed template slide into a real.pptx. The template provides the visual system. Your request provides the content, the layout payload, and any overrides you want to apply.
Run template analysis first. Generation uses each slide’s analyzed
slideId as template_slide_id.1. Supported Layouts
Layouts describe how content is arranged on the slide. Your template should contain a slide that structurally matches one of these patterns.| Layout | Payload shape |
|---|---|
| Title / text slide | title, subtitle, optional text blocks |
| Single table | One table block |
| Table + text | One table block plus one or more text blocks |
| Single chart | One chart block |
| Agenda | One agenda block |
| Two-column table + chart | content as two columns; one side table, one side chart |
| Two-column table + table | content as two columns; both sides table |
content array for arbitrary layouts. The current renderer routes two-column content for table + chart and table + table layouts; chart + chart and text + text are not treated as distinct left/right content regions.
The sections below describe the content blocks used inside those layouts.
2. Content Blocks
Content blocks are the JSON objects placed insideslide_data.content.blocks. Use them to fill the matching regions in a template slide.
| Block | Use it for | Details |
|---|---|---|
text | Section headers, paragraphs, bullets, and supporting copy | Text Blocks |
table | Row-and-column data, logos, table styling, conditional formatting, and pagination | Table Blocks |
chart | Bar and column charts with categories, series, axes, legends, labels, and data rows | Chart Blocks |
agenda | Agenda slides with section labels and an active section | Slide Input |
content is one column object:
text block, bullets is an array of strings. Each string renders as one bullet paragraph in the matching text region.
For a two-column layout, content is an array of column objects. The optional column header is only used by two-column templates that include header textboxes marked LHS_header and RHS_header, where LHS means left-hand side and RHS means right-hand side.
Table Blocks
Author table rows, dynamic columns, logos, reusable styles, conditional formatting, and pagination.
Chart Blocks
Author bar and column charts with series, axes, legends, labels, and data rows.
Text Blocks
Author slide text, text sections, bullets, and formatting overrides.
3. Template Inheritance
By default, generation inherits from the template. If you omit formatting fields, the renderer uses the fonts, sizes, colors, table styling, chart presets, placeholder positions, and master layouts already encoded in the.pptx.
Use overrides only where the generated content needs to differ from the template.
| If you send | Result |
|---|---|
| No formatting | Template styling is used wherever available |
| Partial formatting | Specified fields override; unspecified fields continue to inherit where supported |
| Full formatting | Payload controls that element’s font, size, color, emphasis, or cell styling |
4. Generate Slides
There are two generation modes:| Mode | Endpoint | Use when |
|---|---|---|
| Single slide | POST /api/v1/presentations/generate | You need one logical slide generated as an async job |
| Deck | POST /api/v1/presentations/generate-deck | You need multiple slides in one .pptx |
| Field | What it controls |
|---|---|
template_slide_id | Which analyzed template slide to clone and populate |
slide_data | The content and optional formatting for that slide |
options | Pagination, font-fit, footer, and slide-number behavior |
What you can specify in slide_data
| Area | Fields |
|---|---|
| Slide text | title, subtitle, footer, footnote |
| Text blocks | Single-column: content.blocks[].text.{header,text,bullets}. Two-column: content[].blocks[].text.{header,text,bullets} |
| Text formatting | slide_format.title, slide_format.subtitle, slide_format.body, slide_format.textbox.{header,text,bullets}, plus text-block header_format, text_format, bullets_format |
| Tables | rows, rows[].cells, row is_header, cell value, cell is_logo, multi-paragraph or bullet cell values, column_configs |
| Table formatting | table_format, format_templates, format_template references from cells, paragraphs, or column_configs[], conditional rules, text formatting, and cell formatting |
| Charts | Bar/column chart fields: chart_type, categories, series[].{name,values,color}, title, title_format, legend, value_axis, category_axis, value_axis_unit, caption, show_bar_labels, show_data_table, data_rows, data_table_header_column, data_table_format |
| Agenda | sections, active_index, active_font_color, active_bold, active_underline |
Generate One Slide
Usegenerate for one logical slide. The endpoint returns immediately with a generation_id; poll status until the generated file is ready.
Single-slide request example
Single-slide request example
total_pages_generated, slide_results, file size, and a signed download_url. total_pages_generated can be greater than 1 when a table-only slide paginates.
Generate a Deck
Usegenerate-deck for multi-slide output. The endpoint returns immediately with a generation_id; poll status until the deck is ready.
Slides render in the same order as the slides array. Each slide can use a different template_slide_id, including slides from different analyzed templates in the same organization.
Deck request example
Deck request example
Poll Status
status is terminal.
| Status | Meaning |
|---|---|
pending | Request is queued |
processing | Slides are being rendered |
completed | Every requested slide succeeded |
partial | Some slides succeeded and some failed |
failed | No usable deck was generated |
slide_results for async deck jobs. A partial result can still include a downloadable .pptx.
Download
Use the signeddownload_url when available. To download through the API instead:
presentation_id can be either:
gen_xxxfrom slide generationgen_xxxfrom deck generationpres_xxxfrom older direct-return generation output, if present
completed or partial.
Page Counts and Indexes
Pagination can make output slide counts differ from request slide counts:total_slides_requestedis the number of logical slides in the request.total_pages_generatedis the number of actual PowerPoint slides in the output file.slide_results[].pages_generatedtells you which logical slides expanded.- Chart update
slide_indexvalues refer to the output presentation, so paginated table-only slides can shift later indexes.
Related Guides
Table Blocks
Rows, cells, logos, reusable styles, conditional formatting, and pagination.
Chart Blocks
Chart types, categories, series, legends, axes, labels, and data rows.
Text Blocks
Slide text, text sections, bullets, and formatting overrides.
Slide Input
Full JSON shapes for text, tables, charts, agendas, and formatting.
Layout & Rendering Controls
Layout compatibility, aspect ratio, pagination, fitting, footers, and slide numbers.
Examples
Complete payloads for common slide and deck patterns.