KinesteX

AI Trainer Events

Events emitted by the AI Trainer Chat view. On Swift/Kotlin/Flutter they arrive through the generic custom_type / CustomType case with the parsed JSON as a dictionary/map.


EventData FieldsDescription
trainer_schedule_next_workoutscheduledFor: string, sessionType: stringUser picked a date/time for their next session. scheduledFor is YYYY-MM-DDTHH:MM device-local time; sessionType is "workout" or "assessment" (treat missing as "workout")
open_subscription_flowsource: string, date: stringA non-subscribed user tried to generate a workout — present your subscription flow and post subscription_result back ("purchased" or "dismissed")
trainer_assessment_starteddate: stringUser began the in-app fitness assessment
trainer_assessment_completeddate: string, results: object, fitnessLevel: stringAssessment finished — per-exercise reps and level (results.squats / results.pushups) plus an overall fitnessLevel ("beginner" / "intermediate" / "advanced")
trainer_assessment_skippeddate: string, reason: stringUser chose to set their fitness level manually (reason: "set_manually")
trainer_profile_updatedsource: string, profile: objectThe user's fitness profile changed — carries the full current profile; source is "onboarding", "assessment", or "chat". Persist it on your side
workout_exit_request-The user exited a workout that was launched from the trainer

Full payload examples and the subscription handshake: AI Trainer Chat guide and the subscription gating guide.