A screen record is what you configured. What the device reports about itself lives next to it: its status, when it last checked in, and its health report. On v4.1 each has its own path. On v4, status, in_sync, and last_ping are fields on /v4/screens. See Versions.
Status
/v4.1/screens/statuses returns 1 row per screen, keyed by screen_id.
curl -s -H "Authorization: Token $API_TOKEN" \
"https://api.screenlyapp.com/api/v4.1/screens/statuses?status=eq.Offline"status takes 1 of 4 values:
| Value | Meaning |
|---|---|
Online | The screen is reachable and has what it should be playing |
Out of sync | The screen is reachable but doesn't yet have what it should be playing |
Offline | The screen hasn't been in touch recently |
Inactive | The screen is disabled |
Online includes a screen with nothing scheduled. An empty playlist doesn't change the status, so to find screens with nothing to play, check their playlists rather than their status.
in_sync is the content half on its own, as a boolean. On v4.1, is_online is the reachability half on its own.
When a screen last checked in
On v4 this is last_ping on the screen. On v4.1 it is updated_at on /v4.1/screens/pings.
It is always a timestamp, never null. A screen starts with its creation time, so a null value doesn't mean "never connected". To find a screen that has never checked in, compare last_ping with the screen's created_at: a screen that has never checked in still carries the time it was created.
Because that starting timestamp is recent, a screen created in the last 4 hours can report Online before the device has ever reached Screenly.
Screen reports
GET /v4.1/screens/reports returns what each player reports about itself, keyed by screen_id. Fields fill in from each player's next report. Some apply only to certain hardware, and a field a player doesn't report is empty.
Storage
| Field | What it holds |
|---|---|
sd_card_health | Errors on a Raspberry Pi's SD card, and whether the card has turned read-only |
smart_disk_data | A S.M.A.R.T. summary of the SSD or NVMe drive on an x86 player, including temperature, power-on hours, and how much of its life is used |
storage_info | The identity of a Raspberry Pi's SD card: name, manufacturer, and date |
disk_usage | Total, used, and free space on the player's data storage, in bytes |
disk_stats | Read and write counters for each disk since the player started |
Hardware
| Field | What it holds |
|---|---|
sensors | Temperature and other sensor readings, such as a Raspberry Pi's chip temperature |
x86_stats | Hardware temperatures on Screenly Player and Screenly Player Max |
mem_info | Total, free, and available memory, in kB |
raspi_rev, raspi_serial | A Raspberry Pi's board revision and serial number |
Software and security
| Field | What it holds |
|---|---|
installed_snaps | Every software package on the player, with its version |
device_model, validation_sets | The ScreenlyOS image a player runs, and the exact package versions it's held to |
secure_boot, full_disk_encryption, mtls_enabled | Whether the player uses secure boot, an encrypted data partition, and a client certificate for its connection to Screenly |
is_wayland | Whether the player draws through the newer display stack |
Display, network, and running state
| Field | What it holds |
|---|---|
display_data | Each connected display's make, model, size, and supported resolutions |
screen_resolution | The resolution content is shown at |
bluetooth | on, off, or unknown. off also covers a player with no Bluetooth at all |
probe_diagnostics | The results of the player's own network checks, refreshed about once a day |
player_uptime | Seconds since the player's content started, which restarts once a day |
local_time | The player's clock when it sent the report |
The report also carries the fields it has had longer, such as local_ip, mac, uptime, load, and client_version. Every field is in the v4.1 API reference.