Create Activity
strava.create_activity
ActionBusiness appsconnection required
Calls the Strava API with the connection's credentials.
Record a manual activity on the authorised athlete's account.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- Strava
- Secret shape
- {"client_id": "…", "client_secret": "…", "refresh_token": "…"}
- Resolved by
- config.connection_id, else node.connection_id
Configuration
8 fields, 4 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
name Title of the activity, as it will appear in the athlete's feed. | string | Yes | — | — | Morning Run |
sport_type Which of Strava's sports this activity is. This replaces the deprecated 'type' field, which Strava ignores whenever sport_type is present. | string | Yes | — | one of "AlpineSki", "BackcountrySki", "Badminton", "Basketball", "Canoeing", "Cricket", "Crossfit", "Dance", "EBikeRide", "Elliptical", "EMountainBikeRide", "Golf", "GravelRide", "Handcycle", "HighIntensityIntervalTraining", "Hike", "IceSkate", "InlineSkate", "Kayaking", "Kitesurf", "MountainBikeRide", "NordicSki", "Padel", "PhysicalTherapy", "Pickleball", "Pilates", "Racquetball", "Ride", "RockClimbing", "RollerSki", "Rowing", "Run", "Sail", "Skateboard", "Snowboard", "Snowshoe", "Soccer", "Squash", "StairStepper", "StandUpPaddling", "Surfing", "Swim", "TableTennis", "Tennis", "TrailRun", "Velomobile", "VirtualRide", "VirtualRow", "VirtualRun", "Volleyball", "Walk", "WeightTraining", "Wheelchair", "Windsurf", "Workout", "Yoga" | — |
start_date_local When the activity started, in the athlete's local time, as an ISO 8601 timestamp such as '2026-09-01T08:30:00Z'. | string | Yes | — | iso8601 format | 2026-09-01T08:30:00Z |
elapsed_time Wall-clock duration of the activity, in seconds. | number | Yes | — | ≥ 0 | 1800 |
description Free text shown under the activity in the feed. | string | No | — | — | — |
distance Distance covered, in metres. | number | No | — | ≥ 0 | 5000 |
trainer Mark the activity as recorded on a training machine. | boolean | No | — | — | — |
commute Mark the activity as a commute. | boolean | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"distance": 5000,
"elapsed_time": 1800,
"name": "Morning Run",
"start_date_local": "2026-09-01T08:30:00Z"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
id The activity's Strava id. | number | — |
name The activity's title. | string | — |
sport_type The sport Strava recorded it under, such as 'Run'. | string | — |
distance Distance covered, in metres. | number | — |
moving_time Time spent moving, in seconds. | number | — |
elapsed_time Wall-clock duration, in seconds. | number | — |
total_elevation_gain Elevation gained, in metres. | number | — |
start_date When the activity started, in UTC ISO 8601. | string | — |
start_date_local The same instant in the athlete's local time. | string | — |
average_speed Average speed, in metres per second. | number | — |
kudos_count How many kudos the activity has. | number | — |
athlete.id Strava id of the athlete the activity belongs to. | number | — |
{
"athlete": {
"id": 0
},
"average_speed": 0,
"distance": 0,
"elapsed_time": 0,
"id": 0,
"kudos_count": 0,
"moving_time": 0,
"name": "",
"sport_type": "",
"start_date": "",
"start_date_local": "",
"total_elevation_gain": 0
}See Create Activity run in a workflow.
In a technical demo we add the Strava connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.