Time Tracking
Public API

Create Configuration

Changed on

Creates a new GROUP time tracking configuration together with its approval workflow. The type is forced to GROUP server-side; the GLOBAL configuration is auto-managed and cannot be created via this endpoint. Accepts an optional Idempotency-Key header for safe retries.

OAuth Scopes: time_tracking:configurations.write

post/api/v1/time-tracking/configurations

Request

Headers

Idempotency-Keystring

Optional client-supplied key for safe retries (UUID recommended). Replaying the same key returns the original response; reusing it with a different body returns 409.

Request body

namestring required

The configuration name. Unique per company.

timesheetType'CLOCK' | 'SINGLE' | 'MULTIPLE' | 'HOUR' required

How time is logged.

workWeekStartsOn'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' required

Day of week the work week starts.

approverType'REPORTS_TO' | 'SPECIFIC_PERSON' required

Who approves timesheets.

approverUserIdinteger nullable

The user ID of the approver. Required when approverType is SPECIFIC_PERSON; must be omitted otherwise.

approvalCutoffstring required

Time of day by which timesheets must be approved, in 24-hour HH:MM format.

approvalCutoffDaysinteger required

Number of days before the pay date the cutoff applies.

clockInSchedulePolicy'ANYTIME' | 'SHIFT_REQUIRED'

When scheduled employees can clock in.

restrictWebClockActionsboolean

When true, removes the time clock from bamboohr.com for employees in this configuration.

mobileEnabledboolean

When true, employees can log time using the BambooHR mobile app.

geolocationEnabledboolean

When true, employee location is required when clocking in/out via mobile. Stored but has no effect while mobileEnabled is false.

customOvertimeEnabledboolean

When true, the overtime threshold fields are honored. When false, they must be omitted.

overtimeDailyHoursstring nullable

Daily overtime threshold in hours. Only allowed when customOvertimeEnabled is true. Decimal string with at most 2 decimals, at least 1 and less than 24.

overtimeDailyDoubleHoursstring nullable

Daily double-overtime threshold in hours. Only allowed when customOvertimeEnabled is true. Decimal string with at most 2 decimals, at least 1 and less than 24.

overtimeWeeklyHoursstring nullable

Weekly overtime threshold in hours. Only allowed when customOvertimeEnabled is true. Decimal string with at most 2 decimals, at least 1 and less than 169.

Example request

{
  "name": "Clock Entry",
  "timesheetType": "CLOCK",
  "workWeekStartsOn": "SUNDAY",
  "approverType": "SPECIFIC_PERSON",
  "approverUserId": 2274,
  "approvalCutoff": "12:00",
  "overtimeDailyHours": "8.00",
  "overtimeDailyDoubleHours": "12.00",
  "overtimeWeeklyHours": "45.00"
}

Response

Configuration created successfully.

idinteger

The ID of the configuration.

namestring

The configuration name. Unique per company.

type'GLOBAL' | 'GROUP'

The configuration type. Read-only. Exactly one GLOBAL configuration exists per company; all customer-created configurations are GROUP.

timesheetType'CLOCK' | 'SINGLE' | 'MULTIPLE' | 'HOUR'

How time is logged.

workWeekStartsOn'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY'

Day of week the work week starts.

approverType'REPORTS_TO' | 'SPECIFIC_PERSON' nullable

Who approves timesheets. REPORTS_TO is the employee's manager; SPECIFIC_PERSON is a designated user. Null when no valid approver is configured and the settings need to be re-saved.

approverUserIdinteger nullable

The user ID of the approver. Populated when approverType is SPECIFIC_PERSON; null otherwise.

approvalCutoffstring

Time of day by which timesheets must be approved, in 24-hour HH:MM format.

approvalCutoffDaysinteger

Number of days before the pay date the cutoff applies.

clockInSchedulePolicy'ANYTIME' | 'SHIFT_REQUIRED'

When scheduled employees can clock in.

restrictWebClockActionsboolean

When true, removes the time clock from bamboohr.com for employees in this configuration.

mobileEnabledboolean

When true, employees can log time using the BambooHR mobile app.

geolocationEnabledboolean

When true, employee location is required when clocking in/out via mobile. Only meaningful when mobileEnabled is true.

customOvertimeEnabledboolean

When false, standard U.S. and Canada overtime rules apply. When true, the daily/weekly overtime fields are honored.

overtimeDailyHoursstring nullable

Daily overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.

overtimeDailyDoubleHoursstring nullable

Daily double-overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.

overtimeWeeklyHoursstring nullable

Weekly overtime threshold in hours as a decimal string. Honored only when customOvertimeEnabled is true; null otherwise.

employeeIdsinteger[]

Read-only array of employee IDs currently enrolled in this configuration.

createdAtstring date-time

ISO 8601 timestamp when the configuration was created.

updatedAtstring date-time nullable

ISO 8601 timestamp when the configuration was last updated.

deletedAtstring date-time nullable

ISO 8601 timestamp when the configuration was soft-deleted. Null for active configurations.

Example response

{
  "id": 3,
  "name": "Clock Entry",
  "type": "GROUP",
  "timesheetType": "CLOCK",
  "workWeekStartsOn": "SUNDAY",
  "approverType": "SPECIFIC_PERSON",
  "approverUserId": 2274,
  "approvalCutoff": "12:00",
  "clockInSchedulePolicy": "ANYTIME",
  "customOvertimeEnabled": true,
  "overtimeDailyHours": "8.00",
  "overtimeDailyDoubleHours": "12.00",
  "overtimeWeeklyHours": "45.00",
  "employeeIds": [
    101,
    102,
    103
  ],
  "createdAt": "2025-06-12T14:57:06Z",
  "updatedAt": "2026-03-10T20:28:42Z"
}

Changes