---
title: "Create or Update Timesheet Clock Entries"
method: POST
path: "/api/v1/time_tracking/clock_entries/store"
tags: ["Time Tracking", "Public API"]
---

# Create or Update Timesheet Clock Entries

`POST /api/v1/time_tracking/clock_entries/store`

Creates or updates timesheet clock entries in bulk. Entries with an existing ID are updated; entries without an ID are created.

OAuth Scopes: time_tracking.write

## Request body

- ClockEntriesSchema — Request body schema for operations involving multiple clock entries
  - `entries` ClockEntrySchema[], required — Array of clock entries
    - `employeeId` integer, required — Unique identifier for the employee.
    - `date` string, date, required — Date for the timesheet entry. Must be in YYYY-MM-DD format.
    - `start` string, required — Start time for the timesheet entry. Local time for the employee. Must be in hh:mm 24 hour format.
    - `end` string, required — End time for the timesheet entry. Local time for the employee. Must be in hh:mm 24 hour format.
    - `id` integer — The ID of an existing timesheet entry. This can be specified to edit an existing entry.
    - `projectId` integer — The ID of the project to associate with the timesheet entry.
    - `taskId` integer — The ID of the task to associate with the timesheet entry.
    - `note` string — Optional note to associate with the timesheet entry.
    - `breakId` string, uuid, nullable — Optional break id to associate with the timesheet entry.

## Response `201`

Entries created or updated successfully. Returns the resulting clock entry details.

- TimesheetEntryInfoApiTransformer[] — Class TimesheetEntryInfoApiTransformer
  - `id` integer — Timesheet entry ID
  - `employeeId` integer — Employee ID
  - `type` string — Entry type
  - `date` string, date — Date of the timesheet
  - `start` string, date-time, nullable — Start time
  - `end` string, date-time, nullable — End time
  - `timezone` string, nullable — Timezone
  - `hours` number, float, nullable — Hours worked
  - `note` string, nullable — Note
  - `projectInfo` ProjectInfoApiTransformer — Project information data representation
    - `project` object — Project information
      - `id` integer — Project ID
      - `name` string — Project name
    - `task` object, nullable — Task information
      - `id` integer — Task ID
      - `name` string — Task name
  - `breakInfo` object, nullable — Break information
    - `id` integer — Break ID
    - `name` string — Break name

## Other responses

- `400` — Bad request parameters - invalid data, clock times, project, task, or note.
- `401` — Unauthorized. Invalid API credentials.
- `403` — Forbidden. Insufficient user permissions or API access is not turned on.
- `404` — Employee or timesheet entry not found.
- `406` — Entry is beyond the end of the current period.
- `409` — Conflicting entries exist, or timesheet type conflict.
- `412` — Precondition failed - invalid company configuration or timezone.
- `500` — Internal server error.

---

[API](https://skmtc.dev/bamboohr/apis/bamboohr-api.md) · [All operations](https://skmtc.dev/bamboohr/apis/bamboohr-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/bamboohr/bamboohr-api/revisions/19ebf391a399/schema)
