CmdCal
Sign in

Document generation API

Build presentations with components, not coordinates.

Structured JSON in, native editable PowerPoint and Excel files out. Charts, workbooks, validation, and repair in one API layer.

Editable Excel chartsNative XLSX workbooksOOXML validatedAgent-ready
CmdCal
dashboard / overview
live

Current Billing Period

847 / 2,000 documents

42% used

API Keys

Manage keys

Docs

API reference

Billing

Plans & invoices

Getting Started

Make your first render

curl -X POST /api/v2/render \
  -H "Authorization: Bearer pj_live_..." \
  -d '{"sourceSchema":"protocol_v2",...}'

01 The problem

The output layer is still broken.

python-pptx needs 47 lines to place a title and a subtitle on a blank slide. Adjust the Y coordinate. Deploy. The client opens it in Google Slides and everything shifts.

Need a chart? python-pptx renders pie chart labels as 100%/800%/100% (GitHub issue #395, still open). PptxGenJS triggers "PowerPoint needs to repair this file" when you combine charts with images (issue #1020, also open). Neither library can produce an editable Excel-embedded chart, the kind where a recipient clicks in and sees the actual data.

The hard part is not generating slides. The hard part is generating slides that do not make people squint, do not break when opened, and do not require the recipient to redo the work.

[02] Documents

Write code. Get perfect documents.

JSX components compile to pixel-perfect PPTX slides, PDF invoices, and DOCX reports. The visual contract: you write code, you get a document.
quarterly-deck.tsx
import { Slide, BarChart, KPI } from "paperjsx"
 
export const Q4Slide = () => (
<Slide layout="title-chart">
<KPI label="Revenue" value="$4.2M" delta="+34%" />
<KPI label="Margin" value="72%" delta="+4pp" />
<KPI label="Customers" value="340" />
<BarChart
data={quarterly}
accent="brand"
labels={true}
stacked={false}
/>
<Note>Source: Stripe MRR · Q4 2025</Note>
</Slide>
)
Q4 Revenue Growth
FY2025 · Quarterly Review
$4.2M
Revenue
72%
Margin
340
Customers
+34%
YoY
Source: Stripe MRRQ1–Q4 2025Generated 03/22/2026

02 API

One API call. One editable deck.

The request and response stay simple. The work is in the output quality.

Request
POST /api/v2/render
Content-Type: application/json
 
{
"sourceSchema": "protocol_v2",
"mode": "async",
"document": {
"version": "2.0",
"title": "Q2 Board Update",
"accentColor": "#5A7A9B",
"slides": [
{
"slideType": "title-body",
"title": "Q2 Board Update",
"body": ["Revenue up 34% QoQ"]
},
{
"slideType": "kpi-grid",
"title": "Key Metrics",
"items": [
{ "label": "ARR", "value": "$2.4M" },
{ "label": "NRR", "value": "118%" }
]
}
]
}
}
Response
HTTP/1.1 202 Accepted
Content-Type: application/json
 
{
"status": "queued",
"data": {
"job_id": "job_123",
"job_url": "/api/v2/jobs/job_123"
}
}

Editable Excel charts.

Every chart is backed by a real embedded workbook. Recipients click in and see the data.

OOXML validated.

Every output file is checked against the spec before it leaves the API. If CmdCal generates it, PowerPoint opens it.

LLM-native.

The declarative JSON schema lets AI agents describe slides in structured data instead of fighting coordinate-level calls.

How It Works

JSON in. Native deck out.

01
Send structured data
POST a JSON payload with your slide content, template reference, and brand config. Schema-validated on receipt.
stripe/charges.json
hubspot/contacts.csv
github/repos.graphql
sheets/pipeline.xlsx
postgres/events
02
Engine compiles OOXML
JSX components resolve to native PowerPoint XML. Charts, tables, and layouts render with pixel-perfect fidelity.
0entities resolved
Anthropic94+12
Mistral AI87+8
Cohere72+3
Stability AI65-4
03
Download or stream
Validated .pptx and .docx files return via webhook or direct download. Editable in PowerPoint, Keynote, or Google Slides.
Compiling JSX
Rendering PPTX
Uploading to CDN
Live at URL
cdn.plain.work/v/acme/slide-4.png

How it fits

Structured data in, native deck out.

JSON payload, template, and brand config enter. A validated, editable .pptx exits.
Sources
JSON payload
Template
Brand config
CmdCal Engine
OOXML validated
CmdCal Engine
OOXML validated
Outputs
.pptx
.docx

03 Who this is for

Built for teams that need the deck itself.

AI agent developers

Workflows that produce document deliverables, reports, decks, and proposals through MCP or direct API calls. Ship a CmdCal MCP server in your agent stack. The model describes slides in structured data. The engine handles the rest.

SaaS platforms

Add "Export to PowerPoint" without building a PPTX rendering engine. Tableau and Power BI export slides as static images. CmdCal exports editable native objects that recipients can modify.

Financial services

Automated pitch books and QBRs where the editable Excel chart is not a nice-to-have, it is the entire point. Recipients click in and see the actual data.

Get started

Start generating decks from code.

5 free documents per month. No credit card.