Building a better PowerPoint API for the AI era Aspose.Slides released a new PowerPoint API designed for AI agents, reporting that on a benchmark of 195 tasks, every model performed better with the tools, and the cheapest model (Luna) beat the best frontier model (Opus) at 96% lower cost with zero corrupted files. The API addresses limitations in existing libraries like python-pptx, which cannot copy slides, add or remove table rows, create charts with two value axes, or replace text without collapsing formatting, forcing agents to edit raw OOXML and risking file corruption. tldr AI agents create and edit PowerPoint by writing code against libraries with serious limitations. Even basic edits end up slow, expensive, and prone to file corruption. We built a PowerPoint API that addresses these limitations, making it easier for AI agents and humans to work with PowerPoint programmatically. On our benchmark of 195 tasks, every model performed better with these tools. And the cheapest model Luna beat the best frontier model writing code Opus , at 96% lower cost, with zero corrupted files. Code generation: the status quo and its problems AI agents generate code to create and edit PowerPoint files. There are two main approaches: - Automating with the PowerPoint application. The entry points are VBA macros, VSTO the older generation of Windows add-ins in C , and Office.js the modern generation of add-ins – JavaScript web apps running in an embedded browser in the task pane . All of these trigger actions in a running instance of PowerPoint faster than you can click and type. - Editing the raw Office Open XML OOXML inside the .pptx file. A .pptx is a ZIP of XML files see this explainer if you need an intro /blog/what-is-a-pptx-file/ , so technically any programming language that does text replacement can make changes to the file. The OOXML spec is notoriously difficult, so people use libraries that wrap the XML in a more intuitive object model. The most popular by far is the open-source python-pptx . You write textbox.text = "Hello world" and the library handles the XML. The second approach doesn't need the PowerPoint application, which is unreliable to run on a server. That makes it the natural fit for AI agents executing code in a sandbox, and given the popularity of python-pptx , agents do the bulk of their work with Python scripts. The problem is that python-pptx has real gaps. For example, it can't copy a slide https://github.com/scanny/python-pptx/issues/132 , add or remove table rows https://github.com/scanny/python-pptx/issues/86 , create a chart with two value axes https://github.com/scanny/python-pptx/issues/141 , or replace text without collapsing all its formatting into a single run https://github.com/scanny/python-pptx/issues/285 . To make up for the gaps, agents fall back to editing the raw XML: unzip, string-replace, and rezip. It's like performing open-heart surgery on the file, and the risks range from silent no-ops to full-blown file corruption. Ask anyone who's worked with OOXML – it's a minefield of tangled inheritance chains, strict element ordering, and confusing rules. And even if you get that right and follow the rules, PowerPoint may disagree about what counts as valid OOXML and flag your file as corrupted even though it passed your validation checks. It runs the other way too: PowerPoint will happily open files that violate the schema, and many of these divergences are undocumented. Here's an example to illustrate. You create a 100% stacked column chart to show how revenue proportions are evolving. Naturally, you want to add data labels so your audience actually sees how the exact numbers change. You've worked with pie charts before, so you know that PowerPoint lets you add data labels containing the percentage values – a natural choice for a percentage chart. It should be a straightforward XML operation. You locate the data labels element for the chart: