Our most powerful AI
Use Alai’s latest agentic presentation workflow, with explicit model choice when you need it.
Any design system
Generate against any published design system available to your account—not only a predefined theme.
Precise, iterative control
Target one slide or revise the whole deck, attach brand assets, and protect edits with commit-based concurrency.
Production-ready output
Export the generated artifact to PDF, editable PowerPoint, or PNG files.
Separate from Classic & Creative Slides
The Modern Slides API is a separate contract under/api/modern/v1. It does not change the existing /api/v1 Classic & Creative Slides endpoints, request shapes, or generation behavior. Both APIs use the same Bearer authentication so an existing Alai API key can authenticate either API.
Choose Modern Slides when visual fidelity, design-system control, model choice, and natural-language iteration matter most. Continue using the Classic & Creative Slides API when you depend on its existing theme, variant, transcript, or per-slide workflows.
Base URL and authentication
End-to-end workflow
1
Discover your options
Call
GET /models and GET /design-systems. A presentation-format artifact requires a published design system.2
Create the presentation
Call
POST /presentations with a title, canvas, and design_system_id. This creates the container immediately; it does not start AI generation.3
Add brand or content assets
Optionally upload logos, reference images, content images, or backgrounds with
POST /presentations/{id}/assets.4
Generate with your chosen model
Call
POST /presentations/{id}/generate. The response is an asynchronous operation; poll GET /operations/{operation_id} until it succeeds or fails.5
Revise and export
Submit natural-language edits, then request PDF, PPTX, or PNG exports. Edits and exports use the same operation polling flow.
Quick example
Asynchronous operations
Generate, edit, and export requests return202 Accepted with an operation whose status is queued, running, succeeded, failed, or cancelled. Poll the operation endpoint every five seconds. The response includes structured progress while work is running, a result on success, or a structured error with code and message on failure.
Generation and edit requests check credit capacity before they are queued. Insufficient capacity returns 402 Payment Required immediately with the required and available credit counts. A successful top-up is reflected immediately even while Stripe’s aggregate meter catches up.
Cancel queued or running work with POST /operations/{operation_id}/cancel. Cancellation is idempotent once the operation is cancelled; an operation that already succeeded or failed returns 409 Conflict.
Validation errors return 422 Unprocessable Entity with sanitized field, message, and type values. They never include request inputs, source file paths, or server line numbers.
Use an idempotency_key for safely retrying mutating requests. Repeating the same request returns the original operation; reusing the key for different input returns 409 Conflict. Idempotency protection is best-effort for exactly concurrent identical requests.
For edit and export operations, base_commit_sha provides optimistic concurrency control. Pass the latest value from GET /presentations/{id} to prevent a stale client from modifying or exporting an unexpected revision.