Python client for the Presentations.AI REST API. Create, transform, and manage presentations programmatically.
Project description
presentations-ai
Python client for the Presentations.AI REST API. Create, transform, and manage presentations programmatically.
Installation
pip install presentations-ai
For Claude-powered presentation creation:
pip install presentations-ai[cloudy]
Quick start
from presentations_ai import PresentationsAI
client = PresentationsAI(api_key="pai_...")
result = client.create_from_topic(
topic="Series B Pitch: AI-Powered Design Platform",
export_type="pptx",
slide_count=12,
)
print(result.docurl) # https://app.presentations.ai/view/...
Async support
from presentations_ai import AsyncPresentationsAI
async with AsyncPresentationsAI(api_key="pai_...") as client:
result = await client.create_from_topic(
topic="Q4 Product Roadmap",
export_type="pptx",
)
API methods
| Method | Description |
|---|---|
create_from_topic() |
Generate a presentation from a topic description |
create_from_file() |
Convert a file (PDF, DOCX, PPTX) into a presentation |
create_single_slide() |
Generate a single slide |
create_from_content() |
Build from structured slide content (title + body per slide) |
create_from_raw_content() |
Transform raw text into slides |
update_slides() |
Update slides in an existing presentation |
check_job_status() |
Check the status of an async job |
Cloudy runtime (Claude + MCP)
Create presentations with natural language using Claude:
from presentations_ai.cloudy import CloudyRuntime
cloudy = CloudyRuntime(anthropic_api_key="sk-ant-...")
response = cloudy.chat(
"Create a 12-slide investor pitch deck for an AI-powered design platform",
presentations_api_key="pai_...",
)
print(response.text) # Claude's natural language response
print(response.presentation_url) # https://app.presentations.ai/view/...
Configuration
client = PresentationsAI(
api_key="pai_...", # or set PRESENTATIONS_AI_API_KEY env var
base_url="...", # default: https://developers.presentations.ai
timeout_ms=60_000, # default: 60 seconds
max_retries=3, # default: 3 retries with exponential backoff
)
Error handling
from presentations_ai import PresentationsAI, AuthenticationError, RateLimitError
try:
result = client.create_from_topic(topic="...", export_type="pptx")
except AuthenticationError as e:
print(e.code) # "API_UNAUTHORIZED"
print(e.remediation) # "Verify your API key..."
except RateLimitError:
print("Too many requests, wait and retry")
Polling async jobs
from presentations_ai import PresentationsAI, poll_until_complete
client = PresentationsAI(api_key="pai_...")
job = client.create_from_topic(topic="...", export_type="pptx")
if hasattr(job, "job_id"):
result = poll_until_complete(client, job.job_id)
print(result.docurl)
Requirements
- Python >= 3.10
- Presentations.AI API key
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file presentations_ai-0.1.0.tar.gz.
File metadata
- Download URL: presentations_ai-0.1.0.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c12fb164b610503f0c9c5d1d0abcc4ac965cbaaa4ced1e160a9ebc8578279f7
|
|
| MD5 |
7f526dea1cd35bedd62e0d3481a61098
|
|
| BLAKE2b-256 |
539ef2f71dd89b25050f9f9733174ce8e9196290f139cab965bb77f26e2e552b
|
File details
Details for the file presentations_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: presentations_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c60a70b11ddbf93ae65b2c1c523aff9618ad14b1628368072b1d2605e83b748
|
|
| MD5 |
106e37e3062f2fa3ecde9794e5d55b32
|
|
| BLAKE2b-256 |
ab2ff5395c9910f67cb3d017a6cdabe3dacce30a95c519f6d967286cfc550484
|