Skip to main content

Python SDK for the PowerPoint Engine API - generate, edit, merge and PDF-convert PowerPoint decks over HTTP

Project description

PowerPoint Engine — Python SDK

Python client for the PowerPoint Engine API: generate .pptx from Markdown or a structured template, edit / merge / replace inside existing decks, and convert PPTX to PDF — over plain HTTP, no PowerPoint or LibreOffice install needed.

Install

Not on PyPI yet — install from GitHub:

pip install git+https://github.com/powerpoint-engine-api/powerpoint-engine-python.git

Quick start

from powerpoint_engine import PowerPointEngine

engine = PowerPointEngine()  # anonymous: works, but files are watermarked

result = engine.generate(markup="""
# Q3 Business Review

## Highlights
- Revenue up 24% QoQ
- 3 new enterprise customers

## Quarterly Numbers
| Region | Q1  | Q2  | Q3  |
|--------|-----|-----|-----|
| EU     | 1.0 | 1.2 | 1.4 |
| US     | 2.0 | 2.4 | 2.6 |
""", theme="corporate")

engine.download(result, "review.pptx")

Markdown tables become native PowerPoint tables. A fenced ```chart block under a ## heading becomes a real editable chart (col / bar / line / pie / combo with a secondary axis):

## Revenue vs Margin
```chart
type: combo
categories: Q1, Q2, Q3
Revenue: 120, 150, 170
Margin % (line, secondary): 10, 12, 14

## Work with existing decks

```python
# Replace {{placeholders}} without breaking formatting
engine.replace("template.pptx", {"client": "ACME", "year": "2026"})

# Duplicate / delete / reorder slides (1-based)
engine.edit("deck.pptx", [
    {"op": "duplicate", "slide": 2},
    {"op": "delete", "slide": 5},
    {"op": "move", "slide": 3, "to": 1},
])

# Merge 2-5 decks; each keeps its own design
engine.merge(["intro.pptx", "results.pptx", "outro.pptx"])

# Convert to PDF
pdf = engine.to_pdf("deck.pptx")
engine.download(pdf, "deck.pdf")

# Translate in place (layout preserved)
engine.translate("deck.pptx", "Spanish")

Every call returns a dict with result.downloadUrl — a signed link valid for 24 hours. engine.download(result, path) fetches it.

Branding

engine.generate(
    markup="# Deck\n\n## Slide\n- point",
    brand={"primary": "#E4002B", "secondary": "#111827"},
    font="Georgia",
)

Accounts and credits

Pass your account id to tie calls to your quota and remove the watermark (Pro plan):

engine = PowerPointEngine(session_id="your-account-id")

Billing is credit-based: 1 credit = up to 10 slides. Free tier: 5 credits/month (watermarked); Pro ($9/mo) removes the watermark. Details: powerpointengine.io/#pricing.

AI agents

The same engine is exposed as a remote MCP server — one line in Claude Code / any MCP client:

claude mcp add --transport http powerpoint-engine https://powerpointengine.io/api/mcp/mcp

Errors

All errors raise PowerPointEngineError subclasses: ValidationError (400), AuthenticationError (401), NotFoundError (404), RateLimitError (429), ServerError (5xx).

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

powerpoint_engine_api-2.0.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

powerpoint_engine_api-2.0.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file powerpoint_engine_api-2.0.0.tar.gz.

File metadata

  • Download URL: powerpoint_engine_api-2.0.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.15

File hashes

Hashes for powerpoint_engine_api-2.0.0.tar.gz
Algorithm Hash digest
SHA256 498f1a5e89da516cda307be0cbe07a1d2ba38bc6b190326ad30739ad6f48ba2c
MD5 8856fab5588453b9d7fd7099667236a5
BLAKE2b-256 3126a4a294272381d0ccc3e50a74739015748e38ba31f5a9a7131d3e1dffed9a

See more details on using hashes here.

File details

Details for the file powerpoint_engine_api-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for powerpoint_engine_api-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1fdc38f4b2e74ef540f5310435fe3955add0ed419c932b70cb0dcc1572b06817
MD5 29914d5eaecb856bdccfab25fbea7aa1
BLAKE2b-256 53ad31b632b532810e4b8f06da23d4600091235baa89ca8cb25dda7f3a1de577

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page