Skip to Content

Displays

inklet.displays is read-only. Displays are bound to your account through the Portal or the mobile app; the SDK observes them.

list()

const page = await inklet.displays.list({ limit: 20 });
list(options?: ListDisplaysOptions): Promise<DisplayPage> interface ListDisplaysOptions { cursor?: string; limit?: number; // integer, 1–50 }

Returns a cursor page:

interface DisplayPage { items: readonly Display[]; nextCursor: string | null; hasMore: boolean; }

Paging through everything:

let cursor: string | undefined; const all = []; do { const page = await inklet.displays.list({ cursor, limit: 50 }); all.push(...page.items); cursor = page.nextCursor ?? undefined; } while (cursor);

A limit outside 1–50, or a non-integer, throws ConfigurationError locally.

retrieve()

const display = await inklet.displays.retrieve("display_123");

Throws NotFoundError if the id is unknown, and ConfigurationError if the id is not a non-empty string.

listQueue()

What is waiting for a display, optionally within a time range:

const queue = await inklet.displays.listQueue(display.id, { from: new Date("2026-08-01T00:00:00Z"), to: new Date(), limit: 20, });
listQueue(displayId: string, options?: ListDisplayQueueOptions): Promise<DisplayQueuePage> interface ListDisplayQueueOptions { cursor?: string; limit?: number; from?: string | Date; to?: string | Date; }

from and to accept a Date or anything new Date() parses; both are sent as ISO strings. An unparseable value, or to earlier than from, throws ConfigurationError.

Each item:

interface DisplayQueueItem { id: string; displayId: string; contentIds: readonly string[]; mode: "auto" | "manual" | "hardcode" | ""; state: PresentationState; createdAt: string; updatedAt: string; }

current()

The confirmed Presentation a display is showing, or null:

const current = await inklet.displays.current(display.id, { format: "png" }); if (current?.image) { console.log(current.image.url); } else { console.log("nothing confirmed yet"); }
current(displayId: string, options?: { format?: "png" | "raw2" | "raw4" }): Promise<Presentation | null>

null is a normal answer, not an error — a display that has never confirmed a frame has no current Presentation. Handle it before reading .image.

The Display type

interface Display { id: string; hardwareId: string; thingName: string; name: string; nickname: string | null; firmware: string | null; batteryPercent: number | null; online: boolean; lastSeenAt: string | null; stateUpdatedAt: string | null; boundAt: string | null; tags: readonly string[]; syncIntervalMinutes: number | null; nextSyncAt: string | null; currentPresentationId: string | null; currentPresentationUpdatedAt: string | null; pendingPresentationId: string | null; capabilities: DisplayCapabilities; }
FieldNotes
name / nicknamename is the bound device name; nickname is user-set and may be null.
tagsFree-form labels — a practical routing key for Manual pushes.
onlineWhether the panel is currently reachable.
syncIntervalMinutesHow often it wakes to ask for work.
nextSyncAtWhen to expect the next pickup.
pendingPresentationIdHanded over but not yet confirmed.

Capabilities

interface DisplayCapabilities { pixelWidth: number; pixelHeight: number; orientation: string; colorMode: string; supportedImageContentTypes: readonly string[]; supportedOutputFormats: readonly ("png" | "raw2" | "raw4")[]; }

Read these before sending format-sensitive content — particularly for Hardcode pushes, where you control the pixels.

Last updated on