REST API reference
Everfit API
15 endpoints for Everfit. Each one is a POST with a JSON body, called with your API key.
- Base URL
- https://cotlet.dev/api/v1/everfit
- Connects with
- Your own Everfit coach account (owner or admin to assign another coach to a new client)
- Integration page
- Everfit
| Endpoint | Access | Description |
|---|---|---|
| list_clients | read | Clients in your workspace with type, coach, groups and status. |
| get_client | read | Client overview: profile, goals, limitations or injuries, private notes and workout counts. |
| list_workouts | read | Workouts on a client's training calendar in a date range, with completion and logged results. |
| get_body_metrics | read | Entries for a client's tracked metrics, such as weight, with date, time and unit. |
| list_programs | read | Programs in your Program Library with length in weeks. |
| list_autoflows | read | Your Autoflows with name, status and number of clients. |
| list_conversations | read | Your Inbox conversations with clients: who, unread flag and last message. |
| get_conversation | read | Messages with one client, oldest first, with links to images and videos. |
| invite_client | write | Add a client and email them an invite to set up the Everfit app. |
| assign_program | write | Add a program to a client's training calendar from a start date. |
| add_client_to_autoflow | write | Enroll a client in an Autoflow; an active one sends its workouts, tasks and announcements. |
| log_body_metric | write | Add a result for one of a client's tracked metrics. |
| assign_task | write | Add a task to a client's calendar, with instructions and a reminder time. |
| send_message | write | Send a message to a client in Inbox, as you. |
| send_broadcast | write | Inbox Broadcast to many clients at once. Studio plan. |
List clients
readPOST https://cotlet.dev/api/v1/everfit/list_clients
Lists your clients with type (online, in person or hybrid), the coach they belong to, groups and status. Archived clients are returned only when you ask for them. Use the client_id of each item in the other tools. Pass next_cursor back as cursor for the next page.
Parameters
| Name | Type | Description |
|---|---|---|
| status | enum | active or archived. Default: active. |
| type | enum | online, in_person or hybrid. |
| group | string | Only clients in this group. |
| coach_id | string | Only clients of this coach. |
| search | string | Name or email contains. |
| limit | integer | 1 to 200. Default: 50. |
| cursor | string | Next page cursor from the previous call. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/list_clients \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("everfit", "list_clients") const result = await cotlet.call('everfit', 'list_clients'); cotlet call everfit list_clients Example response
{
"clients": [
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"first_name": "Sam",
"last_name": "Rivera",
"email": "sam@example.com",
"type": "online",
"coach_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"groups": [
"Fat loss"
],
"status": "active",
"joined_at": "2026-09-15"
}
],
"next_cursor": null
} Get client
readPOST https://cotlet.dev/api/v1/everfit/get_client
Returns what the client overview page shows: profile, goals, limitations or injuries, your private notes, and the number of workouts tracked in the last 7 and 30 days. Notes and limitations are not shared with the client.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/get_client \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"client_8c41d2"}' result = client.call("everfit", "get_client", {"client_id":"client_8c41d2"}) const result = await cotlet.call('everfit', 'get_client', {"client_id":"client_8c41d2"}); cotlet call everfit get_client --data '{"client_id":"client_8c41d2"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"first_name": "Sam",
"last_name": "Rivera",
"type": "online",
"goals": "Lose 5 kg before the wedding in March.",
"limitations": "Mild left knee pain on deep squats.",
"notes": "Prefers morning sessions.",
"workouts_tracked": {
"last_7_days": 0,
"last_30_days": 9
}
} List workouts
readPOST https://cotlet.dev/api/v1/everfit/list_workouts
Returns the workouts on one client's training calendar between two dates, each with whether the client completed it and the results they logged. The default range is the last 7 days and the next 7 days. Use it to find clients with no tracked workouts.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| from | date | Start date. Default: 7 days ago. |
| to | date | End date. Default: 7 days ahead. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/list_workouts \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"client_8c41d2"}' result = client.call("everfit", "list_workouts", {"client_id":"client_8c41d2"}) const result = await cotlet.call('everfit', 'list_workouts', {"client_id":"client_8c41d2"}); cotlet call everfit list_workouts --data '{"client_id":"client_8c41d2"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"workouts": [
{
"workout_id": "w_4a91",
"date": "2026-10-06",
"title": "Lower Body A",
"completed": false,
"results": null
},
{
"workout_id": "w_4a92",
"date": "2026-10-08",
"title": "Upper Body A",
"completed": false,
"results": null
}
],
"completed_count": 0,
"planned_count": 2
} Get body metrics
readPOST https://cotlet.dev/api/v1/everfit/get_body_metrics
Returns the entries a client has for a metric, such as Weight or a custom metric, each with date, time, value and unit, plus the change from the first to the last entry in the range. Only metrics enabled for that client return data. Without metric, it returns every tracked metric.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| metric | string | Metric name, e.g. Weight. Default: all tracked metrics. |
| from | date | Start date. Default: 90 days ago. |
| to | date | End date. Default: today. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/get_body_metrics \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","metric":"Weight","from":"2026-09-14","to":"2026-10-11"}' result = client.call("everfit", "get_body_metrics", {"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","metric":"Weight","from":"2026-09-14","to":"2026-10-11"}) const result = await cotlet.call('everfit', 'get_body_metrics', {"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","metric":"Weight","from":"2026-09-14","to":"2026-10-11"}); cotlet call everfit get_body_metrics --data '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","metric":"Weight","from":"2026-09-14","to":"2026-10-11"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"metric": "Weight",
"unit": "kg",
"entries": [
{
"recorded_at": "2026-07-12T08:10:00Z",
"value": 84.2
},
{
"recorded_at": "2026-08-16T08:05:00Z",
"value": 82.9
},
{
"recorded_at": "2026-09-20T08:20:00Z",
"value": 81.5
},
{
"recorded_at": "2026-10-10T08:12:00Z",
"value": 80.6
}
],
"change": -3.6
} List programs
readPOST https://cotlet.dev/api/v1/everfit/list_programs
Lists the programs in your Program Library with their length in weeks. Pass program_id to assign_program.
Parameters
| Name | Type | Description |
|---|---|---|
| search | string | Program name contains. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/list_programs \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("everfit", "list_programs") const result = await cotlet.call('everfit', 'list_programs'); cotlet call everfit list_programs Example response
{
"programs": [
{
"program_id": "65d8b7c6a5f4e3d2c1b0a9f8",
"title": "Beginner Strength",
"weeks": 8
},
{
"program_id": "65d8b7c6a5f4e3d2c1b0a9f9",
"title": "Hypertrophy Block",
"weeks": 12
}
]
} List Autoflows
readPOST https://cotlet.dev/api/v1/everfit/list_autoflows
Lists the Autoflows you can see, your own and those shared with the team, with their status (active or paused) and how many clients are in each. Adding a client to a paused Autoflow sends them nothing until it is activated.
Parameters
| Name | Type | Description |
|---|---|---|
| status | enum | active, paused or all. Default: all. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/list_autoflows \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("everfit", "list_autoflows") const result = await cotlet.call('everfit', 'list_autoflows'); cotlet call everfit list_autoflows Example response
{
"autoflows": [
{
"autoflow_id": "65e0a1b2c3d4e5f6a7b8c9d0",
"name": "12-week Fat Loss",
"status": "active",
"clients": 18
},
{
"autoflow_id": "65e0a1b2c3d4e5f6a7b8c9d1",
"name": "New client onboarding",
"status": "paused",
"clients": 4
}
]
} List conversations
readPOST https://cotlet.dev/api/v1/everfit/list_conversations
Lists your Inbox conversations with clients, with the last message and whether it is unread. Chats with teammates are in the Team tab in Everfit and are not returned. Set unread_only to get what needs an answer.
Parameters
| Name | Type | Description |
|---|---|---|
| unread_only | boolean | Only conversations with unread messages. |
| limit | integer | 1 to 100. Default: 30. |
| cursor | string | Next page cursor from the previous call. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/list_conversations \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("everfit", "list_conversations") const result = await cotlet.call('everfit', 'list_conversations'); cotlet call everfit list_conversations Example response
{
"conversations": [
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"name": "Sam Rivera",
"unread": true,
"last_message": "Can I swap barbell rows for dumbbell rows this week?",
"updated_at": "2026-10-10T17:42:00Z"
}
],
"next_cursor": null
} Get conversation
readPOST https://cotlet.dev/api/v1/everfit/get_conversation
Returns the messages in your Inbox conversation with one client, oldest first, with who sent each and links to images and videos they attached. Read the thread before drafting a reply.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| limit | integer | 1 to 200. Default: 50. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/get_conversation \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"client_8c41d2"}' result = client.call("everfit", "get_conversation", {"client_id":"client_8c41d2"}) const result = await cotlet.call('everfit', 'get_conversation', {"client_id":"client_8c41d2"}); cotlet call everfit get_conversation --data '{"client_id":"client_8c41d2"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"messages": [
{
"from": "Sam Rivera",
"text": "Can I swap barbell rows for dumbbell rows this week?",
"media": [],
"sent_at": "2026-10-10T17:42:00Z"
}
]
} POST https://cotlet.dev/api/v1/everfit/invite_client
Adds a client with first name, last name, email and type, and Everfit emails them an invite right away to set up their profile. By default you are their coach; owners and admins can assign another coach. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| first_name required | string | First name. |
| last_name required | string | Last name. |
| email required | string | Client email; the invite goes here. |
| type | enum | online, in_person or hybrid. Default: online. |
| coach_id | string | Assign another coach. Owners and admins only. Default: you. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/invite_client \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"first_name":"first name","last_name":"last name","email":"jane@example.com"}' result = client.call("everfit", "invite_client", {"first_name":"first name","last_name":"last name","email":"jane@example.com"}) const result = await cotlet.call('everfit', 'invite_client', {"first_name":"first name","last_name":"last name","email":"jane@example.com"}); cotlet call everfit invite_client --data '{"first_name":"first name","last_name":"last name","email":"jane@example.com"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5b7",
"email": "alex@example.com",
"type": "online",
"coach_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"status": "invited"
} POST https://cotlet.dev/api/v1/everfit/assign_program
Adds a program from your Program Library to one client's training calendar, starting on the date you give. Set start_day and end_day to assign only part of the program. Workouts appear on the calendar right away and you can adjust them per client afterwards. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| program_id required | string | Program ID from list_programs. |
| start_date required | date | First day of the program on the calendar. |
| start_day | integer | Program day to start at. Default: 1. |
| end_day | integer | Program day to end at. Default: the last day. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/assign_program \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","program_id":"65d8b7c6a5f4e3d2c1b0a9f8","start_date":"2026-10-12"}' result = client.call("everfit", "assign_program", {"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","program_id":"65d8b7c6a5f4e3d2c1b0a9f8","start_date":"2026-10-12"}) const result = await cotlet.call('everfit', 'assign_program', {"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","program_id":"65d8b7c6a5f4e3d2c1b0a9f8","start_date":"2026-10-12"}); cotlet call everfit assign_program --data '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","program_id":"65d8b7c6a5f4e3d2c1b0a9f8","start_date":"2026-10-12"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"program": {
"program_id": "65d8b7c6a5f4e3d2c1b0a9f8",
"title": "Beginner Strength",
"weeks": 8
},
"start_date": "2026-10-12",
"end_date": "2026-12-06",
"workouts_added": 24
} POST https://cotlet.dev/api/v1/everfit/add_client_to_autoflow
Adds a client to an Autoflow. In an active Autoflow the client is activated and receives all scheduled workouts, announcements and tasks; in a paused one they receive nothing until it is activated. start_date and start_day set where the client begins. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| autoflow_id required | string | Autoflow ID from list_autoflows. |
| start_date | date | Date the client starts. Default: today. |
| start_day | integer | Autoflow day to begin on. Default: 1. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/add_client_to_autoflow \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"client_8c41d2","autoflow_id":"autoflow_8c41d2"}' result = client.call("everfit", "add_client_to_autoflow", {"client_id":"client_8c41d2","autoflow_id":"autoflow_8c41d2"}) const result = await cotlet.call('everfit', 'add_client_to_autoflow', {"client_id":"client_8c41d2","autoflow_id":"autoflow_8c41d2"}); cotlet call everfit add_client_to_autoflow --data '{"client_id":"client_8c41d2","autoflow_id":"autoflow_8c41d2"}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"autoflow": {
"autoflow_id": "65e0a1b2c3d4e5f6a7b8c9d0",
"name": "12-week Fat Loss",
"status": "active"
},
"client_status": "active",
"start_date": "2026-10-12",
"start_day": 1
} POST https://cotlet.dev/api/v1/everfit/log_body_metric
Saves a result for one metric enabled for the client, with a value and the date and time of the entry. The client sees it in their metrics and charts. The metric must already be enabled for the client in Everfit. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| metric required | string | Metric name, e.g. Weight. |
| value required | number | Value in the metric's unit. |
| recorded_at | datetime | ISO 8601. Default: now. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/log_body_metric \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"client_8c41d2","metric":"metric","value":1}' result = client.call("everfit", "log_body_metric", {"client_id":"client_8c41d2","metric":"metric","value":1}) const result = await cotlet.call('everfit', 'log_body_metric', {"client_id":"client_8c41d2","metric":"metric","value":1}); cotlet call everfit log_body_metric --data '{"client_id":"client_8c41d2","metric":"metric","value":1}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"metric": "Weight",
"value": 80.6,
"unit": "kg",
"recorded_at": "2026-10-10T08:12:00Z",
"status": "saved"
} POST https://cotlet.dev/api/v1/everfit/assign_task
Adds one task to a client's calendar on a date. The client gets a push notification on that day, at 10:00 in their local time unless you set reminder_time, and checks the task off in the client app. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| title required | string | Task title. |
| date required | date | Day the task appears. |
| instructions | string | Task details for the client. |
| link | string | URL to attach, e.g. a form or video. |
| reminder_time | string | Reminder time HH:MM in the client's local time. Default: 10:00. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/assign_task \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"client_8c41d2","title":"title","date":"2026-10-01"}' result = client.call("everfit", "assign_task", {"client_id":"client_8c41d2","title":"title","date":"2026-10-01"}) const result = await cotlet.call('everfit', 'assign_task', {"client_id":"client_8c41d2","title":"title","date":"2026-10-01"}); cotlet call everfit assign_task --data '{"client_id":"client_8c41d2","title":"title","date":"2026-10-01"}' Example response
{
"task_id": "t_7c20",
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"title": "Weekly measurements",
"date": "2026-10-12",
"reminder_time": "08:00",
"status": "assigned"
} POST https://cotlet.dev/api/v1/everfit/send_message
Sends a text message to one client in your Inbox conversation, under your name. Everfit lets you edit a plain text message only within 60 minutes. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_id required | string | Client ID from list_clients. |
| text required | string | Message text. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/send_message \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","text":"Hi Maya, Lower Body A and Upper Body A are still open from last week. Is the knee acting up again, or is it the schedule? Reply here and I will adjust this week."}' result = client.call("everfit", "send_message", {"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","text":"Hi Maya, Lower Body A and Upper Body A are still open from last week. Is the knee acting up again, or is it the schedule? Reply here and I will adjust this week."}) const result = await cotlet.call('everfit', 'send_message', {"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","text":"Hi Maya, Lower Body A and Upper Body A are still open from last week. Is the knee acting up again, or is it the schedule? Reply here and I will adjust this week."}); cotlet call everfit send_message --data '{"client_id":"66f1c2a9e4b0a1d2c3f4e5a6","text":"Hi Maya, Lower Body A and Upper Body A are still open from last week. Is the knee acting up again, or is it the schedule? Reply here and I will adjust this week."}' Example response
{
"client_id": "66f1c2a9e4b0a1d2c3f4e5a6",
"message_id": "msg_91d3",
"status": "sent",
"sent_at": "2026-10-11T09:05:00+02:00"
} POST https://cotlet.dev/api/v1/everfit/send_broadcast
Sends an Inbox Broadcast of up to 3 messages to the clients you pick, or to all clients. {first_name} is filled in per client. Needs the Studio plan, and Everfit asks you to wait 2 minutes before the next broadcast. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| client_ids | string[] | Recipients. Omit when all_clients is true. |
| all_clients | boolean | Send to every client. |
| messages required | string[] | Up to 3 messages; {first_name} is filled in per client. |
Request
curl -X POST https://cotlet.dev/api/v1/everfit/send_broadcast \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"messages":["messages"]}' result = client.call("everfit", "send_broadcast", {"messages":["messages"]}) const result = await cotlet.call('everfit', 'send_broadcast', {"messages":["messages"]}); cotlet call everfit send_broadcast --data '{"messages":["messages"]}' Example response
{
"broadcast_id": "bc_2f08",
"recipients": 42,
"messages_per_client": 1,
"status": "sent",
"sent_at": "2026-10-11T09:10:00+02:00"
}