What's Changed
⚠️ Breaking
get_goals()now counts from 1 (new defaultstart=1;start=0returned no goals), andstart=0raisesValueErrorthere and in the badge challenge methods, where Garmin already rejected it. If you passstart=0to these methods, usestart=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_stepwithPaceTarget,SpeedTarget,CadenceTarget,CustomPowerTarget,PowerZoneTarget,CustomHeartRateTargetorHeartRateZoneTarget.pace_to_mpsandspeed_to_mpsconvert 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)andget_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 toadd_body_compositionand 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 withoutlogin()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.