Get devices network metrics
/api/v1/integrations/devices/network/{resource}DevicesReturns network time-series metrics for several devices at once (up to 100 per request). For a single device you can also use Get device network metrics, which returns a flat list of rows. The same route handles five resources; choose one via the resource path segment: latency, packet-loss, jitter, metrics, or lte.
Pass the devices as serial_numbers (comma-separated; a single serial number works too). The account is resolved from the Bearer token and every device must belong to that account; if any device is not found, the whole request fails with 400 and no metrics are returned.
The available history depends on the metrics store enabled on the platform:
- Extended history:
intervalor astart/endrange, up to 30 days. Default window: last 24 hours. - Standard history:
intervalonly, up to 12 hours. Default window: last 12 hours. Sendingstart/endreturns 400.
Validation errors (bad serial_numbers, interval, start/end, time_bucket, or unknown query parameters) return 400 with success: false, a text message describing the error, and request_id when available.
Bearer access tokenapplication/jsonPath parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
resource | string | Yes | Metric family to query. Must be exactly one of the values in the table below. |
resource values
| resource | Description |
|---|---|
latency | Average, minimum and maximum latency per time bucket. |
packet-loss | Average, minimum and maximum packet loss per time bucket. |
jitter | Average jitter per time bucket: the mean absolute difference between consecutive latency samples of the same interface and probe target. |
metrics | Latency, packet loss and jitter together in one row per time bucket. |
lte | LTE radio metrics per time bucket: RSSI (dBm) and CSQ (0–30), using the same scaling as the portal historical metrics. |
Any other resource value returns 404 with success: false and a message listing the allowed values (latency, packet-loss, jitter, metrics, lte).
Query parameters
Use either interval or start/end. When neither is sent, the last 24 hours (extended history) or 12 hours (standard history) are returned.
| Parameter | Type | Required | Description |
|---|---|---|---|
serial_numbers | string | Yes | Comma-separated device serial numbers, e.g. ABC123456,DEF789012, or a single serial number. Repeating the parameter (serial_numbers=A&serial_numbers=B) also works. Duplicates are removed; between 1 and 100 devices per request. Every device must belong to the token account. |
interval | string | No | Lookback window from now. Extended history: default 24h, at most 30d. Standard history: default and maximum 12h. Must match ^\d+[hd]$ (hours or days), e.g. 1h, 12h, 7d. Cannot be combined with start/end. |
start | string | No | Range start as an ISO 8601 timestamp, e.g. 2026-09-01T00:00:00Z. Timestamps without an offset are treated as UTC. Must be in the past. Extended history only; with standard history it returns 400. |
end | string | No | Range end as an ISO 8601 timestamp. Requires start and must be after it. Defaults to now; a future value is capped to now. start and end can be at most 30 days apart. |
time_bucket | string | No | Aggregation bucket size. Default 1h. Must match ^\d+[mhd]$ (minutes, hours, or days), e.g. 15m, 1h, 1d, and must not be larger than the time range. Same field accepts query aliases bucket or time_bucket_size. |
probe_target | string | No | Optional probe target (e.g. 8.8.8.8) to return a single probe target. Default returns all probe targets. Ignored when resource=lte. |
Request size limit
The number of devices multiplied by the number of time buckets in the window must not exceed 20,000. For example, 100 devices over 7d with time_bucket=1h is 100 × 168 = 16,800 and is accepted, while 100 devices over 30d with time_bucket=1h (72,000) is rejected with 400. Send fewer serial_numbers, use a larger time_bucket, or shorten the window.
Headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer <access_token> | Yes |
Responses
On success, data is an array with one entry per requested device, in the order the devices were sent. Devices that reported no metrics in the window are still included, with an empty rows array.
Device entry fields
| Field | Type | Description |
|---|---|---|
serial_number | string | Device serial number. |
name | string | Device name. Omitted when the device has no name. |
status | string | Current device status: `online` or `offline`. |
rows | array | Time-bucketed metric rows for the requested `resource` (fields below). Empty when the device reported no metrics in the window. |
Row fields
Every row has time_bucket (bucket start, ISO 8601 UTC) and interface. Rows for latency, packet-loss, jitter and metrics also include probe_target.
| resource | Metric fields |
|---|---|
latency | `avg_latency_avg`, `min_latency_min`, `max_latency_max` |
packet-loss | `avg_packet_loss`, `min_packet_loss`, `max_packet_loss` |
jitter | `jitter` |
metrics | `avg_latency_avg`, `min_latency_min`, `max_latency_max`, `avg_packet_loss`, `min_packet_loss`, `max_packet_loss`, `jitter` |
lte | `avg_rssi`, `min_rssi`, `max_rssi` (dBm) and `avg_csq`, `min_csq`, `max_csq` (0–30) |
If a bucket has no valid samples for a field, that field is 0.
Status codes
| HTTP | Description |
|---|---|
| 200 | `success: true`, `data` = array of device entries (see above), `request_id` set. |
| 400 | Bad request — invalid or missing `serial_numbers`, more than 100 devices, invalid `interval` / `start` / `end` / `time_bucket`, window longer than allowed (30 days, or 12 hours with standard history), `start`/`end` with standard history, request size limit exceeded, unknown query parameters, or one or more `serial_numbers` not found in the account (`success: false`, `text`, `request_id`). |
| 401 | Unauthorized — invalid or missing Bearer token. |
| 404 | Unknown `resource`, or no account resolved from the token (`success: false`, `text`, `request_id`). |
| 500 | Metrics store or service error, `text` = `Unable to load network metrics` (`success: false`, `text`, `request_id`). |
Success payload examples (200)
Error payload examples
Examples
Defaults match the API model: last 24h (extended history) or 12h (standard history) and time_bucket=1h if you omit interval, start/end and time_bucket. The start/end examples require extended history.