Skip to content
Hoody.com

The notification server exposes endpoints for retrieving, streaming, dismissing, and clearing notifications generated by applications running inside a display container. Use the GET endpoint to fetch historical notifications, the WebSocket endpoint for real-time push, and the POST/DELETE endpoints to manage dismissal state.

All endpoints are scoped to a single notification container and are reachable at https://{projectId}-{containerId}-n-1.{server}.containers.hoody.com.

Retrieves notifications for one or more specified displays. The display parameter accepts a single ID (for example "1" or ":1"), a comma-separated list (for example "1,:2,3"), or "all" to fetch from every display.

NameInTypeRequiredDescription
displaypathstringYesA single display ID (e.g., “1” or “:1”), a comma-separated list (e.g., “1,:2,3”), or “all” to fetch from all displays
limitqueryintegerNoMaximum number of notifications to return. Default: 100
sincequeryintegerNoUnix timestamp in milliseconds to get notifications after this time
usernamequerystringNoFilter notifications by username
sessionquerystringNoFilter notifications by session ID

This endpoint takes no request body.

{
"success": true,
"data": {
"count": 1,
"displays": ["1"],
"notifications": [
{
"id": 10,
"appname": "Google Chrome",
"summary": "Focus or Open a Window",
"body": "Click to focus the window",
"message": "Focus or Open a Window: Click to focus the window",
"category": "system",
"urgency": "normal",
"display_id": 1,
"timestamp": 1749024932903,
"expire_time": 5000,
"has_icon": true,
"icon_url": "/api/v1/notifications/icons/6_10_1749024932903.png"
}
]
}
}
Terminal window
curl -G "https://67e89abc123def456789abcd-890abcdef12345678901cdef-n-1.node-us.containers.hoody.com/api/v1/notifications/1" \
-H "Authorization: Bearer <token>" \
--data-urlencode "limit=50" \
--data-urlencode "since=1749024000000"

Establishes a WebSocket connection for real-time notification updates. Clients subscribe to one or more displays and receive immediate notifications as they fire, along with periodic heartbeats.

NameInTypeRequiredDescription
displaysquerystringYesComma-separated display IDs to subscribe to (e.g., “1,:2,3”), or “all” to receive notifications from every display.

This endpoint takes no request body.

The server responds with HTTP 101 Switching Protocols to indicate the WebSocket handshake succeeded. No JSON body is returned on the upgrade response; subsequent frames carry notification, heartbeat, and disconnect messages.

WebSocket endpoints cannot be exercised from cURL. Use the SDK below to attach the typed event handlers and then call connect().

Marks notifications as dismissed. Dismissed notifications are filtered from subsequent GET responses. Use the optional displayId field to scope the dismissal to a single display.

This endpoint takes no path, query, or header parameters.

FieldTypeRequiredDescription
notificationIdsarrayYesArray of notification IDs to dismiss
displayIdstringNoOptional display ID to scope the dismissal
{
"notificationIds": [10, 11, 12],
"displayId": "1"
}
{
"success": true,
"message": "3 notification(s) dismissed"
}
Terminal window
curl -X POST "https://67e89abc123def456789abcd-890abcdef12345678901cdef-n-1.node-us.containers.hoody.com/api/v1/notifications/dismiss" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"notificationIds":[10,11,12],"displayId":"1"}'

Clears the dismissed state, making previously dismissed notifications visible again. Optionally scope the clear to a single display with the displayId query parameter.

NameInTypeRequiredDescription
displayIdquerystringNoOptional display ID to scope the clear operation

This endpoint takes no request body.

{
"success": true,
"message": "Dismissed notifications cleared"
}
Terminal window
curl -X DELETE "https://67e89abc123def456789abcd-890abcdef12345678901cdef-n-1.node-us.containers.hoody.com/api/v1/notifications/dismiss?displayId=1" \
-H "Authorization: Bearer <token>"