.pptx encodes. Upload it once, analyze it once, and reference it by ID on every generation request.
Step 1: Prepare your template
Build the template in PowerPoint (or any tool that exports.pptx). A few things that help analysis identify slide structure cleanly:
- Tables with the right column count and a populated header row
- Charts with realistic sample categories and series
- Distinct master layouts for distinct page types (table-heavy pages, chart pages, agenda, dividers)
- Title placeholders on slides that should accept titles

Demo template, slide 1 — six-column table with a header band
Step 2: Upload
Two-step flow: the API returns a signed upload URL; youPUT the .pptx directly to storage; you confirm the upload.
Initiate
Upload the file
PUT the .pptx bytes to upload_url. The bytes go directly to object storage; the API never sees them.
Confirm
Step 3: Run analysis
analysis_id and status: "processing".
Step 4: Inspect the analysis output
Once analysis completes, fetch the results:slideId (assigned during analysis, stable across reads). Generation requests target slides by slideId, not by template — which means a single deck can mix slides from multiple templates by referencing each one’s slideId. slideIndex (0-based) and slideNumber (1-based, matches PowerPoint’s slide number) are also available if you need ordering.
Each entry in shapes has a common set of fields, plus type-specific extras keyed off shape_type. The rest of this section walks through each shape type with a real excerpt from the parser running against slide 1 of the demo template above.
Common fields (every shape)
Placeholder shapes (TITLE, BODY, SLIDE_NUMBER)
Addstext_format, describing the font the template uses for that placeholder.
text_format block tells you what the title (or body, etc.) will look like once populated — the same font and colour the template’s master layout encodes.
Table shapes
Addstable_rows / table_columns, plus table_info (dimensions, style preset, six PowerPoint table-style flags) and table_styling (per-cell formatting for the header and body rows).
diagonal_down and diagonal_up (typically LineStyle.NOT_DEFINED for tables that don’t use diagonals).
table_styling arrays:
Table-style flags
The six boolean flags insidetable_info mirror PowerPoint’s “Table Tools → Design → Table Style Options” checkboxes. They control whether the applied style preset (e.g. MEDIUM_STYLE_2_ACCENT_1) emphasizes certain rows or columns:
These flags are independent of the cell-level formatting in
header_row_format / header_text_format. In the example above all six are false because the header band is styled directly on each cell, not via the style preset.
Chart shapes
Charts return only the common shape fields — position, name,shape_type: "Chart". Example from a chart slide elsewhere in the same template:
.pptx itself; generation requests reference the chart by its slide’s identifier and supply the data to populate it. See the chart guides for how to fill or refresh a chart.
Text-marker shapes (AutoShape placeholders)
Templates also use a second placeholder pattern: regularAutoShape shapes whose text field holds a recognized marker string. The API identifies these by their text value and swaps in the real content from the request payload. Common markers in the demo template: LHS_header, RHS_header, Bullet_placeholder, Text_placeholder.
These have is_placeholder: false and placeholder_type: null (PowerPoint doesn’t classify them as native placeholders) but functionally they are content slots.
Authoring-tool artifacts
OleObjectFrame shapes are embedded objects from authoring tools, most commonly think-cell. They appear on every slide in templates built with such tools and don’t carry generatable content.
Step 5: Use it for generation
Generation requests reference slides byslideId. Because IDs are per-slide, a single deck can pull slides from multiple templates — useful for assembling pitch books, IC memos, or LP updates that combine standard cover/agenda slides from one template with content slides from another.
Maintenance
Template lifecycle
Analysis
Slides
The slide preview endpoint is useful when an agent or app wants to show the user a thumbnail of the template slide they’re about to populate.
Updating templates
There is no endpoint to overwrite a template’s.pptx bytes. If you change the underlying file, upload it as a new template (new template_id) — generations reference templates by ID and the analysis is tied to the file that was uploaded. The PATCH endpoint only updates metadata (name, tags, description), not the file itself.