Training Progress
See how far each staff member is with the lessons their shop set for them: their job role's lessons, the "Everyone else" lessons for staff with no job role, and any extra paths the owner assigned. The numbers are the same ones the Staff list's Training column and Team training show.
Read only. Needs the staff:read scope.
Get Training Progress
Endpoint
GET /v1/training/progress
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
staff_id | integer | No | One staff member. Leave out for every active staff member |
Example Request
curl -X GET "https://app.equipdash.com/api/v1/training/progress?staff_id=12" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"data": [
{
"staff_id": 12,
"name": "Sam Rivera",
"status": "in_progress",
"progress": "2 of 4 done",
"done": 2,
"total": 4,
"has_login": true,
"last_watched_at": "2026-10-20T14:05:00+00:00",
"next_lesson": { "id": "bookings/fulfillment", "title": "Booking Fulfillment" },
"paths": [
{
"path_id": 31,
"kind": "role",
"name": "Front Desk",
"title": "Front Desk training",
"done": 2,
"total": 4,
"due_date": null,
"lessons": [
{ "id": "bookings/pos/creating-pos-booking", "title": "Creating a POS Booking", "completed_at": "2026-10-18T09:12:00+00:00" },
{ "id": "bookings/payments/recording-payment", "title": "Recording a Payment", "completed_at": "2026-10-20T14:05:00+00:00" },
{ "id": "bookings/fulfillment", "title": "Booking Fulfillment", "completed_at": null },
{ "id": "search/global-search", "title": "Global Search & Command Bar", "completed_at": null }
]
}
]
}
],
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-10-22T10:00:00+00:00"
}
}
Fields
| Field | Description |
|---|---|
status | done, in_progress, not_started, no_login (no login yet, so they cannot start) or none (no lessons) |
progress | The words the app shows: "2 of 4 done", "Done", "Not started" or "No login yet" |
paths[].kind | role (a job role's lessons), team (Everyone else) or staff (an extra path) |
paths[].name | The job role's name, "Everyone else", or the extra path's name |
paths[].due_date | Set on extra paths only, YYYY-MM-DD |
A staff_id that is not an active staff member of your account returns 404.