Clients
One row for each client seen on a gateway in the last 5 minutes (one per gateway and MAC). Use this when you need details on individual devices (MAC, IP, hostname) rather than totals. For totals per gateway, see Connected Clients.
List clients GET /v1/clients
Returns a paginated list of clients observed in the last 5 minutes, using cursor-based pagination.
Query parameters
pageSizeintegerNumber of records to return. Default
100, min1, max500.pageTokenstringCursor from the previous response's
pageInfo.nextPageToken. Omit for the first page.namestringCase-insensitive substring match on the name of the gateway or access point the client is connected to (
deviceName). A device with no name never matches. Send the samenamewith eachpageTokenwhen paging a filtered list.workspaceIdstringLimit the response to one workspace. Use an id returned by
GET /v1/workspaces: the token's own workspace or one nested under it. Leave it out to include every workspace your token can reach. An id your token can't reach returns403.
Response object
timetimestampWhen this client was last observed.
deviceNamestringName of the gateway or access point the client is connected to.
hostnamestringClient device hostname / model string reported by the gateway.
gatewayIdstringUnique identifier of the gateway.
macstringClient MAC address.
ipAddressstringClient IP address.
Pagination
The response includes a pageInfo object. Pass pageInfo.nextPageToken as pageToken in the next request to retrieve the following page. When hasNextPage is false you have reached the end.
- cURL
- JavaScript
- Go
- PHP
curl "https://polaris.revlv.com/v1/clients?pageSize=100&name=Site%20A" \
-H "Authorization: Bearer {token}"
const res = await fetch('https://polaris.revlv.com/v1/clients?pageSize=100', {
headers: { 'Authorization': 'Bearer {token}' },
});
const { data, pageInfo } = await res.json();
// Fetch next page
if (pageInfo.hasNextPage) {
const next = await fetch(
`https://polaris.revlv.com/v1/clients?pageToken=${pageInfo.nextPageToken}`,
{ headers: { 'Authorization': 'Bearer {token}' } }
);
}
req, _ := http.NewRequest("GET", "https://polaris.revlv.com/v1/clients?pageSize=100", 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/clients', [
'headers' => ['Authorization' => 'Bearer {token}'],
'query' => ['pageSize' => 100],
]);
echo $response->getBody();
{
"data": [
{
"time": "2026-05-02T08:15:00.000000Z",
"deviceName": "Site A Gateway",
"hostname": "OPPO-A5s",
"gatewayId": "d1e2f3a4-b5c6-7890-abcd-ef1234567890",
"mac": "aa:bb:cc:dd:ee:ff",
"ipAddress": "192.168.1.42"
},
{
"time": "2026-05-02T08:14:55.000000Z",
"deviceName": "Site A Gateway",
"hostname": "Infinix-HOT-60i",
"gatewayId": "d1e2f3a4-b5c6-7890-abcd-ef1234567890",
"mac": "bb:cc:dd:ee:ff:00",
"ipAddress": "192.168.1.43"
}
],
"pageInfo": {
"hasNextPage": true,
"nextPageToken": "ZDFlMmYzYTQtYjVjNi03ODkwLWFiY2QtZWYxMjM0NTY3ODkwfGJiOmNjOmRkOmVlOmZmOjAw"
}
}