The Google Home works with a massive number of smart home products, but developers looking to tinker with it are usually out of luck. It doesn't have any kind of public API, so custom functionality can really only be added through IFTTT (or by writing your own Assistant app). Now there is a way to obtain some data from a Google Home, as one developer has discovered an undocumented API that the Google Home uses.
The developer, who goes by rithvikvibhu on Reddit, created a list of API calls by intercepting network requests from the Google Home app. The commands use simple GET/POST methods, and return data in JSON format. In other words, they are incredibly easy to use, as long as you know the IP address of the Google Home on your network (which can be found at the bottom of the 'Device settings' page on the Google Home app).
Obtaining a list of remembered Wi-Fi networks with Advanced REST client
This API can be used to retrieve upcoming alarms, view connected Wi-Fi networks/Bluetooth devices, and more. Some settings can be changed using this method, like night mode, the device name, and whether or not the Preview Program is used. The API is only accessible to devices running on the same network.
I tried most of the commands in the documentation, and most of them worked on my Google Home and Home Mini. The commands for rebooting the device and changing the Wi-Fi network didn't seem to work, and the developer states that command is "Not tested." I was unable to check if these commands work with third-party Assistant speakers, since I don't own any.
Changing the name of my Google Home to "AAAAA" using the API
It's worth noting that this API doesn't expose any private data, but I do wonder why some of these commands don't require any authentication. Worst case scenario, a malicious program running on your network could change the name of your Google Home or mess with night mode.
If you're interested in playing with this for yourself, you can find the unofficial documentation at the source link below.
- XDA Developers