Attendance
Bulk create attendance entries
Create one or more attendance entries (time log entries) for employees. Entries must match the <b>reporting method</b> (duration or start-end) and rules of the <b>attendance policy</b> linked to the employee.
<p><b>Before using this endpoint</b></p> <ul> <li>Read the <a href="/docs/explore-attendance-api" target="_blank">Explore Attendance API</a> for concepts, usage, rate limits, and permissions.</li> <li>Maximum <b>100 entries</b> per request.</li> <li><b>Reporting method</b>: <ul> <li><b>Duration</b>: Use when you only need to log a total amount of time for a day. Send <code>clockInDate</code> (YYYY-MM-DD) and <code>duration</code> (minutes). Maximum <b>24 hours</b> </li> <li><b>Start-end</b>: Use when you know the actual start and end times. Send <code>clockInTime</code> (timestamp that includes the date) and optionally <code>clockOutTime</code>. The entry date is taken from <code>clockInTime</code>.</li> </ul> </li> <li><b>Cross-midnight</b>: <code>clockInTime</code> and <code>clockOutTime</code> must be on the <b>same date</b>. Sending an entry where clock-out is on another day than clock-in will return an error. Split cross-midnight work into two entries: one ending at 23:59 and one starting at 00:00 the next day.</li> </ul>post/attendance/entries
Request body
Example request
{
"items": [
{
"objectType": "attendanceEntry",
"fields": {
"/attendanceEntry/employeeId": {
"value": "3308236575481004065"
},
"/attendanceEntry/type": {
"value": "work"
},
"/attendanceEntry/reportingMethod": {
"value": "startEnd"
},
"/attendanceEntry/clockInTime": {
"value": "2026-01-26T16:00:00"
},
"/attendanceEntry/clockOutTime": {
"value": "2026-01-26T17:30:00"
},
"/attendanceEntry/projectId": {
"value": 1682
},
"/attendanceEntry/taskId": {
"value": 5
}
}
}
]
}Response
Attendance entries created successfully