curl --request GET \
--url https://api.getbreezyapp.com/v1/time-entries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/time-entries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getbreezyapp.com/v1/time-entries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "b1000000-0000-4000-8000-000000000001",
"team_member": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"starts_at": "2026-09-08T19:30:00Z",
"ends_at": "2026-09-08T20:30:30Z",
"start_corrected": false,
"end_corrected": true,
"duration_minutes": 60.5,
"activity": {
"name": "ON-SITE",
"kind": "ON-SITE"
},
"payable": true,
"job_id": "11111111-1111-4111-8111-000000000501",
"appointment_id": "11111111-1111-4111-8111-000000001109",
"assignment_id": "11111111-1111-4111-8111-000000001113",
"attention_note": null,
"deleted_at": null,
"created_by": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"updated_by": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"deleted_by": null,
"created_at": "2026-09-08T19:30:00Z",
"updated_at": null
}
],
"pagination": {
"next_cursor": null
},
"meta": {
"request_id": "11111111-1111-4111-8111-000000009999",
"generated_at": "2026-09-08T19:00:00Z",
"timezone": "America/Los_Angeles"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "end_date must be later than start_date",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "A valid API key is required",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "METHOD_NOT_ALLOWED",
"message": "This resource supports GET",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Request limit exceeded",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Unable to complete request",
"request_id": "example-request",
"details": []
}
}Page recorded time entries
Effective corrected intervals, including custom activities and validated work links. Orders by created_at then id ascending. Soft-deleted entries require include_deleted=true. No reliable updated_since filter; refresh known IDs and effective-start windows. Elapsed duration is distinct from capped timesheet minutes.
curl --request GET \
--url https://api.getbreezyapp.com/v1/time-entries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getbreezyapp.com/v1/time-entries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getbreezyapp.com/v1/time-entries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "b1000000-0000-4000-8000-000000000001",
"team_member": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"starts_at": "2026-09-08T19:30:00Z",
"ends_at": "2026-09-08T20:30:30Z",
"start_corrected": false,
"end_corrected": true,
"duration_minutes": 60.5,
"activity": {
"name": "ON-SITE",
"kind": "ON-SITE"
},
"payable": true,
"job_id": "11111111-1111-4111-8111-000000000501",
"appointment_id": "11111111-1111-4111-8111-000000001109",
"assignment_id": "11111111-1111-4111-8111-000000001113",
"attention_note": null,
"deleted_at": null,
"created_by": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"updated_by": {
"id": "11111111-1111-4111-8111-000000000401",
"name": "Alex Example"
},
"deleted_by": null,
"created_at": "2026-09-08T19:30:00Z",
"updated_at": null
}
],
"pagination": {
"next_cursor": null
},
"meta": {
"request_id": "11111111-1111-4111-8111-000000009999",
"generated_at": "2026-09-08T19:00:00Z",
"timezone": "America/Los_Angeles"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "end_date must be later than start_date",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "A valid API key is required",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Resource not found",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "METHOD_NOT_ALLOWED",
"message": "This resource supports GET",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Request limit exceeded",
"request_id": "example-request",
"details": []
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Unable to complete request",
"request_id": "example-request",
"details": []
}
}Authorizations
Existing Breezy API key. Grants all published reads in its associated company. No app permission scopes.
Query Parameters
Maximum parent records or report rows. Complete children are always included.
1 <= x <= 100Repeat the original filters; any valid page size may continue. Foreign-company, tampered or mismatched cursors return INVALID_CURSOR.
1Repeat ids for a bounded ID set. Valid foreign or missing IDs contribute no list rows.
1 - 100 elementsInclusive creation instant.
Exclusive creation instant.
Inclusive effective start instant.
Exclusive effective start instant; this is not an overlap filter.
Exact, case-sensitive recorded activity name.
1True selects entries with no effective end; false selects closed entries.
Include retained soft-deleted entries; hard-deleted records are unavailable.