Traffic
Wi-Fi traffic per device over time. This is the data behind the traffic chart in the monthly downtime report. One row per device per bucket, with the bytes that moved inside it.
Daily and monthly figures use Ruijie Cloud's own per-access-point totals wherever we have them (for Reyee access points, back to March 2026). Every other device and day uses Polaris's own measurement. That is the same choice the monthly downtime report makes, so the two agree. Hourly figures are Polaris's own measurement only, because Ruijie reports whole days: for Reyee access points they begin on 6 August 2026 and read well below the daily figures.
Each row holds only the bytes for that bucket, not a running total, so adding up rows over a range gives the total for that range.
Traffic series GET /v1/traffic
Returns received and sent bytes per device per bucket, oldest first.
Query parameters
fromdateFirst day of the range,
YYYY-MM-DDin Philippine time. Omit bothfromandtofor the current calendar month.todateLast day of the range, inclusive. The range must be 92 days or less.
intervalstringBucket width:
day(default),hour, ormonth. Amonthbucket totals the days of that month that fall inside the range. Hourly data is kept for 90 days and is Polaris's own measurement only; daily and monthly are kept indefinitely.gatewayIdstringRestrict to one device. Matches
gatewayIdon/v1/devices.workspaceIdstringScope to a single workspace. Must be one returned by
GET /v1/workspaces. An id outside your token's set returns403.pageSizeintegerRows per page, 1–5000. Defaults to 500.
pageTokenstringnextPageTokenfrom the previous response.
Response object
timetimestampStart of the bucket.
siteCodestringSite the device belongs to.
deviceNamestringDisplay name of the device.
gatewayIdstringUnique identifier of the device.
rxBytesintegerBytes received in the bucket (downlink, what reached the network).
txBytesintegerBytes sent in the bucket (uplink, what left it).
- cURL
- JavaScript
- Go
- PHP
curl "https://polaris.revlv.com/v1/traffic?from=2026-04-01&to=2026-04-30" \
-H "Authorization: Bearer {token}"
const res = await fetch(
'https://polaris.revlv.com/v1/traffic?from=2026-04-01&to=2026-04-30',
{ headers: { 'Authorization': 'Bearer {token}' } },
);
const { data } = await res.json();
req, _ := http.NewRequest("GET",
"https://polaris.revlv.com/v1/traffic?from=2026-04-01&to=2026-04-30", nil)
req.Header.Add("Authorization", "Bearer {token}")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
$response = $client->get('https://polaris.revlv.com/v1/traffic', [
'headers' => ['Authorization' => 'Bearer {token}'],
'query' => ['from' => '2026-04-01', 'to' => '2026-04-30'],
]);
echo $response->getBody();
{
"data": [
{
"time": "2026-04-01T00:00:00Z",
"siteCode": "PH1-2026-549",
"deviceName": "AP1_Inside of Barangay Hall Office",
"gatewayId": "G1TA2FM00455A",
"rxBytes": 21474836480,
"txBytes": 3221225472
},
{
"time": "2026-04-02T00:00:00Z",
"siteCode": "PH1-2026-549",
"deviceName": "AP1_Inside of Barangay Hall Office",
"gatewayId": "G1TA2FM00455A",
"rxBytes": 18253611008,
"txBytes": 2684354560
}
],
"pageInfo": {
"hasNextPage": false,
"nextPageToken": ""
}
}