action field.
userId.
Request body
Either
clock_in or clock_out.Free-text note. On clock out, if omitted the existing entry’s notes are kept.
Optional job code (recorded on clock in).
Optional task code (recorded on clock in).
Unpaid break minutes deducted from total hours on clock out. Minimum
0.Optional client IP to record. Used for both the clock-in and clock-out IP fields.
Optional device identifier to record.
Behavior
- clock_in
- clock_out
Creates a new time entry with
status: "PENDING" and clockIn set to now.
It is associated with the company’s current unlocked pay period (if one
exists). If the employee already has an open entry, returns 400 Already clocked in (with the existing entry’s id and clockIn).Response
Both actions return200 with data.timeEntry (including its payPeriod
summary) and a data.message. Clock out additionally returns data.summary
with totalHours, regularHours, overtimeHours, and breakMinutes.
Examples
Errors
| Status | error | Cause |
|---|---|---|
400 | Already clocked in | clock_in while an open entry exists. |
400 | No open time entry | clock_out with nothing to close. |
400 | Invalid action / Invalid time entry data | action not clock_in/clock_out, or body validation failed. |
401 | Authentication required | Missing/invalid employee token. |
404 | Employee not found or inactive | Token user missing or deactivated. |
500 | Failed to create time entry | Unexpected server error. |