When to use
Create a new presentation. Returns a freshshareId, one auto-generated share token, and a public shareUrl.
To re-publish to an existing URL, use POST /updateSharedPresentation instead.
Endpoint
Auth
| Header | Value |
|---|---|
X-Process-Manager-Key | cko_… (or cka_…) |
Content-Type | application/json |
presentations:write.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | yes | Display title (shown in the dashboard, not in the share URL) |
html | string | yes | The full HTML document, ≤ 10 MB |
Response (200)
| Field | Type | Description |
|---|---|---|
shareId | UUIDv7 string | Unique ID; appears in the share URL |
tokenId | UUIDv7 string | The auto-created default token’s internal ID |
token | base64url string | The actual share token (384 bits of entropy) |
shareUrl | string | The public URL — give this to recipients |
Examples
curl
Node.js
Python
Errors
| Status | Code | Cause | Fix |
|---|---|---|---|
400 | invalid-argument | html or title missing or not a string | Include both fields, both as strings |
401 | unauthenticated | Missing or invalid API key | Set X-Process-Manager-Key to a valid cko_… |
405 | method-not-allowed | Used GET/PUT/etc. | Use POST |
413 | payload-too-large | HTML > 10 MB | Slim down the deck (inline fewer images, drop unused JS) |
500 | internal | Backend error | Retry with exponential backoff |
Side effects
- HTML is uploaded to private GCS at
shared_presentations/{shareId}/document.html - A Firestore record is created with the auto-generated
defaultshare token - The
apiKeyIdof the calling key is recorded for audit
Next
- POST /updateSharedPresentation — Replace HTML at the same URL.
- GET /listMyPresentationsPublic — List everything you’ve uploaded.