For completed activities or planned workouts? You can upload completed activities:
POST /v1/athlete/{id}/activities
This accepts form data with ‘file’ containing the data as well as optional name and description fields. The file can be .fit, .gpx, .fit.gz, .gpx.gz or a zip file containing one or more of the same.
It won’t create duplicate activities (hash of file data is checked). It returns status code 201 if at least one activity was created, else 200. The body is an array of { icu_athlete_id, id } for each activity.