Skip to main content
POST
/
api
/
v1
/
presentations
/
generate
Generate single slide (async)
curl --request POST \
  --url https://api.example.com/api/v1/presentations/generate \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "options": {
    "auto_paginate_tables": true
  },
  "org_name": "acme-corp",
  "slide_data": {
    "content": {
      "blocks": [
        {
          "text": {
            "bullets": [
              "Revenue increased 25% YoY",
              "Operating margin improved to 18%",
              "Customer base grew to 10,000+"
            ],
            "header": "Key Highlights"
          },
          "type": "text"
        }
      ]
    },
    "subtitle": "Financial Performance Overview",
    "title": "Q4 Revenue Summary"
  },
  "template_slide_id": "slide_abc123def456"
}
'
{
  "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://docs-slidekit.theduomi.com/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 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).

template_slide_id
string
required

The template slide ID to use. Obtain this from the template analysis endpoint after uploading and analyzing your template.

Example:

"slide_abc123def456"

slide_data
SlideDataInput · object
required

Content to populate the slide with. Structure depends on the template slide type (title slide, content slide, table slide, etc.).

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

Generation options. All fields are optional with sensible defaults.

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."