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
Metadata
Release files for deckmaker 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deckmaker-0.1.1.tar.gz | 87.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deckmaker-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 116.7 kB
Release files / deckmaker-0.1.1.tar.gz
| Download URL | deckmaker-0.1.1.tar.gz |
|---|---|
| Size | 87.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12eb41af4c45dca6d0a9731ced6d2af86900f201e89cbc4cc897c764494603e9
|
|
BLAKE2b-256 checksum How to use checksums |
03a1c5b3baa8e7d62639dd37271c47da0f19d5ff59ca138a7a8b5ed5c019d520
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / deckmaker-0.1.1-py3-none-any.whl
| Download URL | deckmaker-0.1.1-py3-none-any.whl |
|---|---|
| Size | 29.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c70084b2882477df72d86b7677cf46b2a0161d8193cb20d42fe89925f9cdd9a3
|
|
BLAKE2b-256 checksum How to use checksums |
be6d5886648df9f54fb1ce22ccfbd2c926e577f4a20e377c26cc88a6e8bee652
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|