API Reference
Time Entries
Time entries record minutes logged by a person against projects, customers, and billable services. Partner responses use UUIDs; entries in processed pay periods are read-only.
Last updated 2026-06-21
Overview
The Time Entries API provides full CRUD for logged time in a workspace. Create one or more rows in a single POST by passing `peopleUuid` and a `timeEntries` array. Updates use PATCH (not PUT).
Soft-deleted entries are excluded from list and return 404 on retrieve. Entries tied to a processed pay period cannot be updated or deleted until the pay period is adjusted.
Key concepts
Batch create
POST accepts `peopleUuid` plus `timeEntries: [{ date, minutes, ... }]`. The server validates the daily minutes cap across all rows for the same person and date.
UUID filter params
List filters use `peopleUuids`, `projectUuids`, `customerUuids`, and `productServiceUuids` (comma-separated). Direct numeric filters are stripped server-side.
Date window
Both `startDate` and `endDate` (YYYY-MM-DD) must be provided together for the createdAt range filter to apply. Passing only one is ignored.
Processed pay periods
PATCH and DELETE return 400 when the entry belongs to a processed pay period.
The time entry object
Fields returned on a time entry. Nested people, project, customer, and productService expose UUIDs.
Attributes
iduuidTime entry identifier (UUID).
datedateCalendar date of the entry (YYYY-MM-DD).
minutesintegerMinutes logged. Daily total per person cannot exceed 1440 (24 hours).
descriptionstringOptional notes for the entry.
billablebooleanWhether the time is billable.
wagenumberWage rate applied when set.
peopleobjectPerson who logged the time.
projectobjectLinked project, or null.
customerobjectLinked customer, or null. May auto-fill from project.
productServiceobjectBillable product or service, or null.
createdAtdatetimeISO 8601 creation timestamp.
updatedAtdatetimeISO 8601 last update timestamp.
{
"id": "33445566-7788-99aa-bbcc-ddeeff001122",
"date": "2026-03-15",
"minutes": 120,
"description": "Wireframe review session",
"billable": true,
"wage": 45,
"people": {
"uuid": "f1a2b3c4-d5e6-4789-a012-3456789abcde",
"firstName": "Jane",
"lastName": "Smith"
},
"project": {
"uuid": "11223344-5566-7788-99aa-bbccddeeff00",
"name": "Website Redesign"
},
"customer": {
"uuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
"customer": "Acme Corporation"
},
"productService": {
"uuid": "aa11bb22-cc33-dd44-ee55-ff6677889900",
"description": "Consulting services"
},
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-28T14:22:30.000Z"
}peopleUuid required on create
Create requires a non-empty `peopleUuid` from the People API. On update, `peopleUuid` cannot be cleared — passing null or empty string returns 400.Subscription required
Time entry routes require an active workspace subscription (`checkSubscription` middleware).Related
Recent changes
Complete Partner API reference
Documented all remaining API reference groups: Chart of Accounts, Vendors, Products & Services, Recurring Invoice Templates, Credit Memos, Bills, Journal Entries, Tags, People, Projects, Tasks, Time Entries, Expense Receipts, Reports, and Workspace Stats. Added missing invoice endpoints (audit log, attachments, credit application, remove transaction) and group overviews for Invoices and Transactions.
Endpoints
/partners/time-entriesReturns a paginated list of time entries.
/partners/time-entries/{uuid}Retrieves a single time entry by UUID.
/partners/time-entriesCreates one or more time entry rows for a person.
/partners/time-entries/{uuid}Updates an existing time entry. Only the fields you send are changed.
/partners/time-entries/{uuid}Soft-deletes a time entry.
