github cyberjunky/python-garminconnect 0.3.17
Release 0.3.17

9 hours ago

What's Changed

⚠️ Breaking

  • 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.

Don't miss a new python-garminconnect release

NewReleases is sending notifications on new releases.