StudioTraining / StudioTrainingSessionEntry
Returns a list of StudioTrainingSessionEntry objects
GET/api/crm/studio_training/session_entry
Query parameters
idstring | |
deletedboolean | This property is used to mark an entity as deleted / archived | Default value: false |
sessionstring | |
planExercisestring | Prescription this entry was performed against, if the unit followed a plan |
presetstring | |
devicestring | |
setNumberstring | Number of the set within the exercise, starting at 1 |
searchStringstring | text to search for in the list |
orderFieldNamestring | name of the order field |
orderFieldSortstring | sorting modeAllowed: DESCASC |
pageinteger | page of the list |
pageSizeinteger | number of entries for each page |
withMaxPageNumberstring | returns the number of pages available as a header if this is set |
Responses
200Returns a list of StudioTrainingSessionEntry objectsarray<StudioTrainingSessionEntry>
Show fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
Show fields (16)
idintegerPrimary key of the training session. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person who trained.
planStudioTrainingPlanTraining plan the session belongs to.
plan_dayStudioTrainingPlanDayPlan day the session belongs to.
trainerCRMPerson10Trainer who supervised the unit, if any
performed_atstring (date-time)Time the training was performed.
duration_secondsintegerDuration of the session in seconds.
statusstringStatus of the session, for example planned or done.
sourcestringSource of the session, for example app or device.
rpenumber (float)Overall rate of perceived exertion of the unit
average_heart_rateintegerAverage heart rate in beats per minute.
caloriesintegerCalories burned.
notesstringNotes of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
Show fields (21)
idintegerPrimary key of the plan exercise. Internal ID.
plan_dayStudioTrainingPlanDayPlan day the exercise belongs to.
presetStudioTrainingPresetTraining preset of the exercise.
deviceStudioDeviceOptional concrete machine for this exercise
namestringOverrides the preset name when the trainer renamed the exercise for this plan
setsintegerNumber of sets.
repetitionsintegerNumber of repetitions per set.
repetitions_tointegerUpper bound if the prescription is a repetition range (e.g. 8 - 12)
weightnumber (float)Weight per repetition.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of one set in seconds for time based exercises
rest_secondsintegerPause between sets in seconds
tempostringMovement tempo notation, e.g. "2-0-2-0"
intensity_percentnumber (float)Target intensity in percent of the one repetition maximum
rpenumber (float)Rate of perceived exertion / reps in reserve target
circuit_groupstringExercises of the same day sharing this key form a superset / circuit block
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
presetStudioTrainingPresetTraining preset performed.
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
deviceStudioDeviceDevice used for the exercise.
Show fields (10)
idintegerPrimary key of the studio device. Internal ID.
namestringName of the device.
descriptionstringDescription of the device.
manufacturerstringManufacturer of the device.
modelstringModel of the device.
device_typestringType of the device, for example treadmill or bike.
identifierstringIdentifier of the device at the manufacturer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
curl --request GET \
--url https://your-instance.iw-erp.de/api/crm/studio_training/session_entry \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/crm/studio_training/session_entry', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_session_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingSessionEntryController.getAll();
if (result.success) {
print(result.data);
}[
{
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5,
"average_heart_rate": 1,
"calories": 1,
"notes": "string",
"created": "2026-10-15T09:30:00+02:00"
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1,
"rest_seconds": 1,
"tempo": "string"
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"set_number": 1,
"repetitions": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1
}
]Create a single StudioTrainingSessionEntry
POST/api/crm/studio_training/session_entry
Request body application/json
dataStudioTrainingSessionEntryShow fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
presetStudioTrainingPresetTraining preset performed.
deviceStudioDeviceDevice used for the exercise.
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
Responses
200Create a single StudioTrainingSessionEntryStudioTrainingSessionEntry
Show fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
Show fields (16)
idintegerPrimary key of the training session. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person who trained.
planStudioTrainingPlanTraining plan the session belongs to.
plan_dayStudioTrainingPlanDayPlan day the session belongs to.
trainerCRMPerson10Trainer who supervised the unit, if any
performed_atstring (date-time)Time the training was performed.
duration_secondsintegerDuration of the session in seconds.
statusstringStatus of the session, for example planned or done.
sourcestringSource of the session, for example app or device.
rpenumber (float)Overall rate of perceived exertion of the unit
average_heart_rateintegerAverage heart rate in beats per minute.
caloriesintegerCalories burned.
notesstringNotes of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
Show fields (21)
idintegerPrimary key of the plan exercise. Internal ID.
plan_dayStudioTrainingPlanDayPlan day the exercise belongs to.
presetStudioTrainingPresetTraining preset of the exercise.
deviceStudioDeviceOptional concrete machine for this exercise
namestringOverrides the preset name when the trainer renamed the exercise for this plan
setsintegerNumber of sets.
repetitionsintegerNumber of repetitions per set.
repetitions_tointegerUpper bound if the prescription is a repetition range (e.g. 8 - 12)
weightnumber (float)Weight per repetition.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of one set in seconds for time based exercises
rest_secondsintegerPause between sets in seconds
tempostringMovement tempo notation, e.g. "2-0-2-0"
intensity_percentnumber (float)Target intensity in percent of the one repetition maximum
rpenumber (float)Rate of perceived exertion / reps in reserve target
circuit_groupstringExercises of the same day sharing this key form a superset / circuit block
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
presetStudioTrainingPresetTraining preset performed.
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
deviceStudioDeviceDevice used for the exercise.
Show fields (10)
idintegerPrimary key of the studio device. Internal ID.
namestringName of the device.
descriptionstringDescription of the device.
manufacturerstringManufacturer of the device.
modelstringModel of the device.
device_typestringType of the device, for example treadmill or bike.
identifierstringIdentifier of the device at the manufacturer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
curl --request POST \
--url https://your-instance.iw-erp.de/api/crm/studio_training/session_entry \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
}
}
'const options = {
method: 'POST',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
session: {
id: 42,
performed_at: '2026-10-15T09:30:00+02:00',
duration_seconds: 1,
status: 'string',
source: 'string',
rpe: 1.5
},
plan_exercise: {
id: 42,
name: 'Beispiel',
sets: 1,
repetitions: 1,
repetitions_to: 1,
weight: 1.5
},
preset: {
id: 42,
name: 'Beispiel',
description: 'Text',
content_source_name: 'Beispiel',
license_author_url: 'https://vynst.de',
duration: 1
},
device: {
id: 42,
name: 'Beispiel',
description: 'Text',
manufacturer: 'string',
model: 'string',
device_type: 'string'
},
set_number: 1
}
})
};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry"
payload = { "data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://your-instance.iw-erp.de/api/crm/studio_training/session_entry', [
'body' => '{"data":{"id":42,"session":{"id":42,"performed_at":"2026-10-15T09:30:00+02:00","duration_seconds":1,"status":"string","source":"string","rpe":1.5},"plan_exercise":{"id":42,"name":"Beispiel","sets":1,"repetitions":1,"repetitions_to":1,"weight":1.5},"preset":{"id":42,"name":"Beispiel","description":"Text","content_source_name":"Beispiel","license_author_url":"https://vynst.de","duration":1},"device":{"id":42,"name":"Beispiel","description":"Text","manufacturer":"string","model":"string","device_type":"string"},"set_number":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry")
.post(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry"
payload := strings.NewReader("{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_session_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
import 'package:iw_erp_api/model/studio_training_session_entry.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingSessionEntryController.post(StudioTrainingSessionEntry.fromJson({
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
}));
if (result.success) {
print(result.data);
}{
"id": 42,
"session": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"set_number": 1,
"repetitions": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1
}Returns a single StudioTrainingSessionEntry
GET/api/crm/studio_training/session_entry/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Returns a single StudioTrainingSessionEntryStudioTrainingSessionEntry
Show fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
Show fields (16)
idintegerPrimary key of the training session. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person who trained.
planStudioTrainingPlanTraining plan the session belongs to.
plan_dayStudioTrainingPlanDayPlan day the session belongs to.
trainerCRMPerson10Trainer who supervised the unit, if any
performed_atstring (date-time)Time the training was performed.
duration_secondsintegerDuration of the session in seconds.
statusstringStatus of the session, for example planned or done.
sourcestringSource of the session, for example app or device.
rpenumber (float)Overall rate of perceived exertion of the unit
average_heart_rateintegerAverage heart rate in beats per minute.
caloriesintegerCalories burned.
notesstringNotes of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
Show fields (21)
idintegerPrimary key of the plan exercise. Internal ID.
plan_dayStudioTrainingPlanDayPlan day the exercise belongs to.
presetStudioTrainingPresetTraining preset of the exercise.
deviceStudioDeviceOptional concrete machine for this exercise
namestringOverrides the preset name when the trainer renamed the exercise for this plan
setsintegerNumber of sets.
repetitionsintegerNumber of repetitions per set.
repetitions_tointegerUpper bound if the prescription is a repetition range (e.g. 8 - 12)
weightnumber (float)Weight per repetition.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of one set in seconds for time based exercises
rest_secondsintegerPause between sets in seconds
tempostringMovement tempo notation, e.g. "2-0-2-0"
intensity_percentnumber (float)Target intensity in percent of the one repetition maximum
rpenumber (float)Rate of perceived exertion / reps in reserve target
circuit_groupstringExercises of the same day sharing this key form a superset / circuit block
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
presetStudioTrainingPresetTraining preset performed.
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
deviceStudioDeviceDevice used for the exercise.
Show fields (10)
idintegerPrimary key of the studio device. Internal ID.
namestringName of the device.
descriptionstringDescription of the device.
manufacturerstringManufacturer of the device.
modelstringModel of the device.
device_typestringType of the device, for example treadmill or bike.
identifierstringIdentifier of the device at the manufacturer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
curl --request GET \
--url https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'GET', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42")
.get()
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_session_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingSessionEntryController.get('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"session": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"set_number": 1,
"repetitions": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1
}Update a single StudioTrainingSessionEntry
PUT/api/crm/studio_training/session_entry/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataStudioTrainingSessionEntryShow fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
presetStudioTrainingPresetTraining preset performed.
deviceStudioDeviceDevice used for the exercise.
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
Responses
200Update a single StudioTrainingSessionEntryStudioTrainingSessionEntry
Show fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
Show fields (16)
idintegerPrimary key of the training session. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person who trained.
planStudioTrainingPlanTraining plan the session belongs to.
plan_dayStudioTrainingPlanDayPlan day the session belongs to.
trainerCRMPerson10Trainer who supervised the unit, if any
performed_atstring (date-time)Time the training was performed.
duration_secondsintegerDuration of the session in seconds.
statusstringStatus of the session, for example planned or done.
sourcestringSource of the session, for example app or device.
rpenumber (float)Overall rate of perceived exertion of the unit
average_heart_rateintegerAverage heart rate in beats per minute.
caloriesintegerCalories burned.
notesstringNotes of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
Show fields (21)
idintegerPrimary key of the plan exercise. Internal ID.
plan_dayStudioTrainingPlanDayPlan day the exercise belongs to.
presetStudioTrainingPresetTraining preset of the exercise.
deviceStudioDeviceOptional concrete machine for this exercise
namestringOverrides the preset name when the trainer renamed the exercise for this plan
setsintegerNumber of sets.
repetitionsintegerNumber of repetitions per set.
repetitions_tointegerUpper bound if the prescription is a repetition range (e.g. 8 - 12)
weightnumber (float)Weight per repetition.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of one set in seconds for time based exercises
rest_secondsintegerPause between sets in seconds
tempostringMovement tempo notation, e.g. "2-0-2-0"
intensity_percentnumber (float)Target intensity in percent of the one repetition maximum
rpenumber (float)Rate of perceived exertion / reps in reserve target
circuit_groupstringExercises of the same day sharing this key form a superset / circuit block
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
presetStudioTrainingPresetTraining preset performed.
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
deviceStudioDeviceDevice used for the exercise.
Show fields (10)
idintegerPrimary key of the studio device. Internal ID.
namestringName of the device.
descriptionstringDescription of the device.
manufacturerstringManufacturer of the device.
modelstringModel of the device.
device_typestringType of the device, for example treadmill or bike.
identifierstringIdentifier of the device at the manufacturer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
curl --request PUT \
--url https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
}
}
'const options = {
method: 'PUT',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
session: {
id: 42,
performed_at: '2026-10-15T09:30:00+02:00',
duration_seconds: 1,
status: 'string',
source: 'string',
rpe: 1.5
},
plan_exercise: {
id: 42,
name: 'Beispiel',
sets: 1,
repetitions: 1,
repetitions_to: 1,
weight: 1.5
},
preset: {
id: 42,
name: 'Beispiel',
description: 'Text',
content_source_name: 'Beispiel',
license_author_url: 'https://vynst.de',
duration: 1
},
device: {
id: 42,
name: 'Beispiel',
description: 'Text',
manufacturer: 'string',
model: 'string',
device_type: 'string'
},
set_number: 1
}
})
};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
payload = { "data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PUT', 'https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', [
'body' => '{"data":{"id":42,"session":{"id":42,"performed_at":"2026-10-15T09:30:00+02:00","duration_seconds":1,"status":"string","source":"string","rpe":1.5},"plan_exercise":{"id":42,"name":"Beispiel","sets":1,"repetitions":1,"repetitions_to":1,"weight":1.5},"preset":{"id":42,"name":"Beispiel","description":"Text","content_source_name":"Beispiel","license_author_url":"https://vynst.de","duration":1},"device":{"id":42,"name":"Beispiel","description":"Text","manufacturer":"string","model":"string","device_type":"string"},"set_number":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Put,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42")
.put(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.put(
Uri.parse('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
}
}),
);
print(response.body);{
"id": 42,
"session": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"set_number": 1,
"repetitions": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1
}Update a single StudioTrainingSessionEntry
PATCH/api/crm/studio_training/session_entry/{identifier}
Path parameters
identifierrequiredstring |
Request body application/json
dataStudioTrainingSessionEntryShow fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
presetStudioTrainingPresetTraining preset performed.
deviceStudioDeviceDevice used for the exercise.
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
Responses
200Update a single StudioTrainingSessionEntryStudioTrainingSessionEntry
Show fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
Show fields (16)
idintegerPrimary key of the training session. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person who trained.
planStudioTrainingPlanTraining plan the session belongs to.
plan_dayStudioTrainingPlanDayPlan day the session belongs to.
trainerCRMPerson10Trainer who supervised the unit, if any
performed_atstring (date-time)Time the training was performed.
duration_secondsintegerDuration of the session in seconds.
statusstringStatus of the session, for example planned or done.
sourcestringSource of the session, for example app or device.
rpenumber (float)Overall rate of perceived exertion of the unit
average_heart_rateintegerAverage heart rate in beats per minute.
caloriesintegerCalories burned.
notesstringNotes of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
Show fields (21)
idintegerPrimary key of the plan exercise. Internal ID.
plan_dayStudioTrainingPlanDayPlan day the exercise belongs to.
presetStudioTrainingPresetTraining preset of the exercise.
deviceStudioDeviceOptional concrete machine for this exercise
namestringOverrides the preset name when the trainer renamed the exercise for this plan
setsintegerNumber of sets.
repetitionsintegerNumber of repetitions per set.
repetitions_tointegerUpper bound if the prescription is a repetition range (e.g. 8 - 12)
weightnumber (float)Weight per repetition.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of one set in seconds for time based exercises
rest_secondsintegerPause between sets in seconds
tempostringMovement tempo notation, e.g. "2-0-2-0"
intensity_percentnumber (float)Target intensity in percent of the one repetition maximum
rpenumber (float)Rate of perceived exertion / reps in reserve target
circuit_groupstringExercises of the same day sharing this key form a superset / circuit block
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
presetStudioTrainingPresetTraining preset performed.
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
deviceStudioDeviceDevice used for the exercise.
Show fields (10)
idintegerPrimary key of the studio device. Internal ID.
namestringName of the device.
descriptionstringDescription of the device.
manufacturerstringManufacturer of the device.
modelstringModel of the device.
device_typestringType of the device, for example treadmill or bike.
identifierstringIdentifier of the device at the manufacturer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
curl --request PATCH \
--url https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42 \
--header 'content-type: application/json' \
--header 'x-iw-jwt-token: <TOKEN>' \
--data '
{
"data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
}
}
'const options = {
method: 'PATCH',
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: JSON.stringify({
data: {
id: 42,
session: {
id: 42,
performed_at: '2026-10-15T09:30:00+02:00',
duration_seconds: 1,
status: 'string',
source: 'string',
rpe: 1.5
},
plan_exercise: {
id: 42,
name: 'Beispiel',
sets: 1,
repetitions: 1,
repetitions_to: 1,
weight: 1.5
},
preset: {
id: 42,
name: 'Beispiel',
description: 'Text',
content_source_name: 'Beispiel',
license_author_url: 'https://vynst.de',
duration: 1
},
device: {
id: 42,
name: 'Beispiel',
description: 'Text',
manufacturer: 'string',
model: 'string',
device_type: 'string'
},
set_number: 1
}
})
};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
payload = { "data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
} }
headers = {
"x-iw-jwt-token": "<TOKEN>",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', [
'body' => '{"data":{"id":42,"session":{"id":42,"performed_at":"2026-10-15T09:30:00+02:00","duration_seconds":1,"status":"string","source":"string","rpe":1.5},"plan_exercise":{"id":42,"name":"Beispiel","sets":1,"repetitions":1,"repetitions_to":1,"weight":1.5},"preset":{"id":42,"name":"Beispiel","description":"Text","content_source_name":"Beispiel","license_author_url":"https://vynst.de","duration":1},"device":{"id":42,"name":"Beispiel","description":"Text","manufacturer":"string","model":"string","device_type":"string"},"set_number":1}}',
'headers' => [
'content-type' => 'application/json',
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
Content = new StringContent("{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}");
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42")
.patch(body)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
payload := strings.NewReader("{\"data\":{\"id\":42,\"session\":{\"id\":42,\"performed_at\":\"2026-10-15T09:30:00+02:00\",\"duration_seconds\":1,\"status\":\"string\",\"source\":\"string\",\"rpe\":1.5},\"plan_exercise\":{\"id\":42,\"name\":\"Beispiel\",\"sets\":1,\"repetitions\":1,\"repetitions_to\":1,\"weight\":1.5},\"preset\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"content_source_name\":\"Beispiel\",\"license_author_url\":\"https://vynst.de\",\"duration\":1},\"device\":{\"id\":42,\"name\":\"Beispiel\",\"description\":\"Text\",\"manufacturer\":\"string\",\"model\":\"string\",\"device_type\":\"string\"},\"set_number\":1}}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with package:http (no controller in the iw_erp_api package)
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.patch(
Uri.parse('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42'),
headers: {'x-iw-jwt-token': '<TOKEN>', 'content-type': 'application/json'},
body: jsonEncode({
"data": {
"id": 42,
"session": {
"id": 42,
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string"
},
"set_number": 1
}
}),
);
print(response.body);{
"id": 42,
"session": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"set_number": 1,
"repetitions": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1
}Delete a single StudioTrainingSessionEntry (soft delete)
DELETE/api/crm/studio_training/session_entry/{identifier}
Path parameters
identifierrequiredstring |
Responses
200Delete a single StudioTrainingSessionEntryStudioTrainingSessionEntry
Show fields (19)
idintegerPrimary key of the session entry. Internal ID.
sessionStudioTrainingSession2Training session the entry belongs to.
Show fields (16)
idintegerPrimary key of the training session. Internal ID.
training_person_dataStudioTrainingPersonData2Training data of the person who trained.
planStudioTrainingPlanTraining plan the session belongs to.
plan_dayStudioTrainingPlanDayPlan day the session belongs to.
trainerCRMPerson10Trainer who supervised the unit, if any
performed_atstring (date-time)Time the training was performed.
duration_secondsintegerDuration of the session in seconds.
statusstringStatus of the session, for example planned or done.
sourcestringSource of the session, for example app or device.
rpenumber (float)Overall rate of perceived exertion of the unit
average_heart_rateintegerAverage heart rate in beats per minute.
caloriesintegerCalories burned.
notesstringNotes of the person.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
plan_exerciseStudioTrainingPlanExercisePrescription this entry was performed against, if the unit followed a plan
Show fields (21)
idintegerPrimary key of the plan exercise. Internal ID.
plan_dayStudioTrainingPlanDayPlan day the exercise belongs to.
presetStudioTrainingPresetTraining preset of the exercise.
deviceStudioDeviceOptional concrete machine for this exercise
namestringOverrides the preset name when the trainer renamed the exercise for this plan
setsintegerNumber of sets.
repetitionsintegerNumber of repetitions per set.
repetitions_tointegerUpper bound if the prescription is a repetition range (e.g. 8 - 12)
weightnumber (float)Weight per repetition.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of one set in seconds for time based exercises
rest_secondsintegerPause between sets in seconds
tempostringMovement tempo notation, e.g. "2-0-2-0"
intensity_percentnumber (float)Target intensity in percent of the one repetition maximum
rpenumber (float)Rate of perceived exertion / reps in reserve target
circuit_groupstringExercises of the same day sharing this key form a superset / circuit block
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
presetStudioTrainingPresetTraining preset performed.
Show fields (25)
idintegerPrimary key of the training preset. Internal ID.
namestringName of the exercise.
descriptionstringDescription of the exercise.
imageAttachment10Image of the exercise.
videoAttachment10Video of the exercise.
durationintegerTypical duration of the exercise in seconds.
muscle_groupsarray<StudioTrainingMuscleGroup>Primarily trained muscle groups
secondary_muscle_groupsarray<StudioTrainingMuscleGroup>Secondarily trained muscle groups
exercise_typestringCategory of the exercise, e.g. strength, cardio, mobility, rehab
equipmentstringRequired equipment as free text, e.g. barbell, cable machine, bodyweight
execution_notesstringExecution cues and safety notes for the member
default_setsintegerDefault prescription proposed when the preset is added to a plan
default_repetitionsintegerDefault number of repetitions.
default_rest_secondsintegerDefault rest time in seconds.
content_sourcestringOne of the CONTENT_SOURCE_* constants
content_source_namestringName of the catalogue the entry was seeded from, e.g. wger
licensestringLicence of the imported content, e.g. CC-BY-SA 4.0
license_authorstringAuthor that has to be named to fulfil the licence attribution
license_author_urlstringLink to the author of the image or video license.
review_statusstringOne of the REVIEW_STATUS_* constants, used to keep generated or imported exercise instructions under human control before they are published
reviewed_atstring (date-time)Time the exercise was reviewed.
reviewed_bystringName of the reviewer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
deviceStudioDeviceDevice used for the exercise.
Show fields (10)
idintegerPrimary key of the studio device. Internal ID.
namestringName of the device.
descriptionstringDescription of the device.
manufacturerstringManufacturer of the device.
modelstringModel of the device.
device_typestringType of the device, for example treadmill or bike.
identifierstringIdentifier of the device at the manufacturer.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
set_numberintegerNumber of the set within the exercise, starting at 1
repetitionsintegerNumber of repetitions performed.
weightnumber (float)Weight used.
weight_unitstringUnit of the weight, for example kg.
duration_secondsintegerDuration of the exercise in seconds.
rest_secondsintegerRest time after the exercise in seconds.
distancenumber (float)Distance covered.
rpenumber (float)Rate of perceived exertion, from 1 to 10.
completedbooleanThe exercise was completed.
notesstringNotes on the exercise.
createdstring (date-time)Point in time the entity was created.
updatedstring (date-time)Point in time the entity was last updated.
deletedbooleanThis property is used to mark an entity as deleted / archived
orderintegerPosition of the entity in the order.
curl --request DELETE \
--url https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42 \
--header 'x-iw-jwt-token: <TOKEN>'const options = {method: 'DELETE', headers: {'x-iw-jwt-token': '<TOKEN>'}};
fetch('https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
headers = {"x-iw-jwt-token": "<TOKEN>"}
response = requests.delete(url, headers=headers)
print(response.text)<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42', [
'headers' => [
'x-iw-jwt-token' => '<TOKEN>',
],
]);
echo $response->getBody();using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"),
Headers =
{
{ "x-iw-jwt-token", "<TOKEN>" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42")
.delete(null)
.addHeader("x-iw-jwt-token", "<TOKEN>")
.build();
Response response = client.newCall(request).execute();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://your-instance.iw-erp.de/api/crm/studio_training/session_entry/42"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("x-iw-jwt-token", "<TOKEN>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Dart with the iw_erp_api package
import 'package:iw_erp_api/clients/studio_training_session_entry_controller.dart';
import 'package:iw_erp_api/logic/iw_api_state.dart';
IwApiState().host = 'your-instance.iw-erp.de';
IwApiState().currentJwtApiToken = '<TOKEN>';
final result = await StudioTrainingSessionEntryController.delete('42');
if (result.success) {
print(result.data);
}{
"id": 42,
"session": {
"id": 42,
"training_person_data": {
"id": 42,
"weight": 1.5,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"plan": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"times_per_week": 1,
"status": "string",
"is_template": true,
"valid_from": "2026-10-15T09:30:00+02:00",
"valid_until": "2026-10-15T09:30:00+02:00",
"review_date": "2026-10-15T09:30:00+02:00",
"training_goal": "string"
},
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"trainer": {
"id": 42,
"first_name": "Lena",
"last_name": "Hartmann",
"title": "Beispiel",
"language": "de",
"support_description": "Text",
"profile_picture_url": "https://vynst.de",
"address_street": "Jakobistr. 39",
"address_city": "Hannover",
"address_zip": "30163"
},
"performed_at": "2026-10-15T09:30:00+02:00",
"duration_seconds": 1,
"status": "string",
"source": "string",
"rpe": 1.5
},
"plan_exercise": {
"id": 42,
"name": "Beispiel",
"plan_day": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"day_of_week": 1,
"rounds": 1,
"round_rest_seconds": 1,
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true,
"order": 1
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"duration": 1,
"exercise_type": "string",
"equipment": "string",
"execution_notes": "string",
"default_sets": 1
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"sets": 1,
"repetitions": 1,
"repetitions_to": 1,
"weight": 1.5,
"weight_unit": "string"
},
"preset": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"content_source_name": "Beispiel",
"license_author_url": "https://vynst.de",
"image": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"video": {
"id": 42,
"ocr_from_name": "Beispiel",
"ocr_from_email": "lena.hartmann@example.org",
"ocr_from_phone": "+49 511 123456",
"ocr_to_name": "Beispiel",
"ocr_to_email": "lena.hartmann@example.org",
"ocr_to_phone": "+49 511 123456",
"filename": "string",
"filesize": "string",
"mimetype": "string"
},
"duration": 1,
"exercise_type": "string",
"equipment": "string"
},
"device": {
"id": 42,
"name": "Beispiel",
"description": "Text",
"manufacturer": "string",
"model": "string",
"device_type": "string",
"identifier": "42",
"created": "2026-10-15T09:30:00+02:00",
"updated": "2026-10-15T09:30:00+02:00",
"deleted": true
},
"set_number": 1,
"repetitions": 1,
"weight": 1.5,
"weight_unit": "string",
"duration_seconds": 1
}