Is it possible for a widget to pull information from your garmin connect profile? I know you can pull user information (age, sex etc), but is it possible to get sleep history data specifically?
It' might be, see this blog post, "Access User Wellness Data From Garmin Connect' .
You need to be approved to get access to the API, and I have no idea what that takes, but my guess is it's not simple based on what they want when you apply.
so how do apps like watch faces get access to history data (e.g. step count for each day over the past week) from a garmin account without access to the API? or does sleep specifically use a different API endpoint?
For 7 day steps/calories/distance, that info is available on the watch itself (ActivityMonitor.getHistory())
Sleep is actually calculated on the servers when your data is synced, start/end time can be changed there, etc and it's not available on the watch itself already. That's why you won't see even a native widget on the watch that shows your sleep data - the data isn't on the watch.