---
title: "Bulk create attendance entries"
method: POST
path: "/attendance/entries"
tags: ["Attendance"]
---

# Bulk create attendance entries

`POST /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>

## Request body

- EntriesCreateRequest — Request body for creating attendance entries (max 100 items)
  - `items` union[], required — One or more attendance entries to create. Each item must conform to either duration reporting (date + duration) or start-end reporting (clock-in and optional clock-out). Maximum 100 entries per request.
    - union
      - EntryCreateItemStartEnd — Attendance entry create item using start-end reporting (clock-in and optional clock-out).
        - `objectType` 'attendanceEntry', required — Must be attendanceEntry
        - `fields` object, required — Fields for an entry using <b>start-end</b> reporting (clock-in and optional clock-out). Required: employeeId, type, reportingMethod (startEnd), clockInTime. <b>clockOutTime is optional</b>—omit it to create an open (clocked-in) entry.
          - `/attendanceEntry/employeeId` object, required — The employee ID.
            - `value` string
          - `/attendanceEntry/type` object, required — Entry type — either "work" or "break".
            - `value` 'work' | 'break'
          - `/attendanceEntry/reportingMethod` object, required — Must be "startEnd" for this schema.
            - `value` 'startEnd'
          - `/attendanceEntry/clockInTime` object, required — Clock-in as a <b>timestamp</b> (date + time, e.g. ISO 8601). Required for start-end reporting. The <b>date part</b> of this timestamp is the entry date; the system uses it automatically.
            - `value` string, date-time — Timestamp (date + time) in date-time format (e.g. ISO 8601).
          - `/attendanceEntry/clockOutTime` object — Clock-out as a <b>timestamp</b> (date + time, e.g. ISO 8601). <b>Optional when creating an entry</b>—omit to create an open (clocked-in) entry; include to close the entry. When provided, the <b>date part</b> must be the same as the date in <code>clockInTime</code>; if clock-out is on another day, the API returns an error. Split cross-midnight work into two entries (e.g. one till 23:59, one from 00:00 the next day).
            - `value` string, date-time — Timestamp (date + time) in date-time format (e.g. ISO 8601).
          - `/attendanceEntry/reasonCode` object — Reason code for the attendance entry. This parameter is optional. Must be a valid string ID from the company's "Time Log Entry Reason" list. Use the <a href="https://apidocs.hibob.com/reference/get_company-named-lists-listname" target="_blank">company lists metadata endpoint</a> to retrieve the reasons list values and provide the list name (timeLogEntryReason) as a parameter.
            - `value` string
          - `/attendanceEntry/notes` object — Free-text notes for the attendance entry. This parameter is optional.
            - `value` string
          - `/attendanceEntry/projectId` object — Project ID for project tracking. This parameter is optional. Use the <a href="#operation/post_attendance-projects-search">Search projects</a> endpoint to get available project IDs.
            - `value` integer
          - `/attendanceEntry/taskId` object — Task ID for task tracking. This parameter is optional. Use the <a href="#operation/post_attendance-project-tasks-search">Search tasks</a> endpoint to get available task IDs for a given project.
            - `value` integer
      - EntryCreateItemDuration — Attendance entry create item using duration reporting (date + duration).
        - `objectType` 'attendanceEntry', required — Must be attendanceEntry
        - `fields` object, required — Fields for an entry using **duration** reporting (date + duration). Required: employeeId, type, reportingMethod (duration), clockInDate, duration.
          - `/attendanceEntry/employeeId` object, required — The employee ID.
            - `value` string
          - `/attendanceEntry/type` object, required — Entry type — either "work" or "break".
            - `value` 'work' | 'break'
          - `/attendanceEntry/reportingMethod` object, required — Must be "duration" for this schema.
            - `value` 'duration'
          - `/attendanceEntry/clockInDate` object, required — Entry date only (YYYY-MM-DD). Required for duration reporting. For start-end reporting you do not send this field — the date is taken from <code>clockInTime</code> automatically.
            - `value` string, date
          - `/attendanceEntry/duration` object, required — Duration in minutes. Required for duration reporting. Maximum 24 hours (1440 minutes) per entry.
            - `value` integer
          - `/attendanceEntry/reasonCode` object — Reason code for the attendance entry. The value must be a valid string ID from the company's "Time Log Entry Reason" list (timeLogEntryReason). Use the <a href="https://apidocs.hibob.com/reference/get_company-named-lists-listname" target="_blank">company lists metadata endpoint</a> to retrieve the reasons list values and provide the list name (timeLogEntryReason) as a parameter. This parameter is optional.
            - `value` string
          - `/attendanceEntry/notes` object — Free-text notes for the attendance entry. This parameter is optional.
            - `value` string
          - `/attendanceEntry/projectId` object — Project ID for project tracking. This parameter is optional. Use the <a href="#operation/post_attendance-projects-search">Search projects</a> endpoint to get available project IDs.
            - `value` integer
          - `/attendanceEntry/taskId` object — Task ID for task tracking. This parameter is optional. Use the <a href="#operation/post_attendance-project-tasks-search">Search tasks</a> endpoint to get available task IDs for a given project.
            - `value` integer
  - `request_metadata` object — Optional metadata for the request

## Response `201`

Attendance entries created successfully

- EntryIdsResponse — Response after creating one or more attendance entries
  - `ids` integer[], required — IDs of the created attendance entries

## Other responses

- `400` — The request is malformed or includes invalid parameters
- `401` — Authentication failed. Check your service user credentials
- `403` — The service user or token is missing the required permissions to access the requested data
- `404` — Feature not enabled for this company
- `429` — Rate limit exceeded - see <a href="https://apidocs.hibob.com/reference/attendance#rate-limiting" target="_blank">Rate limits</a>
- `500` — An unexpected error occurred. Try again or contact support if the issue persists.

---

[API](https://skmtc.net/hibob/apis/employee-data-api.md) · [All operations](https://skmtc.net/hibob/apis/employee-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hibob/employee-data-api/versions/0781ebbdda91/schema)
