Skip to navigation

Queue a saved-revision presentation export

Required scopes: presentation.export.

Captures an immutable saved-revision document and pins referenced media. Requires presentation.export only; asset.get and presentation.get are not required. Revision conflict returns 409; invalid slide/format returns 422; nonportable empty decks return 409. Formats: PDF, self-contained HTML ZIP, PNG/JPEG of one selected slide, portable bibleit ZIP. Portable export does not require Node/Chromium; HTML requires Node; PDF/images require Node and Chromium. Rendering errors are asynchronous safe job error codes, never paths/logs. Limits: 8 queued/running jobs globally, 2 per organization; at most 2 workers globally and 1 per organization; busy returns 409. Captured assets total at most 384 MiB; output at most 512 MiB. Initial and terminal retention ten minutes; worker lease five minutes. Expired jobs and files are cleaned up. Does not publish or change the deck. Optional Idempotency-Key supports 24-hour replay. Poll Location after Retry-After seconds. Optional Idempotency-Key atomically records a successful creation for 24-hour replay; current authorization is rechecked. Changed payload or original If-Match returns 409 idempotency_conflict. Replay precedes stale-version and quota evaluation. Replayed export jobs retain their original status/expiry; poll Location for current status and use a new key for a replacement expired job.

Response headers:

  • Cache-Control (202).
  • Location (202): Requester-private status resource URL.
  • Retry-After (202).

Authentication

AuthorizationBearer

Organization-owned service token. Issue the initial token in organization credential settings. Scopes are documented per operation via x-required-scopes; they are not OAuth scopes.

Path parameters

presentation_idstringRequiredformat: "uuid"

Organization-owned presentation UUID. Foreign decks return 404.

Headers

Idempotency-KeystringOptionalformat: "^[A-Za-z0-9._:-]{1,128}$"1-128 characters

Optional case-sensitive retry key, retained 24 hours from successful commit. Scoped to credential principal (stable service-token ID; personal bt_ credential; delegated OAuth grant), account and concrete method/path. Payload, If-Match, query string and Content-Type must match. JSON object key order is ignored; queue reference casing/defaults are normalized; raw upload/import bytes are hashed. Replays retain original success body, Location and ETag with a fresh X-Request-Id, after current authority/ownership/processing/library checks. Same scope/key with changed input:409 idempotency_conflict. Concurrent requests serialize; a contended retry lock can return 409 idempotency_in_progress; bounded database waits can return 503. Errors are not recorded. After expiry, a key is treated as new; original resource/job lifetime is unchanged. No key means no retry guarantee.

Request

This endpoint expects an object.
objectRequired
OR
objectRequired

Response headers

X-Request-IdstringOptional
Cache-Control"no-store"Optional
LocationstringOptional

Requester-private status resource URL.

Retry-AfterintegerOptional

Response

Successful operation.
idstringformat: "^[a-f0-9]{32}$"
presentation_idstringformat: "uuid"
organization_idstringformat: "uuid"
revisioninteger0-2147483647
formatenum
Allowed values:
statusenum
Allowed values:
errorenum
Allowed values:
bytesinteger or null0-536870912
created_atinteger>=0
expires_atinteger>=0
download_urlstring or null
Relative POST downloads URL, available only when completed. Requires the requesting credential and current presentation.export scope. Never a public URL.

Errors

401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
422
Unprocessable Entity Error
429
Too Many Requests Error
503
Service Unavailable Error