automationapigetting-started

Overview

Manual PowerPoint creation is a time sink. Teams spend hours every week formatting slides that could be generated programmatically. The pptx.dev API lets you automate the entire process — feed in data, get back a polished .pptx file.

Why Automate?

Manual process Automated alternative
6+ hours building a QBR deck 2 seconds via API call
Inconsistent formatting across team Same color scheme and fonts every time
Copy-paste errors from data sources Data piped directly from your systems
One-off slides that can't be reused Templates that generate on demand

The Basics

The pptx.dev API accepts a JSON body with your presentation structure and returns a download URL for the generated file:

POST https://api.pptx.dev/v1/presentations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Example: curl

curl -X POST https://api.pptx.dev/v1/presentations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Automated Report",
    "theme": "minimal",
    "slides": [
      {
        "layout": "title-center",
        "content": {
          "heading": "Monthly Report",
          "subheading": "March 2026"
        }
      },
      {
        "layout": "number-3x-title-center",
        "content": {
          "heading": "Key Metrics",
          "items": [
            { "value": "$2.4M", "label": "Revenue" },
            { "value": "1,200", "label": "New Users" },
            { "value": "96%", "label": "Uptime" }
          ]
        }
      }
    ]
  }'

Example: JavaScript / Node.js

async function generateDeck(data: ReportData) {
  const response = await fetch("https://api.pptx.dev/v1/presentations", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.PPTX_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      title: `${data.month} Report`,
      theme: "minimal",
      slides: [
        {
          layout: "title-center",
          content: {
            heading: `${data.month} Report`,
            subheading: data.teamName,
          },
        },
        {
          layout: "number-3x-title-center",
          content: {
            heading: "Key Metrics",
            items: data.kpis.map((kpi) => ({
              value: kpi.value,
              label: kpi.name,
            })),
          },
        },
        {
          layout: "chart-1x-title-center",
          content: {
            heading: "Revenue Trend",
            chart: {
              type: "LINE_WITH_MARKERS",
              categories: data.months,
              series: [{ name: "Revenue", values: data.revenueByMonth }],
            },
          },
        },
      ],
    }),
  });

  const { downloadUrl } = await response.json();
  return downloadUrl;
}

Example: Python

import requests
import os

def generate_deck(title, kpis):
    response = requests.post(
        "https://api.pptx.dev/v1/presentations",
        headers={
            "Authorization": f"Bearer {os.environ['PPTX_API_KEY']}",
            "Content-Type": "application/json",
        },
        json={
            "title": title,
            "theme": "minimal",
            "slides": [
                {
                    "layout": "title-center",
                    "content": {"heading": title},
                },
                {
                    "layout": "number-3x-title-center",
                    "content": {
                        "heading": "Key Metrics",
                        "items": [
                            {"value": k["value"], "label": k["name"]}
                            for k in kpis[:3]
                        ],
                    },
                },
            ],
        },
    )
    return response.json()["downloadUrl"]

Common Automation Patterns

Scheduled Reports

Generate weekly or monthly decks automatically:

  1. Fetch data from your analytics API
  2. Build the slide JSON from the data
  3. Call the pptx.dev API
  4. Email or Slack the download link to stakeholders

CRM-Triggered Decks

Generate a personalized sales deck when a deal reaches a certain stage:

  1. CRM webhook fires on stage change
  2. Your server pulls deal data and customer info
  3. Generates a branded deck with the persuasive-sales narrative
  4. Attaches the file to the deal record

Self-Service Dashboards

Let users generate their own decks from a web interface:

  1. User selects metrics and time range
  2. Your frontend calls your backend
  3. Backend assembles the slide JSON and calls the pptx.dev API
  4. User downloads the file immediately

Next Steps

You came for the design. Leave with the deck.

STORYD turns anything in this catalog into a finished, story-driven presentation. Free to start, no card.

See it in a deck →

5 free presentations. Exports to PPTX.