PresentationsAI CLI
Create, inspect, and download PresentationsAI decks from a terminal or Python. The package includes a typed Python client for the external Deck API and a retry-safe CLI for production workflows.
Install
Install the command in an isolated environment with uv (recommended) or pipx:
uv tool install deckmaker
# or: pipx install deckmaker
deckmaker --version
Upgrade later with deckmaker update or uv tool upgrade deckmaker.
Authenticate
Create an API key in workspace API-key settings, then validate and save it in your operating system credential store:
deckmaker auth login
deckmaker auth status
The prompt hides the key. The profile file contains only the API URL and environment-variable name; the key itself is stored by macOS Keychain, Windows Credential Locker, or the configured Linux keyring. To use a non-production API environment:
deckmaker auth login development \
--base-url https://your-api-origin.example/api/v1 \
--api-key-env PRES_API_KEY
Credential precedence is --api-key, the profile's environment variable, then the OS credential
store. In CI, use a masked secret rather than an interactive login:
export PRESENTATIONSAI_API_KEY="..."
export PRESENTATIONSAI_BASE_URL="https://api.presentations.ai/api/v1"
deckmaker auth status
Remove the locally stored key with deckmaker auth logout. Add --revoke to permanently
revoke the key on the server before removing it. API keys can also be created and rotated from the
URL printed by deckmaker auth keys.
Create and download a deck
Generate an outline, review its plain JSON, and create a deck from the approved structure:
deckmaker create outline \
"Create a six-slide board update grounded in the source" \
--file ./quarterly-review.pdf \
--slides 6 \
--output ./reviewed-outline.json
${EDITOR:-vi} ./reviewed-outline.json
deckmaker create deck \
--deck-title "Quarterly customer review" \
--outline ./reviewed-outline.json \
--request-id quarterly-review-v1 \
--format pptx \
--output ./quarterly-review.pptx
Deck generation waits for completion by default. --no-wait returns after acceptance; resume with
deckmaker get status REQUEST_ID. Prompt and source workflows target 10 slides by default.
Use --slides 6, --slides 8-12, or --slides auto to change that. An authored --outline
retains its exact slide list and cannot be combined with --slides.
Inspect and manage existing decks:
deckmaker list decks
deckmaker get deck DECK_ID
deckmaker get deck DECK_ID status
deckmaker get deck DECK_ID outline
deckmaker get deck DECK_ID pptx --output ./deck.pptx
deckmaker delete deck DECK_ID --yes
The default get deck output is the viewer link. pptx, pdf, and image download the newest
existing artifact; reads never queue a new export.
Typed Python client
The distribution includes a py.typed marker, so type checkers understand the public models:
import os
from deckmaker.client import PresentationsAIClient
from deckmaker.models import CreateDeckRequest
with PresentationsAIClient(
api_key=os.environ["PRESENTATIONSAI_API_KEY"],
base_url="https://api.presentations.ai/api/v1",
) as client:
identity = client.get_current_principal()
created = client.create_deck(
CreateDeckRequest(deck_title="Board update", prompt="Summarize the quarter"),
request_id="board-update-2026-q3-v1",
)
finished = client.wait_for_request(created.request_id, timeout=600)
print(identity.email, finished.deck_id)
Safe retries and output
When --request-id is omitted, the CLI derives a stable ID from the logical request. Uploaded file
IDs are cached by content digest, so retrying does not silently change the server fingerprint. Pass
--new only when you intentionally want another deck from the same input.
Retry-state files contain identifiers and SHA-256 digests only, use owner-only permissions, and are
isolated by API environment and credential. API keys and source contents are never stored there.
Use --json for structured output, --quiet to suppress progress, and
PRESENTATIONSAI_STATE_DIR to relocate retry state in CI.
Help and issue reports
Run deckmaker report-issue for the official support route and a safe diagnostic summary.
Send problems to support@presentations.ai. Include the CLI
version, Python version, command shape, error code, and trace ID when available. Never include API
keys or confidential source files.
API overview: presentations.ai/solutions/api
License
MIT
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 deckmaker-0.1.1.tar.gz.
File metadata
- Download URL: deckmaker-0.1.1.tar.gz
- Upload date:
- Size: 87.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12eb41af4c45dca6d0a9731ced6d2af86900f201e89cbc4cc897c764494603e9
|
|
| MD5 |
a85850d6be974b67147ed7b2a8ccc3c1
|
|
| BLAKE2b-256 |
03a1c5b3baa8e7d62639dd37271c47da0f19d5ff59ca138a7a8b5ed5c019d520
|
File details
Details for the file deckmaker-0.1.1-py3-none-any.whl.
File metadata
- Download URL: deckmaker-0.1.1-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c70084b2882477df72d86b7677cf46b2a0161d8193cb20d42fe89925f9cdd9a3
|
|
| MD5 |
ea173fda73ad3834809ee49a7918afdd
|
|
| BLAKE2b-256 |
be6d5886648df9f54fb1ce22ccfbd2c926e577f4a20e377c26cc88a6e8bee652
|