Skip to Content
API referencePresentations

Presentations

A Presentation is one rendered frame for one display. A single Content can produce several — one per display it routed to.

retrieve()

const presentation = await inklet.presentations.retrieve("presentation_123", { format: "png", });
retrieve( presentationId: string, options?: { format?: "png" | "raw2" | "raw4" }, ): Promise<Presentation>

Omitting format returns the Presentation without asking for a particular rendition. A format other than the three throws ConfigurationError.

Formats

FormatWhat it is
pngStandard image. Use this for previews, dashboards, and debugging.
raw22-bit packed buffer for the panel.
raw44-bit packed buffer, for panels with more levels.

Check display.capabilities.supportedOutputFormats before requesting a raw format — not every panel produces every one.

The Presentation type

interface Presentation { id: string; displayId: string; contentIds: readonly string[]; mode: "auto" | "manual" | "hardcode" | ""; state: "preparing" | "queued" | "published" | "confirmed" | "expired" | "failed"; image: PresentationImage | null; failure: PresentationProblem | null; createdAt: string; updatedAt: string; }
interface PresentationImage { url: string; format: "png" | "raw2" | "raw4"; width: number; height: number; expiresAt: string; updatedAt: string; }

image.url is temporary — expiresAt says when it stops working. Download the bytes if you need to keep them; do not store the URL.

image is null while the Presentation is still preparing. See Lifecycle for the state machine.

Failures

interface PresentationProblem { code: string; message: string; stage: string | null; retryable: boolean; assetIndex: number | null; }

retryable tells you whether pushing the same content again is worth trying. assetIndex points at the specific asset that caused it, when one did.

if (presentation.state === "failed" && presentation.failure) { const { code, message, retryable, assetIndex } = presentation.failure; console.error(`${code}: ${message}`); if (assetIndex !== null) console.error(`asset ${assetIndex} is at fault`); if (retryable) await retryLater(); }

The same shape appears in content.processing.error and content.processing.warnings.

Downloading a frame

const presentation = await inklet.presentations.retrieve(id, { format: "png" }); if (presentation.image) { const response = await fetch(presentation.image.url); const bytes = Buffer.from(await response.arrayBuffer()); await writeFile(`${presentation.id}.png`, bytes); }

This is a plain fetch — image URLs are pre-authorized and take no Inklet credentials.

Last updated on