Cluster Dashboard
Returns comprehensive dashboard data for the cluster including statistics, topology, and health information.
Request
| Property | Value |
|---|---|
| Method | GET |
| URL | /api/cluster/dashboard |
| Content-Type | application/json |
| Authentication | Bearer Token |
Request
curl -X GET "{BASE_URL}/api/cluster/dashboard" \
-H "Authorization: Bearer YOUR_TOKEN"
Response Body
| Code | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized - Invalid or missing token |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
Application Group Stats
| Parameter | Type | Description |
|---|---|---|
data.appGroupStats.origin.total | integer | Total number of origin applications |
data.appGroupStats.origin.groups | array | Origin apps by group |
data.appGroupStats.origin.groups[].name | string | Group name |
data.appGroupStats.origin.groups[].limit | integer | Application limit for this group |
data.appGroupStats.edge.total | integer | Total number of edge applications |
data.appGroupStats.edge.groups | array | Edge apps by group |
data.appGroupStats.transcode.total | integer | Total number of transcode applications |
data.appGroupStats.transcode.groups | array | Transcode apps by group |
data.appGroupStats.feed.total | integer | Total number of feed applications |
data.appGroupStats.feed.groups | array | Feed apps by group |
data.appGroupStats.sink.total | integer | Total number of sink applications |
data.appGroupStats.sink.groups | array | Sink apps by group |
Viewers Stats
| Parameter | Type | Description |
|---|---|---|
data.viewersStats.total.value | integer | Current total viewer count |
data.viewersStats.total.limit | integer | null | Total viewer limit (null = unlimited) |
data.viewersStats.groups | array | Viewer stats by group |
data.viewersStats.groups[].name | string | Group name |
data.viewersStats.groups[].value | integer | Current viewer count in group |
data.viewersStats.groups[].limit | integer | null | Viewer limit for group |
data.viewersStats.viewerCountHistory.current | integer | Current viewer count |
data.viewersStats.viewerCountHistory.average | integer | Average viewer count |
data.viewersStats.viewerCountHistory.max | integer | Maximum viewer count |
data.viewersStats.viewerCountHistory.data | array | Historical data points |
data.viewersStats.viewerCountHistory.data[].timestamp | integer | Data point timestamp (Unix ms) |
data.viewersStats.viewerCountHistory.data[].value | integer | Viewer count at timestamp |
Stream Stats
| Parameter | Type | Description |
|---|---|---|
data.streamStats.total.value | integer | Current total stream count |
data.streamStats.total.limit | integer|null | Total stream limit (null = unlimited) |
data.streamStats.groups | array | Stream stats by group |
data.streamStats.groups[].name | string | Group name |
data.streamStats.groups[].value | integer | Current stream count in group |
data.streamStats.groups[].limit | integer|null | Stream limit for group |
data.streamStats.streamCountHistory.current | integer | Current stream count |
data.streamStats.streamCountHistory.average | integer | Average stream count |
data.streamStats.streamCountHistory.max | integer | Maximum stream count |
data.streamStats.streamCountHistory.data | array | Historical data points |
Incoming Traffic
| Parameter | Type | Description |
|---|---|---|
data.incomingTraffic.total.value | integer | Current incoming bandwidth (bytes/sec) |
data.incomingTraffic.total.limit | integer|null | Bandwidth limit (null = unlimited) |
data.incomingTraffic.totalBytes | integer | Total incoming bytes since start |
data.incomingTraffic.groups | array | Incoming traffic by group |
data.incomingTraffic.inBandwidthHistory.current | integer | Current incoming bandwidth |
data.incomingTraffic.inBandwidthHistory.average | integer | Average incoming bandwidth |
data.incomingTraffic.inBandwidthHistory.max | integer | Maximum incoming bandwidth |
data.incomingTraffic.inBandwidthHistory.data | array | Historical data points |
Outgoing Traffic
| Parameter | Type | Description |
|---|---|---|
data.outgoingTraffic.total.value | integer | Current outgoing bandwidth (bytes/sec) |
data.outgoingTraffic.total.limit | integer|null | Bandwidth limit (null = unlimited) |
data.outgoingTraffic.totalBytes | integer | Total outgoing bytes since start |
data.outgoingTraffic.groups | array | Outgoing traffic by group |
data.outgoingTraffic.outBandwidthHistory.current | integer | Current outgoing bandwidth |
data.outgoingTraffic.outBandwidthHistory.average | integer | Average outgoing bandwidth |
data.outgoingTraffic.outBandwidthHistory.max | integer | Maximum outgoing bandwidth |
data.outgoingTraffic.outBandwidthHistory.data | array | Historical data points |
Transcode Stats
| Parameter | Type | Description |
|---|---|---|
data.transcodeStats.total.value | integer | Current active transcode tasks |
data.transcodeStats.total.limit | integer|null | Transcode task limit |
data.transcodeStats.streams.total | integer | Total streams |
data.transcodeStats.streams.transcoded | integer | Number of transcoded streams |
data.transcodeStats.groups | array | Transcode stats by group |
Health Summaries
| Parameter | Type | Description |
|---|---|---|
data.streamHealthSummary.labels | string[] | Health grade labels |
data.streamHealthSummary.series | integer[] | Stream counts per health grade |
data.viewerHealthSummary.labels | string[] | Health grade labels |
data.viewerHealthSummary.series | integer[] | Viewer counts per health grade |
Topology
| Parameter | Type | Description |
|---|---|---|
data.topology | array | List of servers in the cluster |
data.topology[].serverName | string | Server display name |
data.topology[].hostName | string | Server hostname |
data.topology[].groupName | string | Server group name |
data.topology[].clusterManager | boolean | Is this server a cluster manager |
data.topology[].serverStats.cpuUsage | number | CPU usage percentage (0-100) |
data.topology[].serverStats.memUsage | number | Memory usage percentage (0-100) |
data.topology[].serverStats.inBandwidth.usage | integer | Incoming bandwidth (bytes/sec) |
data.topology[].serverStats.inBandwidth.cap | integer | null | Incoming bandwidth cap |
data.topology[].serverStats.outBandwidth.usage | integer | Outgoing bandwidth (bytes/sec) |
data.topology[].serverStats.outBandwidth.cap | integer | null | Outgoing bandwidth cap |
Topology Applications
| Parameter | Type | Description |
|---|---|---|
data.topology[].applications | array | Applications on this server |
data.topology[].applications[].id | string | Application ID |
data.topology[].applications[].name | string | Application name |
data.topology[].applications[].type | string | Application type (origin, edge, transcode) |
data.topology[].applications[].streams.count | integer | Current stream count |
data.topology[].applications[].streams.cap | integer | null | Stream limit |
data.topology[].applications[].viewers.count | integer | Current viewer count |
data.topology[].applications[].viewers.cap | integer | null | Viewer limit |
data.topology[].applications[].bandwidth.inBandwidth | integer | Incoming bandwidth (bytes/sec) |
data.topology[].applications[].bandwidth.outBandwidth | integer | Outgoing bandwidth (bytes/sec) |
data.topology[].applications[].upLinks | array | Upstream connections |
data.topology[].applications[].downLinks | array | Downstream connections |
Metadata
| Parameter | Type | Description |
|---|---|---|
meta.executionTime | integer | Request processing time in milliseconds |
meta.generatedAt | integer | Response generation timestamp (Unix timestamp in ms) |
Successful Response (200)
{
"data": {
"appGroupStats": {
"origin": { "total": 1, "groups": [{ "name": "Premise", "limit": 1 }] },
"edge": { "total": 1, "groups": [{ "name": "Premise", "limit": 1 }] },
"transcode": { "total": 1, "groups": [{ "name": "Premise", "limit": 1 }] },
"feed": { "total": 0, "groups": [] },
"sink": { "total": 0, "groups": [] }
},
"viewersStats": {
"total": { "limit": null, "value": 0 },
"groups": [{ "name": "Premise", "limit": null, "value": 0 }],
"viewerCountHistory": {
"current": 0,
"average": 0,
"max": 0,
"data": [{ "timestamp": 1767345218011, "value": 0 }]
}
},
"streamStats": {
"total": { "limit": 100, "value": 0 },
"groups": [{ "name": "Premise", "limit": 100, "value": 0 }],
"streamCountHistory": {
"current": 0,
"average": 0,
"max": 0,
"data": [{ "timestamp": 1767345218011, "value": 0 }]
}
},
"incomingTraffic": {
"total": { "limit": null, "value": 0 },
"totalBytes": 136418989215,
"groups": [{ "name": "Premise", "limit": null, "value": 0 }],
"inBandwidthHistory": {
"current": 0,
"average": 0,
"max": 0,
"data": [{ "timestamp": 1767345218011, "value": 0 }]
}
},
"outgoingTraffic": {
"total": { "limit": null, "value": 0 },
"totalBytes": 9520258759,
"groups": [{ "name": "Premise", "limit": null, "value": 0 }],
"outBandwidthHistory": {
"current": 0,
"average": 0,
"max": 0,
"data": [{ "timestamp": 1767345218011, "value": 0 }]
}
},
"transcodeStats": {
"total": { "limit": 5, "value": 0 },
"streams": { "total": 0, "transcoded": 0 },
"groups": [{ "name": "Premise", "limit": 5, "value": 0 }]
},
"streamHealthSummary": {
"labels": [],
"series": []
},
"viewerHealthSummary": {
"labels": [],
"series": []
},
"topology": [
{
"serverName": "Server 2",
"hostName": "stormdev2.web-anatomy.com",
"groupName": "Premise",
"clusterManager": true,
"serverStats": {
"cpuUsage": 0.09,
"memUsage": 1.37,
"inBandwidth": { "cap": null, "usage": 0 },
"outBandwidth": { "cap": null, "usage": 0 }
},
"applications": [
{
"id": "c_8m9jynj8mjr50qdn",
"name": "edge",
"type": "edge",
"streams": { "cap": 1, "count": 0 },
"viewers": { "cap": null, "count": 0 },
"bandwidth": { "inBandwidth": 0, "outBandwidth": 0 },
"upLinks": [],
"downLinks": []
}
]
}
]
},
"meta": {
"executionTime": 1,
"generatedAt": 1767345225984
}
}
Error Response (4xx/5xx)
| Parameter | Type | Description |
|---|---|---|
message | string | Human-readable error message |
{
"message": "Error message"
}
Support Needed?
Create a free ticket and our support team will provide you necessary assistance.