For the complete documentation index, see llms.txt. This page is also available as Markdown.

Presentation Agent API

Presentation Agent API requires a Pro or Team plan. Learn more about pricing.

The Plus AI Presentation Agent API lets you generate and edit PowerPoint presentations programmatically over HTTP. Instead of calling a single render endpoint, you delegate the work to an autonomous AI agent: you describe what you want in natural language, and the agent plans the deck, writes the content, builds the slides, and returns a finished .pptx (and .pdf).

Working with the agent is a simple two-step flow:

  1. Start a session — send a POST request with your prompt (and any optional files). The API responds immediately with a sessionId and a polling URL.

  2. Get the result — poll the session until its status reaches a terminal state, then download the generated presentation.

Alternatively, you can supply a webhook callback URL when you create the session, and we'll notify you when the result is ready — no polling required.

Highlights

  • Natural-language generation — describe the presentation you want and the agent builds it end to end, from outline to finished slides.

  • Edit existing decks — provide an existing PowerPoint file to have the agent revise, extend, restyle, or translate it rather than starting from scratch.

  • Bring your own content — attach supporting files (spreadsheets, documents, images, and more) and the agent incorporates them into the presentation.

  • Choose your model — select from a range of leading AI models to balance speed, cost, and quality.

  • Asynchronous by design — kick off long-running jobs and either poll for progress or receive a webhook callback when the deck is ready.

  • Polished output — download the result as both PowerPoint (.pptx) and PDF, plus a thumbnail preview.

  • Multilingual — generate or translate presentations in the language of your choice.

Working with files

The Presentation Agent can do more than generate decks from a blank slate. Using the Files API, you can give the agent a starting presentation to work from and attachments to pull content from — so the agent edits and fills in a real deck instead of creating one from scratch. This unlocks a powerful pattern: keep a presentation as a reusable template and have the agent refresh it on a schedule with the latest data. Of course, you can also omit the starting presentation to create something new.

How it works

  1. Upload your files. Send each file to PUT /r/v0/files/upload. Each upload returns a file ID.

  2. Reference them when you start a session. In your POST /r/v0/agent/sessions request:

    • Set pptxFileId to the file ID of the presentation you want the agent to start from and edit.

    • Add any supporting files to attachments as a list of { "fileId": "..." }. The agent reads these and uses their content to fill in or update the deck.

  3. Get the result. Poll the session (or use a webhook callback) and download the updated presentation.

The agent treats pptxFileId as the canvas to edit — preserving your branding, layout, and structure — and treats attachments as the source material to incorporate.

Example: refresh a weekly analytics report

Suppose you maintain a branded "Weekly Performance Review" deck and want to regenerate it every Monday with last week's numbers.

  1. Upload your existing report and this week's data export:

  2. Start a session that updates the report using the new data:

The agent opens your existing report, reads the spreadsheet, updates the relevant slides, and returns a finished deck — ready to download or deliver via your webhook.

More ideas

  • Monthly board deck — keep a board-meeting template and attach the month's financials, product metrics, and a notes doc; have the agent populate each section.

  • Sales proposal from a template — start from your standard pitch deck and attach a customer brief so the agent tailors it to a specific prospect.

  • Translate and localize — provide an existing deck and ask the agent to produce a version in another language while preserving design.

  • Quarterly review from raw data — attach CSV exports and a summary document and have the agent build out the data slides on top of your template.

Authentication

To authenticate with the Presentations API, you must first generate an API key. You can generate an API key here. Note: Only one active API key per user is currently allowed. Once you have an API key, you can authenticate your requests to the presentations api using HTTP Bearer authentication:

Create and start an AI agent session

post

Creates a new agent session, posts the initial prompt, and starts the agent. Returns a polling URL to track progress.

Optionally seeds the session with an existing PowerPoint file (pptxFileId) and/or file attachments (attachments[].fileId). File IDs must reference files owned by the caller's organization (e.g. uploaded via PUT /r/v0/files/upload).

Authorizations
AuthorizationstringRequired

API key issued for your Plus organization, sent as a bearer token.

Body
promptstringRequired

The initial instruction for the agent.

pptxFileIdstringOptional

ID of an existing PowerPoint file (uploaded via the files API) to seed the session with. Must reference a .pptx/PowerPoint file.

languagestringOptional

Target language. Defaults to auto.

Default: auto
callbackUrlstring · uriOptional

HTTPS URL invoked when the session changes state. Must be a public HTTPS address (no localhost/private IPs).

modelstring · enumOptional

The model to use.

Possible values:
Responses
post
/r/v0/agent/sessions

Get the current state of an agent session

get

Returns the current status of an agent session. Poll this endpoint until status reaches a terminal value. When the agent finishes, pdfUrl, pptxUrl, and thumbnailUrl are populated with download URLs.

Authorizations
AuthorizationstringRequired

API key issued for your Plus organization, sent as a bearer token.

Path parameters
sessionIdstringRequired
Responses
200

The current session state.

application/json
sessionIdstringRequired
statusstring · enumRequiredPossible values:
pdfUrlstring · nullableOptional

Download URL for the generated PDF (populated when finished).

pptxUrlstring · nullableOptional

Download URL for the generated PPTX (populated when finished).

thumbnailUrlstring · nullableOptional

Download URL for a thumbnail image (populated when finished).

createdAtstring · date-timeOptional
updatedAtstring · date-timeOptional
get
/r/v0/agent/sessions/{sessionId}

Upload a file

put

Uploads a file as multipart/form-data. The upload is validated and accepted synchronously, then processed asynchronously.

Constraints:

  • The request method must be PUT.

  • Content-Type must be multipart/form-data.

  • Content-Length is required (chunked transfer encoding is not supported).

  • Maximum size is 125 MB.

Authorizations
AuthorizationstringRequired

API key issued for your Plus organization, sent as a bearer token.

Body
filestring · binaryRequired

The file to upload.

Responses
put
/r/v0/files/upload

Last updated

Was this helpful?