---
title: "Create Timesheet Clock-In Entry"
method: POST
path: "/api/v1/time_tracking/employees/{employeeId}/clock_in"
tags: ["Time Tracking", "Public API"]
---

# Create Timesheet Clock-In Entry

`POST /api/v1/time_tracking/employees/{employeeId}/clock_in`

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/time_tracking/employees/{employeeId}/clock_in`
- Auth: one of:
  - HTTP basic
  - OAuth 2
    - Authorization code: `/authorize.php`
    - Token URL: `/token.php` scopes: `time_tracking.write`
- TypeScript: <https://skmtc.dev/bamboohr/apis/bamboohr-api/docs/api/v1/time_tracking/employees/:employeeId/clock_in/post.ts> (a function with typed inputs; its response is checked against the schema)

Clocks in an employee at the current server time. To record a historical clock-in, provide a `date`, `start` (HH:MM, 24-hour format), and `timezone`. You can optionally associate the entry with `projectId`, `taskId` (requires `projectId`), `breakId`, and a `note`.

OAuth Scopes: time_tracking.write

## Path parameters

- `employeeId` integer, required

## Request body

- ClockInRequestSchema: Schema for clock-in request body
  - `projectId` integer, nullable: ID of the time tracking project that should be associated with the timesheet entry. Required if taskId is specified.
  - `taskId` integer, nullable: ID of the time tracking task that should be associated with the timesheet entry.
  - `note` string, nullable: The note that should be associated with the timesheet entry
  - `date` string, date, nullable: Date for the timesheet entry. Must be in YYYY-MM-DD format.
  - `start` string, nullable: The time for the clock in. In 24 hour format HH:MM
  - `timezone` string, nullable: The timezone associated with the clock in.
  - `breakId` string, uuid, nullable: ID of the break that should be associated with the timesheet entry.
  - `offline` boolean: Whether this is an offline punch. When true, bypasses the shift schedule clock-in restriction. Intended for devices that store punches offline and sync later.

## Response `200`

The employee was successfully clocked in. Returns the new clock entry details.

- 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 date, time, timezone, project, task, or note.
- `401`: Unauthorized. Invalid API credentials.
- `403`: Forbidden. Insufficient user permissions or API access is not turned on.
- `404`: Employee not found.
- `406`: A future clock entry exists; cannot clock in until it is resolved.
- `409`: The employee is already clocked in, or timesheet type conflict.
- `412`: Precondition failed - invalid company configuration, invalid timezone, or employee is not configured for time tracking.
- `500`: 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.dev/bamboohr/apis/bamboohr-api/revisions/922fc15f43a7?raw)
