Pluslide LogoPluslide
Call APIEndpoints

Generate Presentation

Generate a PPTX presentation using the Pluslide API with a single synchronous request.

Endpoint

POST /v1/project/export
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

Request Body

Basic Example

{
  "projectId": "your_project_id",
  "presentation": {
    "slideList": [
      {
        "templateKey": "your_template_key",
        "content": {
          "your_field_key": "value1",
          "your_field_key2": "value2"
        }
      }
    ]
  }
}

If you are unsure about what to include in the slideList, you can go to the Playground page to test it out.

Parameters

ParameterTypeRequiredDescription
projectIdstringYesProject ID
presentationobjectYesPresentation content
presentation.slideListarrayYesList of slides
presentation.slideList[].templateKeystringYesTemplate identifier
presentation.slideList[].contentobjectYesField data in key-value format. The structure depends on the fields defined in the selected template. These fields are customizable and controlled by the user
presentation.slideList[].attributesobjectNoSlide attributes
presentation.slideList[].attributes.speakerNotestringNoSpeaker notes
presentation.slideList[].attributes.hiddenbooleanNoWhether to hide this slide
presentation.slideList[].attributes.slideNumberobject or booleanNoSlide number settings
presentation.attributesobjectNoPresentation attributes
presentation.attributes.titlestringNoPresentation title
presentation.attributes.authorstringNoAuthor name
presentation.attributes.companystringNoCompany name
presentation.attributes.subjectstringNoPresentation subject
optionsobjectNoExport options
options.compressImagesbooleanNoWhether to compress images in the PPTX (default: true)
options.embedFontsbooleanNoWhether to embed fonts in the PPTX for consistent rendering across devices (default: true)

Slide Number Settings

If slideNumber is an object, it supports the following properties:

PropertyTypeRequiredDescription
xnumberYesX-position (0.0 to 1.0)
ynumberYesY-position (0.0 to 1.0)
colorstringNoText color (e.g., "#333333")
fontSizenumberNoFont size in points

Full Example

{
  "projectId": "proj_123456",
  "presentation": {
    "slideList": [
      {
        "templateKey": "title-slide",
        "content": {
          "title": "Annual Report 2025",
          "subtitle": "Financial Performance Overview"
        },
        "attributes": {
          "speakerNote": "Welcome everyone to our annual report presentation."
        }
      },
      {
        "templateKey": "bullet-list",
        "content": {
          "title": "Key Achievements",
          "bullets": [
            "Increased revenue by 25%",
            "Expanded to 3 new markets",
            "Launched 5 new products"
          ]
        },
        "attributes": {
          "slideNumber": {
            "x": 0.95,
            "y": 0.95,
            "color": "#333333",
            "fontSize": 12
          }
        }
      },
      {
        "templateKey": "chart-slide",
        "content": {
          "title": "Revenue Growth",
          "chartData": {
            "labels": ["Q1", "Q2", "Q3", "Q4"],
            "values": [1.2, 1.8, 2.3, 2.9]
          }
        },
        "attributes": {
          "hidden": false
        }
      }
    ],
    "attributes": {
      "title": "Annual Report 2025",
      "author": "Finance Team",
      "company": "Acme Corporation",
      "subject": "Financial Performance"
    }
  }
}

Response

A successful request returns a JSON object with the download URL:

{
  "url": "https://storage.example.com/presentations/presentation-123456-2025-01-15T10:30:00.000Z.pptx"
}

Response Fields

FieldTypeDescription
urlstringDirect download URL for the generated presentation

Code Examples

cURL

curl -X POST "https://api.pluslide.com/v1/project/export" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "proj_123456",
    "presentation": {
      "slideList": [
        {
          "templateKey": "title-slide",
          "content": {
            "title": "Annual Report 2025",
            "subtitle": "Financial Overview"
          }
        }
      ]
    }
  }'

JavaScript

const response = await fetch('https://api.pluslide.com/v1/project/export', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    projectId: 'proj_123456',
    presentation: {
      slideList: [
        {
          templateKey: 'title-slide',
          content: {
            title: 'Annual Report 2025',
            subtitle: 'Financial Overview',
          },
        },
      ],
    },
  }),
});

const { url } = await response.json();
// url is the direct download link to the PPTX file

Error Responses

StatusCodeDescription
400INVALID_REQUESTMissing or invalid request body
401UNAUTHORIZEDInvalid or missing API key
403INSUFFICIENT_CREDITSNot enough credits
404PROJECT_NOT_FOUNDProject ID doesn't exist
404TEMPLATE_NOT_FOUNDTemplate key doesn't exist
429RATE_LIMIT_EXCEEDEDToo many requests

On this page