List device groups
const url = 'http://localhost:3000/api/v1/device-groups?limit=20&offset=0';const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://localhost:3000/api/v1/device-groups?limit=20&offset=0' \ --header 'X-API-Key: <X-API-Key>'Paginated list of device groups with member counts, in name order. With deviceId, only the groups that device is a member of.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”object
object
Case-insensitive substring search
Only the groups this device is a member of. 404 when the device is not a live device of the organization.
True: only groups with at least one live member device. false: only empty groups. Any other value is rejected with 400.
Header Parameters
Section titled “Header Parameters”UUID of the organization (tenant) the request acts in. It selects the tenant and grants nothing: the server checks membership or an open tenant switch. Not needed for global operations. A malformed value returns 400. API keys are fixed to their own organization; another organization returns 403. The x-organization-source header grants nothing.
Responses
Section titled “Responses”object
object
Number of live member devices
Examplegenerated
{ "data": [ { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "description": "example", "memberCount": 1, "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z" } ], "total": 1, "hasMore": true}Invalid query
Forbidden — caller lacks required permission
DeviceId is not a live device of the organization