Skip to navigation

Presentations and files

Create a presentation in its organization, then save a validated document with the presentation ETag in If-Match. Saving advances its saved revision and never publishes to a Live. Publish explicitly through the Live display resource with the presentation ID, exact saved revision and current Live ETag. Publishing needs presentation.present and live.update, in the same workspace. A later save or source deletion does not silently replace an existing immutable Live snapshot.

Upload raw image/video bytes to a presentation’s /assets?kind=image or video resource with asset.create and presentation.update. Supply exact Content-Length and identity encoding; do not send multipart or base64 JSON. Images are limited to 10 MiB and videos to 64 MiB, with format, dimension and codec validation. The returned asset URL remains bearer-protected. Staged assets expire after 24 hours unless retained by a saved document. Asset reads support one byte range.

Import a self-contained .bibleit ZIP through the organization’s /presentation-imports collection. Imports require presentation.import, presentation.create, presentation.update and asset.create. They validate paths, checksums, media and document bounds, allocate fresh IDs, commit atomically and never publish. The compressed limit is 512 MiB; expanded media and manifest limits also apply. A different key does not bypass duplicate bundle detection.

Exports are asynchronous saved-revision jobs. Create one under the presentation’s /exports collection with presentation.export, then poll its Location after Retry-After. Jobs are requester-private; formats are portable .bibleit, PDF, HTML ZIP, PNG and JPEG. PNG/JPEG select one slide. Rendering availability depends on the server’s renderer. Job failures return safe error codes, never server paths.

Download a completed export by POSTing {} to its /downloads resource. The stream consumes the job once. GET/HEAD do not consume; ranges and resume are not supported. A lost successful download requires a new export with a new creation key. A replay of export creation returns its original response and expiry; it does not regenerate a consumed or expired file. Jobs have short retention, so download promptly. No export URL is public.