Skip to main content

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

Metadata

Release files for powerpoint-engine-api 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for powerpoint-engine-api 2.0.0
File Size Uploaded Provenance Actions
powerpoint_engine_api-2.0.0.tar.gz 7.7 kB Without provenance Details for powerpoint_engine_api-2.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for powerpoint-engine-api 2.0.0
File Interpreter ABI Platform Actions
powerpoint_engine_api-2.0.0-py3-none-any.whl Python 3 none any Details for powerpoint_engine_api-2.0.0-py3-none-any.whl

Total release size: 16.0 kB

Release files / powerpoint_engine_api-2.0.0.tar.gz

Download URL powerpoint_engine_api-2.0.0.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
498f1a5e89da516cda307be0cbe07a1d2ba38bc6b190326ad30739ad6f48ba2c
BLAKE2b-256 checksum
How to use checksums
3126a4a294272381d0ccc3e50a74739015748e38ba31f5a9a7131d3e1dffed9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.15

Release files / powerpoint_engine_api-2.0.0-py3-none-any.whl

Download URL powerpoint_engine_api-2.0.0-py3-none-any.whl
Size 8.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1fdc38f4b2e74ef540f5310435fe3955add0ed419c932b70cb0dcc1572b06817
BLAKE2b-256 checksum
How to use checksums
53ad31b632b532810e4b8f06da23d4600091235baa89ca8cb25dda7f3a1de577
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.15

Security for powerpoint-engine-api 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page