Skip to main content
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

All endpoints are Cloud Functions in europe-west1. There is no URL versioning — the base above is the only stable one.

Authentication

Every endpoint (except getSharedPresentation, which is token-based) requires the Authorization header:
Two key formats are accepted: See Authentication and API keys for the full story.

Response format

Every CLI-facing endpoint wraps its payload in a consistent envelope: Success:
Error:
Some errors carry 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:
  1. POST /precheckAssets — hash every local file, ask the backend which hashes it already has.
  2. POST /uploadPresentationAsset — multipart upload, once per missing blob. Hash-verified server-side.
  3. POST /commitPresentationVersion — send the manifest, backend writes a new immutable version.
Unchanged blobs across versions dedupe automatically — updates transfer only what actually changed.

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 set cors: true — they accept browser requests from any origin. Authorization and Content-Type are allowed headers.

Idempotency

  • precheckAssets is idempotent — repeat calls return the same missing set.
  • uploadPresentationAsset is idempotent — if the blob already exists, the call succeeds and returns size: 0.
  • commitPresentationVersion is NOT idempotent — each call bumps currentVersion.