# HubFit API

> The HubFit REST API and webhooks for fitness coaches: read clients, check-ins, workouts and nutrition, review check-ins, message clients, and get events live.

Source: https://hubfit.com/developers

## Overview

The HubFit API gives you programmatic access to your coaching workspace: the clients you coach, the check-ins and questionnaires they submit, the workouts, food, habits and metrics they log, and the packages they buy. It's the same data your team sees in HubFit, and what you write through the API, such as a check-in review, a message or a note, shows up in the app straight away.

The API is REST: resource-oriented URLs, JSON in and out, standard HTTP methods and status codes, and bearer API keys. [Webhooks](https://hubfit.com/developers/webhooks) tell your server when a client is added, submits a check-in or a questionnaire, finishes a workout or buys a package.

> **Note:** The API and webhooks are on the **Ultimate** plan. The [MCP server](https://hubfit.com/developers/mcp), which connects AI assistants such as Claude and ChatGPT, is on every paid plan.

**Base URL**

```text
https://api.hubfit.com/v1
```

## Conventions

| Convention | Detail |
| --- | --- |
| Base URL | `https://api.hubfit.com/v1`, over HTTPS. |
| Format | JSON request and response bodies, with field names in camelCase. Send `Content-Type: application/json` with every body. |
| Responses | A record comes back as `{ "data": { ... } }`, a list as `{ "data": [ ... ], "nextCursor", "totalCount" }`. See [Pagination](https://hubfit.com/developers/pagination). |
| IDs | 24-character hex strings, such as `6ad6af41d3199442d31b2743`. |
| Times and dates | Timestamps are ISO 8601 in UTC. Calendar days, such as a check-in's `checkInDate`, are `YYYY-MM-DD`, in the client's own time zone. |
| Money | An integer in the currency's minor units with a lowercase ISO 4217 code: `"amount": 14900, "currency": "usd"` is $149.00. |
| Units | Weights and volumes are in each client's chosen unit (`weightUnit`) and never converted. `heightCm` is always centimeters. |
| Empty values | A field with no value is `null`, not left out, so a record always has the same shape. |

**Response (200 OK)**

```json
{
  "data": {
    "id": "6ad6af41d3199442d31b2743",
    "name": "Jordan Miller",
    "email": "jordan.miller@example.com",
    "status": "active",
    "tags": [
      {
        "id": "6ad6afe58cebe1e48cea4ee3",
        "name": "Online coaching"
      }
    ],
    "dateOfBirth": "1991-04-18",
    "sex": "male",
    "heightCm": 178,
    "timezone": "America/New_York",
    "preferredUnits": {
      "weight": "lb",
      "length": "inch"
    },
    "coachingPeriod": {
      "startDate": "2026-03-02",
      "endDate": "2027-03-01"
    },
    "lastCheckInAt": "2026-10-26T14:32:05.000Z",
    "lastActiveAt": "2026-10-27T07:42:10.000Z",
    "createdAt": "2026-03-02T15:04:11.000Z"
  }
}
```

## Who and what a key reaches

An API key belongs to one coach in one workspace and reaches what that coach can see in HubFit. Each key also has scopes, chosen when it's created, that decide what it can do. See [Authentication](https://hubfit.com/developers/authentication).

- **Deleted clients** are never returned. Asking for one is a `404`, as for one that doesn't exist.
- **Archived clients** appear in [List clients](https://hubfit.com/developers/api/clients#list-clients) when you ask for them with `status`, and nowhere else. Asking for an archived client, or anything of theirs, answers `409 client_archived`: unarchive them in HubFit to read it.
- A record your key can't reach answers exactly like one that doesn't exist: `404`.

## What you can build

- **Sync sign-ups.** [Add a client](https://hubfit.com/developers/api/clients#create-client) when someone buys on your website or books a call, and run an [onboarding flow](https://hubfit.com/developers/api/onboarding-flows) for them in the same request.
- **Review check-ins faster.** Pull [check-ins awaiting review](https://hubfit.com/developers/api/check-in-submissions#list-check-in-submissions) into your own tools, and [send the review](https://hubfit.com/developers/api/check-in-submissions#review-check-in-submission) back with a comment.
- **Report on results.** Compare clients over a week or a month with [client summaries](https://hubfit.com/developers/api/client-summaries), or read every [workout](https://hubfit.com/developers/api/completed-workouts), [nutrition log](https://hubfit.com/developers/api/nutrition) and [metric entry](https://hubfit.com/developers/api/metrics) into a spreadsheet or data warehouse.
- **React as it happens.** Use [webhooks](https://hubfit.com/developers/webhooks) to post in Slack when a client finishes a workout, add a buyer to your CRM, or open a [task](https://hubfit.com/developers/api/tasks) when a check-in comes in.
- **Grant content.** Give clients access to a [workout studio, recipe book or resource collection](https://hubfit.com/developers/api/on-demand) when they join a membership elsewhere.

> **Tip:** Prefer no code? The [HubFit Zapier app](https://hubfit.com/help/articles/automations/zapier) offers ready-made triggers and actions.

## Acceptable use

The API, webhooks and MCP server are for connecting your own coaching business to HubFit. They aren't a platform for building other products, so these aren't allowed:

- **Competing products.** A coaching, training, nutrition or client app or platform that runs on HubFit behind the scenes, or a front end that replaces HubFit for you, your clients or other coaches.
- **Serving other businesses.** A product or service that connects to other coaches' or gyms' HubFit accounts, unless HubFit has approved it as a partner integration.
- **Sharing or reselling access.** Selling, sharing or lending your keys or connections. A developer or agency you hire can build for your workspace with your keys.
- **Getting around limits.** Spreading requests across keys or accounts to raise your rate limit, or copying data beyond what your integration needs.

HubFit can revoke keys and connections that break these rules, and close the account. The full rules are in the [Terms and Conditions](https://hubfit.com/terms-and-conditions#api). Building something for other coaches? Email [contact@hubfit.com](mailto:contact@hubfit.com) about a partner integration first.

## Client libraries

There's no SDK to install. The API works with any HTTP client, and every example in these docs comes in cURL, Node.js (built-in `fetch`, Node 18+) and Python (`requests`). To generate your own client, start from the [OpenAPI spec](https://hubfit.com/developers/openapi.json): it's the same file the API checks every request against.
