Skip to main content
POST
/
api
/
v1
/
presentations
/
generate-deck
Generate presentation deck (async)
curl --request POST \
  --url https://api.example.com/api/v1/presentations/generate-deck \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "options": {
    "allow_textbox_reposition": false,
    "auto_paginate_tables": true
  },
  "org_name": "acme-corp",
  "slides": [
    {
      "slide_data": {
        "subtitle": "Executive Summary",
        "title": "Q4 2024 Business Review"
      },
      "template_slide_id": "slide_title001"
    },
    {
      "slide_data": {
        "content": {
          "blocks": [
            {
              "text": {
                "bullets": [
                  "Revenue grew 25% YoY to $56.6M",
                  "Customer base expanded to 1,890 accounts",
                  "NPS improved from 72 to 82"
                ]
              },
              "type": "text"
            }
          ]
        },
        "title": "Key Highlights"
      },
      "template_slide_id": "slide_content001"
    },
    {
      "options": {
        "auto_paginate_tables": true,
        "table_min_font_size": 9
      },
      "slide_data": {
        "content": {
          "blocks": [
            {
              "table": {
                "table": {
                  "rows": [
                    {
                      "cells": [
                        {
                          "value": "Metric"
                        },
                        {
                          "value": "Q3"
                        },
                        {
                          "value": "Q4"
                        },
                        {
                          "value": "Change"
                        }
                      ],
                      "is_header": true
                    },
                    {
                      "cells": [
                        {
                          "value": "Revenue"
                        },
                        {
                          "value": "$12.8M"
                        },
                        {
                          "value": "$14.2M"
                        },
                        {
                          "value": "+11%"
                        }
                      ]
                    },
                    {
                      "cells": [
                        {
                          "value": "Customers"
                        },
                        {
                          "value": "1,620"
                        },
                        {
                          "value": "1,890"
                        },
                        {
                          "value": "+17%"
                        }
                      ]
                    }
                  ]
                }
              },
              "type": "table"
            }
          ]
        },
        "title": "Quarterly Performance"
      },
      "template_slide_id": "slide_table001"
    }
  ]
}
'
{
  "generation_id": "gen_abc123def456",
  "status": "pending",
  "status_url": "https://api.example.com/api/v1/presentations/gen_abc123def456/status",
  "created_at": "2023-11-07T05:31:56Z",
  "message": "Generation started. Poll status URL for progress."
}

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.

Authorizations

X-API-Key
string
header
required

Production API key. Development/test deployments may also allow X-Org-Name.

Body

application/json

Request schema for generating a complete presentation deck with multiple slides.

This endpoint processes asynchronously due to the potentially large workload. It returns immediately with a generation_id that you use to poll for status.

Workflow:

  1. POST to /presentations/generate-deck with this request body
  2. Receive generation_id and status_url in response
  3. Poll GET /presentations/{generation_id}/status until status is completed or failed
  4. Download the generated .pptx from the download_url in the status response

Slides ordering: Slides appear in the generated deck in the same order as the slides array.

Mixed templates: Each slide can use a different template slide, allowing you to combine slides from multiple templates into a single deck.

slides
DeckSlideInput · object[]
required

Ordered list of slides to generate. Minimum 1 slide required. Slides appear in the deck in this order.

Minimum array length: 1
org_name
string | null

Organization name. If provided, must match the API key's organization. If omitted, the API key's organization is used.

Example:

"acme-corp"

options
GenerationOptions · object

Default generation options applied to all slides. Individual slides can override these by specifying their own options.

Example:
{
"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
}

Response

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:

  1. Save the generation_id from this response
  2. Poll status_url (or GET /presentations/{generation_id}/status) every few seconds
  3. When status becomes completed, partial, or failed, generation is done
  4. Download from download_url in the status response (for completed or partial)
generation_id
string
required

Unique identifier for this generation job. Use this to poll status and download the result.

Example:

"gen_abc123def456"

status
string
required

Initial status. Always 'pending' for new requests.

Example:

"pending"

status_url
string
required

Full URL to poll for generation status. Convenience field - you can also construct this as GET /presentations/{generation_id}/status.

Example:

"https://api.example.com/api/v1/presentations/gen_abc123def456/status"

created_at
string<date-time>
required

Timestamp when the generation request was created.

message
string
default:Generation started

Human-readable status message.

Example:

"Generation started. Poll status URL for progress."