# WeFitter API API

> WeFitter API API on Apizie: 74 endpoints (Get someones biological age on a weekly basis., GET /loyalty/get_recommended_products, GET /loyalty/get_shoppingcart_link, Totals, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://apizie.tech/v1/open-data:wefitter/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:wefitter`
- Category: Open Data
- Status: byok
- Source: https://wefitter.com
- Page: https://apizie.tech/api/open-data/wefitter
- OpenAPI: https://apizie.tech/api/open-data/wefitter/openapi.json

This is the WeFitter API

## Endpoints

### Get someones biological age on a weekly basis.
`GET https://apizie.tech/v1/open-data:wefitter/insights-get-bio-age-weekly` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| start_date | string | yes |  |
| end_date | string | yes |  |

### GET /loyalty/get_recommended_products
`GET https://apizie.tech/v1/open-data:wefitter/loyalty-get-recommended-products` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | no | Number of results to return per page. |
| offset | integer | no | The initial index from which to return the results. |

### GET /loyalty/get_shoppingcart_link
`GET https://apizie.tech/v1/open-data:wefitter/loyalty-get-shoppingcart-link` (byok)

### Totals
`GET https://apizie.tech/v1/open-data:wefitter/app-get-totals` (byok)

### List Challenges
`GET https://apizie.tech/v1/open-data:wefitter/challenge-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | no | Number of results to return per page. |
| offset | integer | no | The initial index from which to return the results. |
| recent | integer | no | Show challenges that have not ended in the last N weeks |

### Create challenge
`POST https://apizie.tech/v1/open-data:wefitter/challenge-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Team leaderboard
`GET https://apizie.tech/v1/open-data:wefitter/challenge-team-standings-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| challenge_public_id | string | yes |  |
| limit | integer | no | Number of results to return per page. |
| offset | integer | no | The initial index from which to return the results. |
| date_range | integer | no | Index of the time period use |

### Team contribution
`GET https://apizie.tech/v1/open-data:wefitter/challenge-team-contribution-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| challenge_public_id | string | yes |  |
| team_public_id | string | yes |  |
| date_range | integer | no | Index of the time period use |

### Get Challenge
`GET https://apizie.tech/v1/open-data:wefitter/challenge-read` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Edit challenge
`POST https://apizie.tech/v1/open-data:wefitter/challenge-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Partial edit challenge
`POST https://apizie.tech/v1/open-data:wefitter/challenge-partial-edit` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Delete challenge
`POST https://apizie.tech/v1/open-data:wefitter/challenge-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Deactivate member
`POST https://apizie.tech/v1/open-data:wefitter/challenge-deactivate-member` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| profile | string | yes | A profile public_id is expected |
| team | string | no | A team public_id is expected |
| is_active | boolean | no | Whether profile actively participates in challenge. While inactive, scores/leaderboard will not be updated but still be visible. |
| body | object | yes | JSON request body |

### This docstring is used by Django Rest Framework
`POST https://apizie.tech/v1/open-data:wefitter/challenge-deactivate-member-2` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Deactivate members
`POST https://apizie.tech/v1/open-data:wefitter/challenge-deactivate-members` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| profile | string | yes | A profile public_id is expected |
| team | string | no | A team public_id is expected |
| is_active | boolean | no | Whether profile actively participates in challenge. While inactive, scores/leaderboard will not be updated but still be visible. |
| body | object | yes | JSON request body |

### This docstring is used by Django Rest Framework
`POST https://apizie.tech/v1/open-data:wefitter/challenge-deactivate-members-2` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Leaderboard
`GET https://apizie.tech/v1/open-data:wefitter/challenge-leaderboard` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| date_range | integer | no | Index of the time period use |

### Leaderboard history
`GET https://apizie.tech/v1/open-data:wefitter/challenge-get-scores-history` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Add member
`POST https://apizie.tech/v1/open-data:wefitter/challenge-member-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Add member
`POST https://apizie.tech/v1/open-data:wefitter/challenge-member-add` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Remove member
`POST https://apizie.tech/v1/open-data:wefitter/challenge-remove-member` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| profile | string | yes | A profile public_id is expected |

### Get members
`GET https://apizie.tech/v1/open-data:wefitter/challenge-get-members` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| limit | integer | no | Number of results to return per page. |
| offset | integer | no | The initial index from which to return the results. |

### Add members
`POST https://apizie.tech/v1/open-data:wefitter/challenge-add-members` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Add members
`POST https://apizie.tech/v1/open-data:wefitter/challenge-add-members-2` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Periods
`GET https://apizie.tech/v1/open-data:wefitter/challenge-periods` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Remove members
`POST https://apizie.tech/v1/open-data:wefitter/challenge-remove-members` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Connect wearable
`POST https://apizie.tech/v1/open-data:wefitter/connection-get-oauth-url` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| connection_slug | string | yes |  |
| body | object | yes | JSON request body |

### Disconnect Wearable
`POST https://apizie.tech/v1/open-data:wefitter/connection-disconnect-wearable` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| connection_slug | string | yes |  |
| profile | string | yes | A profile public_id is expected |

### Notification to all profiles in app
`POST https://apizie.tech/v1/open-data:wefitter/notification-send-to-all-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Notification to specific profiles
`POST https://apizie.tech/v1/open-data:wefitter/notification-send-to-profiles-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### List Profiles
`GET https://apizie.tech/v1/open-data:wefitter/profile-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| search | string | no | A search term. |
| ordering | string | no | Which field to use when ordering the results. |
| limit | integer | no | Number of results to return per page. |
| offset | integer | no | The initial index from which to return the results. |

### Create Profile
`POST https://apizie.tech/v1/open-data:wefitter/profile-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Activity segment
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-activity-segments` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Bio Metric
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-biometric-changes` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Biometric Measurement
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-biometric-changes-2` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |
| measurement_type | string | yes |  |

### BMI
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-bmi-over-time` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Daily details
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-daily-detail` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Daily Summary
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-daily-summary` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |
| deduplicate | boolean | no | If set to true, duplicates will be aggregated. |

### Detail Sample
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-detail-samples` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Electrocardiograms
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-ecg-recordings` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Electrocardiogram data
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-ecg-recordings-data` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Electrocardiogram PDF
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-ecg-pdf` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| datetime | string | yes | The timestamp when the ECG has been recorded in the format `yyyymmddhhmmss`. e.g. `20210913132513` |
| source | string | yes |  |

### Event
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-events` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Create Event
`POST https://apizie.tech/v1/open-data:wefitter/profile-event-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| body | object | yes | JSON request body |

### Heart Rate Sample
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-heartrate-sample` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |
| heart_rate_detail | boolean | no | If set to true it will add heart_rate_samples field |

### Heart Rate Summary
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-heart-rate-summary` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Height
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-height-changes` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Sleep detail
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-sleep-detail` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Sleep Summary
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-sleep-summary` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |
| detail | boolean | no | If set to true and only 1 result is returned, it will add a detail field |

### Stress Sample
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-stress-samples` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Stress Summary
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-stress-summary` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Track Sample
`GET https://apizie.tech/v1/open-data:wefitter/profile-get-gpx-track-samples` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Weight
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-weight-changes` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |

### Workout
`GET https://apizie.tech/v1/open-data:wefitter/profile-list-workouts` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| profile_public_id | string | yes |  |
| cursor | string | no | The pagination cursor value. |
| page_size | integer | no | Number of results to return per page. |
| date_start | string | no | Lower bound of date or timestamp. |
| date_end | string | no | Upper bound of date or timestamp. |
| deduplicate | boolean | no | If set to true, duplicates will be aggregated. |
| heart_rate_detail | boolean | no | If set to true and page_size is 1, it will add heart_rate_samples field |

### Get Profile
`GET https://apizie.tech/v1/open-data:wefitter/profile-read` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Update profile
`POST https://apizie.tech/v1/open-data:wefitter/profile-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Partial Update
`POST https://apizie.tech/v1/open-data:wefitter/profile-update-partial` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Delete Profile
`POST https://apizie.tech/v1/open-data:wefitter/profile-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Challenge
`GET https://apizie.tech/v1/open-data:wefitter/profile-challenge` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| recent | integer | no | Show challenges that have not ended in the last N weeks |
| date_start | string | no | Only return challenges that are active after this time Note: this only affects challenges that are not joined. Defaults to now |
| date_end | string | no | Only return challenges that are active before this time Note: this only affects challenges that are not joined. Defaults to now |

### This docstring is used by Django Rest Framework
`GET https://apizie.tech/v1/open-data:wefitter/profile-challenges` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Connections
`GET https://apizie.tech/v1/open-data:wefitter/profile-connections` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| redirect | string | no | After connecting redirect back to this url. Note: has to be a valid http url. For deeplinks (to apps) first redirect to your own backend… |
| redirect_on_error | boolean | no | If enabled, then user will also be redirected to the redirect url if an error occurs Note: a query parameter 'error' is added to the… |

### List Teams
`GET https://apizie.tech/v1/open-data:wefitter/team-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | no | Number of results to return per page. |
| offset | integer | no | The initial index from which to return the results. |

### Create Team
`POST https://apizie.tech/v1/open-data:wefitter/team-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Team
`GET https://apizie.tech/v1/open-data:wefitter/team-read` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Edit Team
`POST https://apizie.tech/v1/open-data:wefitter/team-update` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Partial Edit a Team
`POST https://apizie.tech/v1/open-data:wefitter/team-edit-team-partial` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Deletes a Team
`POST https://apizie.tech/v1/open-data:wefitter/team-delete` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |

### Add member
`POST https://apizie.tech/v1/open-data:wefitter/team-add-member` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Add member
`POST https://apizie.tech/v1/open-data:wefitter/team-add-member-2` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Remove member
`POST https://apizie.tech/v1/open-data:wefitter/team-remove-member` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| profile | string | yes | A profile public_id is expected |

### Add members
`POST https://apizie.tech/v1/open-data:wefitter/team-add-members` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Add members
`POST https://apizie.tech/v1/open-data:wefitter/team-add-members-2` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Remove members
`POST https://apizie.tech/v1/open-data:wefitter/team-remove-members` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| public_id | string | yes |  |
| body | object | yes | JSON request body |

### Create Token
`POST https://apizie.tech/v1/open-data:wefitter/token-create` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

## Example
```
curl "https://apizie.tech/v1/open-data:wefitter/insights-get-bio-age-weekly" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the WeFitter API API?
Create a free Apizie key, then send GET https://apizie.tech/v1/open-data:wefitter/insights-get-bio-age-weekly with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the WeFitter API API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. WeFitter API itself also needs your own key from api.wefitter.com.

### Can AI agents use the WeFitter API API?
Yes. Add the Apizie MCP server (https://apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:wefitter.

### What is the status of the WeFitter API API?
Needs your own provider key (bring your own key)
