For most use cases, the
slideless CLI is easier than calling these endpoints directly. The CLI wraps every operation, handles auth, and offers stable JSON output via --json. This reference is for when you can’t (or don’t want to) use the CLI.Base URL
europe-west1. There is no URL versioning — the base above is the only stable one.
Authentication
Every endpoint (exceptgetSharedPresentation, which is token-based) requires the Authorization header:
See Authentication and API keys for the full story.
Response format
Every CLI-facing endpoint wraps its payload in a consistent envelope: Success:error.nextAction (a machine-readable hint) and error.details (extra structured context).
The public viewer endpoint (getSharedPresentation) is the only exception — it returns raw bytes (HTML, image, video, etc.) because it feeds the share iframe directly.
Status codes
The three-step upload flow
Creating or updating a presentation uses content-addressed storage across three endpoints:POST /precheckAssets— hash every local file, ask the backend which hashes it already has.POST /uploadPresentationAsset— multipart upload, once per missing blob. Hash-verified server-side.POST /commitPresentationVersion— send the manifest, backend writes a new immutable version.
Endpoint index
Upload flow
Discovery + management
Public viewer
Auth
Limits
Plan-dependent. See Presentations → Size and file-count caps for the full table. Free tier summary:CORS
All HTTP endpoints setcors: true — they accept browser requests from any origin. Authorization and Content-Type are allowed headers.
Idempotency
precheckAssetsis idempotent — repeat calls return the samemissingset.uploadPresentationAssetis idempotent — if the blob already exists, the call succeeds and returnssize: 0.commitPresentationVersionis NOT idempotent — each call bumpscurrentVersion.