API Reference

v1 · REST · JSON

Base URL

https://api.pulsefit.app

All requests require a Authorization: Bearer <jwt> header. Responses follow JSON:API conventions with cursor pagination.

Auth

POST/v1/auth/session

Exchange Firebase token for session JWT

GET/v1/auth/me

Fetch current user profile

PATCH/v1/auth/me

Update profile fields

Workouts

GET/v1/workouts

List workouts (paginated)

POST/v1/workouts

Create a workout entry

PATCH/v1/workouts/:id

Update a workout

DELETE/v1/workouts/:id

Delete a workout

AI

POST/v1/ai/plan

Generate personalized training plan

POST/v1/ai/coach-chat

Stream AI coach reply

Wearables

GET/v1/wearables/connections

List linked devices (Apple/Garmin/Whoop)

POST/v1/wearables/sync

Trigger on-demand sync

Coach

GET/v1/clients

Trainer: list assigned clients

POST/v1/clients/:id/message

Send a message to client

Admin

GET/v1/admin/metrics

Platform KPIs (admin only)

POST/v1/admin/users/:id/suspend

Suspend a user

Notifications

POST/v1/notifications/push

Send a push to user/segment

Sample request

POST /v1/workouts HTTP/1.1
Host: api.pulsefit.app
Authorization: Bearer eyJhbGciOiJIUzI1...
Content-Type: application/json

{
  "title": "Tempo Run",
  "type": "Cardio",
  "duration": 35,
  "intensity": "Medium"
}

Status codes

200
OK
201
Created
400
Bad request
401
Unauthorized
403
Forbidden
404
Not found
429
Rate limited
500
Server error

PulseFit API v1.4.2 · Updated May 2026