List time entries
Lists logged time, newest first, a page at a time.
What comes back depends on the token: without permission to see the whole
team's time, you only get your own entries, and
filter[owner_member_id] cannot reach anyone else's.
The money fields — rate, billable_amount, non_billable and
billing_status — are left out entirely for a token that is not allowed
to see billing. Treat them as optional keys rather than assuming they
are always there. The same token cannot filter on
filter[billing_status] either: that would hand back the value the
field is hiding, so it returns 403 instead.
Filtering
-
filter[date_from]andfilter[date_to]— a date range over the day the work was done. Both bounds are inclusive, and either works alone. -
filter[owner_member_id]— one or more team member ids, ormefor whoever the token belongs to. filter[project_id]— one or more project ids.-
filter[company_id]— one or more client company ids, matched through each entry's project. -
filter[billing_status]—billed,unbilledornon_billable, or several at once. Needs permission to see billing. filter[currency]— one or more three-letter ISO 4217 currency codes.
- Type: integerpage[number]min:1
Page to return, starting at 1.
- Type: integerpage[size]min:1max:100
Records per page. Defaults to 25; anything above 100 is reduced to 100.
- Type: string Format: datefilter[date
_from] Return entries dated on or after this day.
- Type: string Format: datefilter[date
_to] Return entries dated on or before this day.
- Type: stringfilter[owner
_member _id] One or more team member ids, comma-separated or repeated. Pass
mefor whoever the token belongs to. Reaching another member's time needs permission to see the whole team's time. - Type: stringfilter[project
_id] One or more project ids, comma-separated or repeated.
- Type: stringfilter[company
_id] One or more client company ids, comma-separated or repeated. Matched through each entry's project.
- Type: string enumfilter[billing
_status] Return entries in one or more billing states, comma-separated or repeated. Needs permission to see billing; without it this filter returns 403.
values- billed
- unbilled
- non
_billable
- Type: stringfilter[currency]
One or more three-letter ISO 4217 currency codes, comma-separated or repeated.
- application/json
- application/json
- application/json
- application/json
- application/json
curl https://app.hellobonsai.com/public-api/v1/time_entries \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"data": [
{
"key": "01JTR8Z9K5QW3M7VX4YB2NC6HD",
"seconds": 3600,
"date": "2026-06-17",
"notes": "Homepage build",
"rate": "150.0",
"non_billable": false,
"billable_amount": "150.0",
"status": "unbilled",
"project_id": 51,
"owner_member_id": 314,
"created_at": "2026-04-14T09:12:04.000Z",
"billing_status": "unbilled",
"currency": "USD",
"formatted_time": "01:00:00",
"task_uuid": "ad3fdad8-5072-46df-8800-bb57299179df"
}
],
"meta": {
"request_id": "b1f0d2c4-7a9e-4c3b-8d5f-1e2a3b4c5d6e",
"pagination": {
"page": 1,
"page_size": 25,
"has_more": true
}
}
}