Generate a single slide asynchronously from a template slide and your data.
Workflow:
template_slide_id from analysis resultsgeneration_id immediately (HTTP 202)GET /presentations/{generation_id}/status every 2-5 secondscompleted, download from download_urlTable Pagination: If your slide is table-only and auto_paginate_tables
is enabled (default), a large table may generate multiple slides. Check
total_pages_generated in the status response. Slides that combine table and text content
should set auto_paginate_tables to false.
For multiple slides: Use POST /presentations/generate-deck instead.
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.
Production API key. Development/test deployments may also allow X-Org-Name.
Request schema for generating a single slide asynchronously.
Use this endpoint for quick single-slide generation. The route returns a generation ID immediately; poll the status endpoint for progress and the final download URL.
Note: If the slide is table-only and auto_paginate_tables is enabled,
a large table may generate multiple pages (check total_pages_generated in
the status response).
The template slide ID to use. Obtain this from the template analysis endpoint after uploading and analyzing your template.
"slide_abc123def456"
Content to populate the slide with. Structure depends on the template slide type (title slide, content slide, table slide, etc.).
{
"subtitle": "Company Performance Overview",
"title": "Annual Report 2024"
}{
"content": {
"blocks": [
{
"text": {
"bullets": [
"Revenue grew 25% year-over-year",
"Expanded to 3 new markets",
"Launched 5 new products"
]
},
"type": "text"
}
]
},
"title": "Key Achievements"
}{
"content": [
{
"blocks": [
{
"text": {
"bullets": ["Manual process", "3 day turnaround"]
},
"type": "text"
}
],
"header": "Before"
},
{
"blocks": [
{
"text": {
"bullets": ["Automated", "3 hour turnaround"]
},
"type": "text"
}
],
"header": "After"
}
],
"title": "Comparison: Before vs After"
}{
"content": {
"blocks": [
{
"table": {
"table": {
"rows": [
{
"cells": [
{ "value": "Region" },
{ "value": "Q4 Revenue" },
{ "value": "YoY Growth" }
],
"is_header": true
},
{
"cells": [
{ "value": "North America" },
{ "value": "$12.5M" },
{ "value": "+18%" }
]
},
{
"cells": [
{ "value": "Europe" },
{ "value": "$8.2M" },
{ "value": "+22%" }
]
},
{
"cells": [
{ "value": "Asia Pacific" },
{ "value": "$6.1M" },
{ "value": "+35%" }
]
}
]
}
},
"type": "table"
}
]
},
"title": "Revenue by Region"
}Organization name. If provided, must match the API key's organization. If omitted, the API key's organization is used.
"acme-corp"
Generation options. All fields are optional with sensible defaults.
{
"allow_textbox_reposition": false,
"auto_paginate_tables": true,
"footer_font_name": "Arial",
"footer_font_size": 10,
"footer_text": "Confidential",
"show_slide_numbers": true,
"table_min_font_size": 8,
"textbox_min_font_size": 8
}Generation started - poll status endpoint for progress
Response schema for async generation requests.
This response is returned immediately when you POST to /presentations/generate
or /presentations/generate-deck, and when you PUT to
/presentations/{id}/update-charts. The actual Aspose work happens in the
background.
Next steps:
generation_id from this responsestatus_url (or GET /presentations/{generation_id}/status) every few secondscompleted, partial, or failed, generation is donedownload_url in the status response (for completed or partial)Unique identifier for this generation job. Use this to poll status and download the result.
"gen_abc123def456"
Initial status. Always 'pending' for new requests.
"pending"
Full URL to poll for generation status. Convenience field - you can also construct this as GET /presentations/{generation_id}/status.
"https://api.example.com/api/v1/presentations/gen_abc123def456/status"
Timestamp when the generation request was created.
Human-readable status message.
"Generation started. Poll status URL for progress."