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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.