You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
get_goals() now counts from 1 (new default start=1; start=0 returned no goals), and start=0 raises ValueError there and in the badge challenge methods, where Garmin already rejected it. If you pass start=0 to these methods, use start=1. (#441, #445)
New features
Workout intensity targets: interval steps can now have a pace, speed, cadence, power or heart-rate target, either as a custom range or as one of your configured zones, with an optional secondary target (e.g. power + cadence for cycling). Use create_targeted_interval_step / create_targeted_distance_interval_step with PaceTarget, SpeedTarget, CadenceTarget, CustomPowerTarget, PowerZoneTarget, CustomHeartRateTarget or HeartRateZoneTarget. pace_to_mps and speed_to_mps convert min/km, min/mi, km/h and mph to the m/s Garmin expects. Thanks @Silver-Saucepan! (#440, #446)
Training load:get_training_four_week_load_balance(cdate), get_daily_training_status(cdate) and get_training_load_activities(startdate, enddate, metrics=None, activitytype=None) for training load balance, daily training status (acute/chronic load) and per-activity training load. Thanks @brycehenson! (#437, #447)
Fixes
Timestamps with a timezone offset (e.g. "2026-07-01T08:45:00+05:45") passed to add_body_composition and the other FIT-based uploads are now stored at the correct time; previously the offset was ignored and the time was treated as local time on the machine. Timestamps without an offset behave as before. Thanks @bensynapse! (#438)
Clearer errors when upgrading from garth-based versions: login() now says so when it finds old garth tokens, and API calls without login() say to call it first. (#448)
Login 429 errors no longer claim the IP is rate limited; Garmin can also block based on the client fingerprint. (#449)
Demo & docs
The running and cycling upload examples now use intensity targets: the running workout has a 4:30–4:50 min/km pace target on its intervals, and the cycling workout 220–250 W power with an 85–95 rpm cadence secondary target.
The new training load methods are available under Advanced Health Metrics (options g, h, i).
The README has a new "Upgrading from 0.2.x (garth)" section.