Skip to main content
REST API · v1

Build on HubFit

The HubFit API connects your coaching business to the rest of your stack. Add clients when they sign up elsewhere, review check-ins from your own tools, report on workouts and nutrition, and hear about every check-in, workout and purchase with webhooks.

Base URLhttps://api.hubfit.com/v1
resources
18
resources
endpoints
45
endpoints
webhook events
5
webhook events
Review a check-in
curl -X POST https://api.hubfit.com/v1/check-in-submissions/6ad6af25540e6a26540ffd23/review \
  -H "Authorization: Bearer $HUBFIT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "Great week, Jordan. Keep the step count up."
  }'
Response200 OK
{
  "data": {
    "id": "6ad6af9094a2ea9194a47d8e",
    "status": "reviewed",
    "reviewedAt": "2026-10-26T14:32:05.000Z",
    "clientNotified": true
  }
}

Get started

Start building

API reference

Every resource, one consistent API

Each resource has an object, predictable endpoints and examples in cURL, Node.js and Python.

Progress

Introduction

How the API works

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 tell your server when a client is added, submits a check-in or a questionnaire, finishes a workout or buys a package.

The API and webhooks are on the Ultimate plan. The MCP server, which connects AI assistants such as Claude and ChatGPT, is on every paid plan.

Base URL
https://api.hubfit.com/v1
ConventionDetail
Base URLhttps://api.hubfit.com/v1, over HTTPS.
FormatJSON request and response bodies, with field names in camelCase. Send Content-Type: application/json with every body.
ResponsesA record comes back as { "data": { ... } }, a list as { "data": [ ... ], "nextCursor", "totalCount" }. See Pagination.
IDs24-character hex strings, such as 6ad6af41d3199442d31b2743.
Times and datesTimestamps 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.
MoneyAn integer in the currency's minor units with a lowercase ISO 4217 code: "amount": 14900, "currency": "usd" is $149.00.
UnitsWeights and volumes are in each client's chosen unit (weightUnit) and never converted. heightCm is always centimeters.
Empty valuesA field with no value is null, not left out, so a record always has the same shape.
Response200 OK
{
  "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"
  }
}

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.

  • Deleted clients are never returned. Asking for one is a 404, as for one that doesn't exist.
  • Archived clients appear in 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.

Prefer no code? The HubFit Zapier app offers ready-made triggers and actions.

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. Building something for other coaches? Email contact@hubfit.com about a partner integration first.

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: it's the same file the API checks every request against.

For AI tools

Docs your AI assistant can read

Point ChatGPT, Claude or your own agent at these and it has the whole API in context.

FAQ

Frequently asked questions

Does HubFit have an API?

Yes. HubFit has a REST API at https://api.hubfit.com/v1. It reads clients and what they log (check-ins, questionnaires, completed workouts, exercises, nutrition, habits, metrics and health data), adds clients with an onboarding flow, reviews check-ins, sends messages, and manages notes, tasks, on-demand access and webhooks. It takes and returns JSON and uses bearer API keys. It's on the Ultimate plan.

How do I get a HubFit API key?

The workspace's owner creates keys in HubFit under Settings > API, choosing what each key can do and when it expires. Keys start with hubfit_sk_ and are shown once, so copy the key straight away and store it on your server.

Does the HubFit API support webhooks?

Yes. Add an HTTPS endpoint and HubFit sends client.created, check_in_submission.created, completed_workout.created, package_purchase.created, questionnaire_submission.created events as they happen. Requests are signed as Standard Webhooks describes, with webhook-id, webhook-timestamp and webhook-signature headers, and a failed request is retried 3 times over about 7 hours.

What are the HubFit API rate limits?

Each coach can make 120 requests per minute, shared by their API keys, connected apps and the MCP server, plus 30 messages a minute and 500 a day. Responses carry RateLimit-Policy and RateLimit headers, and a 429 response carries Retry-After.

Can I connect HubFit to other apps without code?

Yes. The HubFit Zapier app offers ready-made triggers and actions, with no code.

Can AI assistants and coding tools use the HubFit API docs?

Yes. The docs publish an llms.txt index, an llms-full.txt file with the whole reference, a Markdown version of every page (add .md to the URL) and the OpenAPI 3.1 spec at /developers/openapi.json, the same file the API checks requests against.