For the complete documentation index, see llms.txt. This page is also available as Markdown.

Why does a Garmin activity read right after connecting come back with only a name and no data?

Garmin sends an activity's file and its details separately, and a read made between the two can return a name-only placeholder.

Garmin sends an activity's file and its details separately, and a read made between the two can return a name-only placeholder.

The placeholder has the same metadata.summary_id as the full activity, with:

  • metadata.name populated,

  • metadata.start_time equal to metadata.end_time,

  • metadata.type 108 (Other),

  • no distance, heart rate, calorie or sample data.

When the activity details arrive from Garmin, they are merged into the same summary_id and the full record replaces the placeholder. JSON destinations don't receive the placeholder on its own, so webhook deliveries carry the merged activity.

This mostly shows up when an onboarding flow calls GET /v2/activity in the first seconds after a Garmin connection, while Garmin is still sending the user's history. To avoid it:

  • read the history a little later rather than in the first seconds after the connection,

  • upsert on metadata.summary_id, so a later read or delivery replaces any placeholder you stored.

Field definitions and the activity type list are in the data models reference.

Last updated

Was this helpful?