List timesheet entries
List worked hours from the Timesheet tab.
GET https://cotlet.dev/api/v1/shiftbase/timesheet-entries
read
Returns each entry with employee, date, start, end, breaks, hours and status, oldest first. It reads the same list as the Timesheet tab with the same filters. Entries of departments your role cannot open are not returned.
Parameters
| Name | Type | Description |
|---|---|---|
| from string required | string | First day, YYYY-MM-DD. |
| to string required | string | Last day, YYYY-MM-DD. |
| status string | string | One of pending, approved, declined. |
| department_id string | string | Only this department. |
| conflicts_only boolean | boolean | Only entries Shiftbase flags as conflicts. |
Request
curl "https://cotlet.dev/api/v1/shiftbase/timesheet-entries?from=from&to=to" \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("shiftbase", "list_timesheet_entries", {"from":"from","to":"to"}) const result = await cotlet.call('shiftbase', 'list_timesheet_entries', {"from":"from","to":"to"}); cotlet call shiftbase list_timesheet_entries --data '{"from":"from","to":"to"}' Example response
{
"entries": [
{
"id": "40118",
"employee": "Lena Ortiz",
"date": "2026-10-14",
"start": "09:00",
"end": "17:00",
"unpaid_break_min": 30,
"hours": 7.5,
"status": "pending",
"conflict": false
},
{
"id": "40122",
"employee": "Sam Okafor",
"date": "2026-10-18",
"start": "08:00",
"end": "19:00",
"unpaid_break_min": 30,
"hours": 10.5,
"status": "pending",
"conflict": true
}
]
}