I've been using InReach and the InReach APIs for a few years now.
They were both very reasonably priced (they cost nothing above my InReach subscription price), very easy to get access to (I emailed them and got access to API docs and the APIs within a day or three) and extremely well thought out and reliable (very robust callback based event/point reporting system, with retries on their side if your code breaks or is flakey, their web page has a great debug interface to see what happens if your webhook fails) and their support was top-notch (if not super fast).
I had a weird bug with their webhooks when I started implementation, where every event would come in twice, once with the timestamp of the event truncated to an integer of whole seconds. You could see from the user-agent that the one with the truncated timestamp was a few versions older of their software. Wrapped that analysis up in an email to them and about 12 hours later saw it get fixed and about 12 hours after that got an email back from AN ACTUAL ENGINEER who thanked me for the description, explained why and how it happened and explained their fix.
Granted, the InReach and definitely the InReach Professional API, are more of a professional product and less pure consumer, but, Garmin definitely knows how to do this.
I've been using InReach and the InReach APIs for a few years now.
They were both very reasonably priced (they cost nothing above my InReach subscription price), very easy to get access to (I emailed them and got access to API docs and the APIs within a day or three) and extremely well thought out and reliable (very robust callback based event/point reporting system, with retries on their side if your code breaks or is flakey, their web page has a great debug interface to see what happens if your webhook fails) and their support was top-notch (if not super fast).
I had a weird bug with their webhooks when I started implementation, where every event would come in twice, once with the timestamp of the event truncated to an integer of whole seconds. You could see from the user-agent that the one with the truncated timestamp was a few versions older of their software. Wrapped that analysis up in an email to them and about 12 hours later saw it get fixed and about 12 hours after that got an email back from AN ACTUAL ENGINEER who thanked me for the description, explained why and how it happened and explained their fix.
Granted, the InReach and definitely the InReach Professional API, are more of a professional product and less pure consumer, but, Garmin definitely knows how to do this.