Quickstart
Time to first live screen should be under ten minutes. If it is not, tell us.
- Download the latest DisplayOps image from the portal under Displays → Pair a display.
- Write it to a microSD card with Raspberry Pi Imager. In the advanced options you may preload Wi-Fi; Ethernet needs nothing.
- Insert the card, connect HDMI and power. After about 40 seconds the screen shows a six-character pairing code and a QR code.
- In the portal choose Pair a display, enter the code, and name the screen.
- Assign content. The screen updates within a few seconds.
Content types
- Website: a URL, an optional refresh interval, and optional basic-auth credentials in the URL.
- Image: PNG, JPEG, or WebP. Uploaded once, cached on every device that shows it.
- Video: MP4 (H.264). Loops by default. Cached on the device for offline playback.
- Slideshow: an ordered list of websites and images with a per-item duration.
- Message: large text with foreground and background colours. Useful for overrides and emergencies.
API
Base URL https://app.simpledisplayops.com/api/v1. Authenticate with an API key from Developers in the portal, sent as Authorization: Bearer sdo_…. Everything the portal does, the API does.
# List displays
curl https://app.simpledisplayops.com/api/v1/displays -H "Authorization: Bearer $SDO_KEY"
# Point a display at a URL
curl -X POST https://app.simpledisplayops.com/api/v1/displays/DISPLAY_ID/content \
-H "Authorization: Bearer $SDO_KEY" -H "Content-Type: application/json" \
-d '{"type":"website","url":"https://status.example.com"}'
# Send a command: refresh | restart_player | reboot | screenshot
curl -X POST https://app.simpledisplayops.com/api/v1/displays/DISPLAY_ID/commands \
-H "Authorization: Bearer $SDO_KEY" -H "Content-Type: application/json" \
-d '{"type":"refresh"}' Webhooks
Register a URL under Developers. Events are signed with an HMAC-SHA256 header X-DisplayOps-Signature.
display.online,display.offlinedisplay.health(temperature, storage, under-voltage, browser restarts)display.command.completeddisplay.screenshot
Security model
- Each device receives a unique key pair at pairing time. There is no fleet-wide credential.
- Commands are authenticated, authorised, timestamped, and replay-resistant.
- TLS everywhere. Session secrets for dashboards are encrypted at rest.
- Agent updates are signed and roll back automatically if the new version does not check in.
- No general remote shell. Support diagnostics are delivered as a downloadable bundle.