TomorrowOS API Overview
TomorrowOS is a unified API layer for digital signage operating systems. The goal is to give developers, CMS vendors and integrators one clean way to build signage apps, CMS players, widgets and device experiences across different platforms. Instead of every project needing separate logic for each screen OS, TomorrowOS exposes a shared command surface. The CMS talks to devices over WebSocket using dotted method names such asdevice.info.getCapabilities and device.content.setPolicy. Platform details stay inside the player runtime.
How tos is created
In the examples below, tos is a TomorrowOS SDK instance. It comes from constructing the TomorrowOS class exported by @tomorrowos/sdk:
tos.device(deviceId).sendCommand(...)sends a device commandtos.pairing.*handles pairingtos.playlists.*manages playlists and policy publish
tomorrowos, client, etc.). This overview uses tos as a short alias for the SDK instance.
Core API principle
Every TomorrowOS API should follow this principle:Check capability first. Execute safely second. Report clearly third.This means a developer should be able to ask:
Main API domains
Information API
The Information API tells you what the device is, and what it can do. Current methods:device.info.get
Returns basic identity and hardware information about the connected screen or player.
Example:
data:
device.info.getCapabilities
Returns which TomorrowOS device commands are supported on the connected runtime.
This is the capability check step before calling hardware-facing commands such as reboot, screenshot or on/off timer.
Example:
data:
Always call
device.info.getCapabilities before relying on reboot, screenshot, on/off timer or other hardware-facing commands.
Playback API
TomorrowOS does not expose a low-levelplay() RPC for each media item.
Playback is driven by content policy. The CMS publishes playlists; the player applies them and handles images, videos, widgets, schedules and fallbacks.
Example:
setPolicy:
- Images
- Videos
- Widgets / packaged HTML
- Playlist schedules
- Brand fallback
- Offline cache and recovery behaviour
Transition API
The Transition API is not a separate public command today. Transition behaviour lives inside the player when it moves between playlist items afterdevice.content.setPolicy.
It covers:
- Image to image
- Image to video
- Video to image
- Video to video
- Image / video to widget
- Widget back to media
- Playlist handoff and resume after reconnect / reboot
Asset API
The Asset API manages content files on the CMS side and cache behaviour on the device side. CMS apps upload and register media; the player downloads, verifies and activates assets before they appear on screen. Example CMS flow:- Media upload and registration on the CMS
- Absolute URL rewriting when building device policy
- Local cache on the player
- Partial download / failed download handling
- Storage pressure and cleanup
- Atomic activation before visible playback
- Fallback if activation fails
Sync API
The Sync API today focuses on connection continuity rather than multi-screen video walls. It covers pairing, reconnect, resume after reboot, and pushing the latest policy when a device comes back online. Example:- Reconnect after network loss
- Resume after reboot
- Resume after re-pair
- Latest vs snapshot policy push
- Recovery when one screen drops offline
Display API
The Display API handles screen-level controls where supported. Example:setOnOffTimeruses dailyHH:mmtimes (turnOnAt/turnOffAtmust differ)- When active, the panel can mute / unmute on schedule while the device stays connected
device.power.rebootasks the device to reboot and resume afterwards where supported- Display control is often model / firmware dependent — always check
device.info.getCapabilitiesfirst
Network API
The Network API helps understand connectivity and offline behaviour. There is no separatedevice.network.* command set yet. Connectivity is observed through device presence and heartbeat.
Current surface:
- Offline detection
- Reconnect logic
- Content caching
- Playback fallback
- Network health reporting
Telemetry API
The Telemetry API captures a screenshot from the device. Example:data shape:
device.info.getCapabilities first. Screenshot support can vary by runtime and device.
Example full flow
API design rules
TomorrowOS APIs should be:- Simple to read
- Easy to use
- Capability-first
- Honest about limitations
- Safe by default
- Clear when unsupported
- Practical for real signage deployments
- Useful across multiple OS environments
- Flexible enough for CMS vendors and integrators