# User Profile

Parameters that define user characteristics for personalized content and recommendations.

| Parameter | Type | Default | Applies to | What it does internally |
|-----------|------|---------|------------|-------------------------|
| age | number | 30 | All | Sent to the verify API as `birth_year` and used for calorie (BMR) estimation. Accepts either an **age** (1–120) or a literal **birth year** (1900–current year) — both are converted to a birth year internally |
| gender | string | "male" | All | `"male"` or `"female"`. Sent to the verify API; used in the calorie (BMR) formula and AI Trainer profile prefill. (For which demo videos are shown, see `content_gender` under [Language & Localization](/docs/customization-parameters/language-localization)) |
| height | number | 160 | All | Height in **cm**. Sent to the verify API; used in the calorie (BMR) formula |
| weight | number | 70 | All | Weight in **kg**. Sent to the verify API; used in the calorie (BMR) formula |
| fitness_level | string | "beginner" | Main, Plan | `"beginner"`, `"intermediate"`, or `"advanced"`. Filters and sorts the plan list by difficulty. Also attached to analytics |
| lifestyle | string | "lightly_active" | All | `"sedentary"`, `"lightly_active"`, `"active"`, or `"very_active"`. Sent to the verify API and synced to the user's backend profile; prefills the AI Trainer profile |
| body_parts | string[] | [] | Workout, AI Trainer | Filters the exercise list shown on the workout detail page to workouts targeting those body parts, and prefills the AI Trainer's target muscle groups (unknown values are dropped) |
| plan_type | string | null | — (analytics only) | Recorded in analytics only. **Has no functional effect on plan structure in the current version** — do not use it to change plan behavior |

**Important — defaults vs. provided values:** the SDK tracks which of `age`/`gender`/`height`/`weight`/`lifestyle` you *explicitly* passed. Calorie estimates (Mifflin–St Jeor BMR) and AI Trainer profile prefill only use **explicitly provided** values — if any of weight/height/age/gender is missing, calories fall back to a fixed default BMR instead of silently using the defaults above. Passing a complete profile therefore gives noticeably more accurate calorie numbers.

**Backend profile sync:** when all of `age` (valid), `height` > 0, `weight` > 0, and `lifestyle` are provided, the SDK syncs them once per user/company to the KinesteX user profile (used by personalized plans). Partial profiles are never synced, so existing server data is not overwritten with defaults.

**Note:** There is no BMI calculation in the SDK — height/weight feed calorie estimation (BMR) only.

**SDK Support:** Most platforms have direct support via a UserDetails object or postData fields.

**User Profile Configuration**

_Swift (iOS)_
```swift
// Direct SDK support via UserDetails
let user = UserDetails(
    age: 30,
    height: 180,
    weight: 75,
    gender: .Male,
    lifestyle: .Active
)

kinestex.createView(
    user: user,
    // ... other params
)
```

_Kotlin (Android)_
```kotlin
// Direct SDK support via UserDetails
val userDetails = UserDetails(
    age = 30,
    height = 180,
    weight = 75,
    gender = Gender.MALE,
    lifestyle = Lifestyle.ACTIVE
)

KinesteXSDK.createView(
    user = userDetails,
    // ... other params
)
```

_React Native_
```jsx
// Direct support in postData
const postData: IPostData = {
  key: 'YOUR_API_KEY',
  userId: 'user-123',
  company: 'YOUR_COMPANY',
  // User profile - direct support
  age: 30,
  height: 180, // cm
  weight: 75, // kg
  gender: 'Male',
  lifestyle: Lifestyle.Active,
};
```

_Flutter_
```dart
// Direct SDK support via UserDetails
final userDetails = UserDetails(
  age: 30,
  height: 180,
  weight: 75,
  gender: Gender.Male,
  lifestyle: Lifestyle.Active,
);

KinesteXAIFramework.createMainView( // or any other create*View method
  user: userDetails,
  // ... other params
);
```

_HTML / JavaScript_
```html
// Direct in postData object
const postData = {
  userId: "user-123",
  company: "YOUR_COMPANY",
  key: "YOUR_API_KEY",
  // User profile
  age: 30,
  height: 180,
  weight: 75,
  gender: "Male",
  lifestyle: "active",
};
```

_React (TypeScript)_
```tsx
// Direct support in postData
const postData: IPostData = {
  key: 'YOUR_API_KEY',
  userId: 'user-123',
  company: 'YOUR_COMPANY',
  // User profile - direct support
  age: 30,
  height: 180, // cm
  weight: 75, // kg
  gender: 'Male',
  lifestyle: Lifestyle.Active,
};
```

---
Source: https://www.kinestex.com/docs/customization-parameters/user-profile · Index: https://www.kinestex.com/llms.txt
