---
title: "Generate synthetic seed data"
method: POST
path: "/api/v1/settings/seed"
tags: ["Internal: Seed Data"]
---

# Generate synthetic seed data

`POST /api/v1/settings/seed`

Dispatches a Celery task to generate synthetic users with configurable health data profiles.

## Request body

- SeedDataRequest — API request to generate seed data.
  - `num_users` integer
  - `profile` SeedProfileConfig — Complete seed data generation configuration.
    - `preset` string, nullable
    - `generate_workouts` boolean
    - `generate_sleep` boolean
    - `generate_time_series` boolean
    - `providers` ProviderName[], nullable — Specific providers. None = random selection.
    - `num_connections` integer
    - `workout_config` WorkoutConfig — Parameters controlling workout generation.
      - `count` integer
      - `workout_types` WorkoutType[], nullable — Specific workout types to generate. None = random from all.
      - `duration_min_minutes` integer
      - `duration_max_minutes` integer
      - `hr_min_range` unknown[]
        - unknown
      - `hr_max_range` unknown[]
        - unknown
      - `steps_range` unknown[]
        - unknown
      - `date_range_months` integer
      - `date_from` string, date, nullable — Explicit start date. Overrides date_range_months.
      - `date_to` string, date, nullable — Explicit end date. Overrides date_range_months.
    - `sleep_config` SleepConfig — Parameters controlling sleep generation.
      - `count` integer
      - `duration_min_minutes` integer
      - `duration_max_minutes` integer
      - `nap_chance_pct` integer
      - `weekend_catchup` boolean — If True, weekday sleep is shorter and weekend sleep is longer.
      - `date_range_months` integer
      - `date_from` string, date, nullable — Explicit start date. Overrides date_range_months.
      - `date_to` string, date, nullable — Explicit end date. Overrides date_range_months.
      - `stage_profile` string, nullable — Named sleep stage profile. None = use stage_distribution.
      - `stage_distribution` SleepStageDistribution — Percentage ranges for each sleep stage. Light = remainder (100% - others).
        - `deep_pct_range` unknown[]
          - unknown
        - `rem_pct_range` unknown[]
          - unknown
        - `awake_pct_range` unknown[]
          - unknown
    - `time_series_config` TimeSeriesConfig — Parameters controlling continuous time-series generation. Continuous time-series are emitted across the full date range independently from workouts (e.g. heart rate every 5 min, weight weekly). Workout-bound series (running_power, cadence, ...) are still emitted inside workout windows and are not controlled by this config.
      - `enabled_types` SeriesType[] — Specific series types to emit. Empty list = no continuous series emitted. Workout-bound types are never affected by this list - they follow the workout generator.
      - `include_blood_pressure` boolean — Emit paired blood_pressure_systolic + blood_pressure_diastolic.
      - `date_range_months` integer
      - `date_from` string, date, nullable — Explicit start date. Overrides date_range_months.
      - `date_to` string, date, nullable — Explicit end date. Overrides date_range_months.
  - `random_seed` integer, nullable — Seed for reproducible generation. None = random.

## Response `202`

Successful Response

- SeedDataResponse — API response after dispatching seed task.
  - `task_id` string, required
  - `status` string, required
  - `seed_used` integer, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/openwearables/apis/open-wearables-api.md) · [All operations](https://skmtc.net/openwearables/apis/open-wearables-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openwearables/open-wearables-api/versions/37c1c527cd8f/schema)
