go-ring API Reference
Guides

Device discovery and controls

List devices, inspect capabilities, and send account-scoped device commands.

Most device operations are request-and-response HTTP calls. Include the account's AuthContext with each request, list devices once, and use the returned device IDs with controls and detail lookups.

devices, err := client.ListDevices(ctx, ring.ListDevicesRequest{Auth: auth})
if err != nil {
	return err
}

for _, device := range devices.Devices {
	fmt.Printf("%s: %s (%s)\n", device.ID, device.Name, device.Kind)
}

The returned device model includes capabilities when the inventory response explicitly reports them. An absent capability means support is unknown; the device or service remains the final authority for a command.

Device.Type is the normalized hardware class: CAMERA, DOORBELL, CHIME, or OTHER. It uses a recognized explicit family, otherwise a known hardware kind from the schema catalog when family is absent or other. In particular, stickup_cam_mini_ptz_v1 maps to CAMERA without a family field. Unknown families and unknown kinds remain OTHER; live-view support does not establish hardware type. Kind and Family retain their original server values.

Device.Supports checks only affirmative inventory evidence. A reported light, motion setting, siren state, or video-on-demand flag may confirm its respective capability even when the current state is off. Reported PTZ RPC commands confirm only their specific pan or tilt, step or continuous control. Unfamiliar device kinds remain in the list; the client does not classify them away. Snapshot, reboot, intercom, and recording support can still be queried by ID when the inventory gives no capability evidence.

For callers migrating from family-specific device slices, iterate response.Devices. GetDevice returns a pointer to that same device model; device IDs and request authentication stay the same.

Send a control

Controls take a device ID and the value being changed. For example, to change motion detection:

err := client.SetMotionDetection(ctx, ring.SetMotionDetectionRequest{
	Auth:     auth,
	DeviceID: deviceID,
	Enabled:  true,
})
if err != nil {
	return err
}

Other supported controls include lights, siren, volume, in-home chime settings, reboot, and chime test sounds. Some legacy volume and in-home chime routes also require the device description; the request type documents that requirement.

A successful control call reports that the request was accepted. It does not confirm a physical outcome. For a state-changing request, fetch status or settings separately if your workflow needs to check the resulting state.

See the enumerate-devices and reboot-device examples for complete programs.

Wire contracts: list devices and device controls.

On this page