Withings has a full available API, I wrote a tool to just scrape what I need from the app at https://developer.withings.com/
You can also have a Webhook be delivered when you take a new measurement. I wrote a small script that syncs my weight to Garmin using python-garminconnect.
The experience integrating with Withings was really good. Garmin on the other hand seems to be actively hostile if you (as an end user) want to programmatically interact with their ecosystem.
I think the main point here is that they don't want their data going through yet another cloud service.