The Ultrahuman Ring is similar to the Oura Ring and measures various health parameters including heart rate, blood oxygen and tempreture.
Contacting the company to inquire about API access
When I first learned of the Ultrahuman Ring I noticed there was no information on their website about API interfaces. I contacted the company to inquire about access and indeed they did have endpoints in place and existing API customers. I had a meeting with a representative and explained the needs of cryonics monitoring: I need as much data as you can give me, as often as possible, but more specifically at the very least I need to know if the user is wearing the ring and has moved their hand at all in the past 60-90 minutes (a very reliable bare minimum for acceptable monitoring in my opinion).
The representative indicated that even though this exact data was not present in any of the existing endpoints for 3rd party developers, this would be easy to add if indeed we would like to form a business relationship with them.
Concerns about sync behavior
But I also needed to find out about sync behavior of the ring. I described how Oura did not sync with the phone app during periods of rest or sleep, and how sometimes it took opening the application for the sync to occur at all. This means that if the user has an issue in the middle of the night, it could be many hours before we could know about it.
I was assured that Ultrahuman understood this was an issue with Oura and indicated that their device was superior to Oura in this way, and would sync on average every 30 min regardless of whether or not you are resting/sleeping. So I acquired a ring and began testing.
Small program to determine sync behavior
In order to test sync times I wrote a program that called the API endpoint every 5 min and looked at the timestamp of the most recent heart rate record. From this the sync delay can be calculated, for instance, if calling the endpoint at 1pm and the last heart rate record had a timestamp of 12:30pm, the sync delay is 30 min.
So how did it go?
Let's just say the results were abysmal. Sure, it’s possible the ring syncs with the phone more frequently than Oura (though I do still have to wait on the app in the morning for the overnight sync to complete, indicating it also does not sync during sleep), but the phone application appears to only sync with the backend about once every 24 hours (at midnight).
This is of course unacceptable. If the phone app is not updating the Ultrahuman servers, which is where the API calls request data from, the data may as well still be on the ring, since it’s inaccessible to us. I’ve informed the Ultrahuman team about this issue and it hasn’t been changed yet. We will see though. I will post any updates/improvements about this product if anything changes/improves.
Architecture diagram and issues
Summary: The current syncing behavior of the phone application is the primary reason why this would be an unsuitable choice for cryonics monitoring. One big pro however is that the company is willing to work with potential business customers and build custom endpoints to meet their needs. It's possible that the kind of data we need (at the very least wear detection, small finger movements) would be available, making it a reliable and reasonably quick alarm solution if only syncing behavior could be optimized.