Skip to main content

Device Groups API

Endpoints for creating and managing device groups for targeted rollouts and deployments.

List groups

GET /api/v1/device-groups

Returns device groups for an organization with pagination.

Query Parameters

ParameterTypeRequiredDescription
org_idstringYesOrganization identifier
limitintegerNoMaximum records (default 100, max 1000)
offsetintegerNoRecords to skip (default 0)

Response

{
"groups": [
{
"id": "grp_abc123",
"org_id": "org_demo",
"name": "iOS Beta Testers",
"description": "Internal canary cohort",
"group_type": "static",
"tags": ["ios", "canary"],
"device_count": 25,
"created_at": "2026-02-23T16:30:00Z"
}
],
"total": 1, "limit": 50, "offset": 0
}

Retrieve a group

GET /api/v1/device-groups/{group_id}

Returns metadata for a single device group.


Create a group

POST /api/v1/device-groups

Creates a named group for assigning and rolling out model versions to cohorts.

Body Parameters

ParameterTypeRequiredDescription
org_idstringYesOrganization identifier
namestringYesGroup name
descriptionstringNoHuman-readable group description
group_typestringNoGroup type (e.g. static)
tagsstring[]NoOptional tags for filtering

Update a group

PUT /api/v1/device-groups/{group_id}

Updates an existing device group's metadata (name, description, tags).


Delete a group

DELETE /api/v1/device-groups/{group_id}

Deletes a device group. Existing devices remain registered and are only removed from this group.


List group members

GET /api/v1/device-groups/{group_id}/devices

Returns devices that are currently members of the specified group. Supports limit and offset query parameters.


Add a device

POST /api/v1/device-groups/{group_id}/devices/{device_id}

Adds a single device to a device group.


Remove a device

DELETE /api/v1/device-groups/{group_id}/devices/{device_id}

Removes a single device from a device group.


Add devices (batch)

POST /api/v1/device-groups/{group_id}/devices

Adds multiple devices in one request.

Body

ParameterTypeRequiredDescription
device_idsstring[]YesDevice IDs to add
added_bystringNoActor label for audit trail

Response

{
"group_id": "grp_abc123",
"added": ["dev_abc123", "dev_def456"],
"skipped": []
}

Remove devices (batch)

DELETE /api/v1/device-groups/{group_id}/devices

Removes multiple devices in one request.

Body

ParameterTypeRequiredDescription
device_idsstring[]YesDevice IDs to remove

Errors

StatusErrorDescription
400bad_requestInvalid or missing request fields
401unauthorizedMissing or invalid API key
404not_foundResource does not exist
409conflictResource already exists or state conflict
429rate_limitedToo many requests; check Retry-After
500internal_errorUnexpected server error