powerpoint-engine-api
v2.0.0
Published
Node.js SDK for the PowerPoint Engine API - generate, edit, merge and PDF-convert PowerPoint decks over HTTP
Maintainers
Readme
PowerPoint Engine — Node.js SDK
Node.js 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.
Zero dependencies — uses native fetch (Node 18+). TypeScript types included.
Install
Not on npm yet — install from GitHub:
npm install github:powerpoint-engine-api/powerpoint-engine-nodeQuick start
import { PowerPointEngine } from "powerpoint-engine-api";
const engine = new PowerPointEngine(); // anonymous: works, but files are watermarked
const result = await 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",
});
await 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).
Work with existing decks
// Replace {{placeholders}} without breaking formatting
await engine.replace("template.pptx", { client: "ACME", year: "2026" });
// Duplicate / delete / reorder slides (1-based)
await 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
await engine.merge(["intro.pptx", "results.pptx", "outro.pptx"]);
// Convert to PDF
const pdf = await engine.toPdf("deck.pptx");
await engine.download(pdf, "deck.pdf");
// Translate in place (layout preserved)
await engine.translate("deck.pptx", "Spanish");Every call resolves to an object with result.downloadUrl — a signed link valid for 24 hours. engine.download(result, path) fetches it.
Branding
await 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):
const engine = new PowerPointEngine({ sessionId: "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/mcpErrors
Failed calls throw PowerPointEngineError with a status property (400 validation, 429 rate limit, 5xx server).
License
MIT
