Skip to Content

Manual Push

Use Manual when you know the room but still want Inklet to set the type. The asset pipeline is identical to Auto — links are fetched, content is summarised, layout is generated — only the routing decision moves to you.

import { readFile } from "node:fs/promises"; const result = await inklet.push.manual({ displayId: "display_123", title: "This week's trend", assets: [ inklet.assets.image({ data: await readFile("chart.png"), filename: "chart.png", contentType: "image/png", }), inklet.assets.text("Orders are up in the north region."), ], });

Signature

inklet.push.manual(input: ManualPushInput): Promise<ManualPushResult> interface ManualPushInput { displayId: string; assets: readonly InkletAsset[]; title?: string; intent?: string; idempotencyKey?: string; }

Finding the display id

const page = await inklet.displays.list({ limit: 50 }); const kitchen = page.items.find((display) => display.tags.includes("kitchen"), ); if (kitchen) { await inklet.push.manual({ displayId: kitchen.id, assets: [inklet.assets.text("Dinner: 7pm")], }); }

Displays carry both a name and an optional nickname, plus tags — any of which can serve as your lookup key. See Displays.

Check display.capabilities before sending format-sensitive content. A panel declares its pixelWidth, pixelHeight, colorMode, and the image content types it accepts.

Errors specific to Manual

ConditionError
displayId missing or blankConfigurationError — “Manual Push requires displayId.”
assets emptyConfigurationError — “Manual Push requires at least one Asset.”
Display id does not existNotFoundError (from the backend)
Token cannot reach that displayPermissionDeniedError

The first two throw locally; the last two come back from the API.

Last updated on