---
updatedAt: 2026-04-29T12:55:14.000Z
agentTools:
  projectIndex: https://workable.readme.io/llms.txt
---

# /time-tracking/employees/:id/time-entries/:uuid

Updates an existing time entry for the specified employee. Required scope: `w_time_tracking`.

> 🚧 This endpoint uses the `w_time_tracking` scope, which must be enabled through the Integrations section found within the Settings menu.

This endpoint supports both **user tokens** and **account tokens**.

At least one of `clock_in_time`, `clock_out_time`, or `note` must be provided. Pass `note: null` to clear an existing note.

Setting `override_overlapping: true` archives any overlapping time entries for the same employee.

## Validation rules

* **At least one field required**: Must provide at least one of `clock_in_time`, `clock_out_time`, or `note`.
* **Time format**: ISO 8601 with a timezone designator — UTC (`Z`) or a numeric offset (e.g. `2024-09-27T08:30:00Z`, `2024-09-27T10:30:00+02:00`). Times are stored in UTC.
* **Seconds and milliseconds**: Truncated to the start of the minute server-side.
* **Clock-out time**: When both fields are supplied, `clock_out_time` must be greater than or equal to `clock_in_time`, and on the same date as clock-in or exactly at the start of the next day **in the employee's timezone**.
* **Employee start date**: Updated time entry cannot be prior to the employee's start date.

## Response

Returns the updated entry. Time strings are returned as ISO 8601 in UTC (with the `Z` suffix) — see [GET /time-tracking/time-entries](https://workable.readme.io/reference/time-tracking-list-entries#time-format).

```json
{
  "type": "clock-out",
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "clock_in_time": "2024-09-27T10:00:00.000Z",
  "clock_out_time": "2024-09-27T18:00:00.000Z",
  "note": null
}
```

| key              | type             | description                             |
| :--------------- | :--------------- | :-------------------------------------- |
| type             | `string`         | Entry type                              |
| uuid             | `string`         | UUID of the updated entry               |
| clock\_in\_time  | `string \| null` | Clock-in time in UTC (with `Z` suffix)  |
| clock\_out\_time | `string \| null` | Clock-out time in UTC (with `Z` suffix) |
| note             | `string \| null` | Note attached to the entry              |

## Error responses

| Status  | Code                                                | Description                                                                                                                                                                                          |
| :------ | :-------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **400** |                                                     | Invalid request body (e.g. no fields provided, invalid time format, `clock_out_time` before `clock_in_time`, or `clock_out_time` more than one day after `clock_in_time` in the employee's timezone) |
| **403** | `timeTracking.erganiRestriction`                    | Employee uses Ergani-related time tracking, updates not allowed                                                                                                                                      |
| **403** | `timeEntry.previousToEmployeeStartDateNotPermitted` | Updated time entry would be prior to employee's start date                                                                                                                                           |
| **403** | `timeTrackingPolicy.notAssigned`                    | Employee does not have a time tracking policy assigned                                                                                                                                               |
| **403** |                                                     | Time tracking policy does not allow editable entries (for ClockInOut policies)                                                                                                                       |
| **404** | `employee.notExists`                                | Employee not found                                                                                                                                                                                   |
| **404** |                                                     | Time entry with specified UUID not found for this employee                                                                                                                                           |
| **409** | `timeEntryUpdate.conflictingEntriesExist`           | Updated times conflict with other time entries (when `override_overlapping` is `false`)                                                                                                              |
| **422** | `clockOut.isBeforeClockIn`                          | Updated clock-out time would be before clock-in time                                                                                                                                                 |
| **500** | `timeTracking.lockError`                            | Concurrent modification error. Retry the request.                                                                                                                                                    |

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "account-root",
    "version": "3.16.2"
  },
  "servers": [
    {
      "url": "https://{subdomain}.workable.com/spi/v3",
      "variables": {
        "subdomain": {
          "default": "subdomain"
        }
      }
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "x-bearer-format": "",
        "x-default": "Bearer"
      }
    }
  },
  "security": [
    {
      "sec0": []
    }
  ],
  "paths": {
    "/time-tracking/employees/{key}/time-entries/{uuid}": {
      "patch": {
        "summary": "/time-tracking/employees/:id/time-entries/:uuid",
        "description": "Updates an existing time entry. At least one of `clock_in_time`, `clock_out_time`, or `note` must be provided. Supports both user and account tokens. Required scope: `w_time_tracking`.",
        "operationId": "time-tracking-update-entry",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "description": "SPI key of the employee",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "description": "UUID of the time entry",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "clock_in_time": {
                    "type": "string",
                    "description": "Updated ISO 8601 clock-in timestamp with timezone designator (UTC `Z` or numeric offset). Stored in UTC. Seconds and milliseconds are truncated to the start of the minute."
                  },
                  "clock_out_time": {
                    "type": "string",
                    "description": "Updated ISO 8601 clock-out timestamp with timezone designator (UTC `Z` or numeric offset). Stored in UTC. Seconds and milliseconds are truncated to the start of the minute."
                  },
                  "note": {
                    "type": "string",
                    "nullable": true,
                    "description": "Updated note. Pass null to clear."
                  },
                  "override_overlapping": {
                    "type": "boolean",
                    "description": "When true, archives any overlapping time entries."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200. Returns the updated entry with its current fields. Time strings are in UTC (with `Z` suffix).",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"type\": \"clock-out\",\n  \"uuid\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"clock_in_time\": \"2024-09-27T10:00:00.000Z\",\n  \"clock_out_time\": \"2024-09-27T18:00:00.000Z\",\n  \"note\": null\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "clock-out"
                    },
                    "uuid": {
                      "type": "string",
                      "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                    },
                    "clock_in_time": {
                      "type": "string",
                      "nullable": true,
                      "description": "Clock-in time in UTC (with `Z` suffix)",
                      "example": "2024-09-27T10:00:00.000Z"
                    },
                    "clock_out_time": {
                      "type": "string",
                      "nullable": true,
                      "description": "Clock-out time in UTC (with `Z` suffix)",
                      "example": "2024-09-27T18:00:00.000Z"
                    },
                    "note": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\"error\": \"Invalid request body\"}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "403": {
            "description": "403",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\"error\": \"Ergani restriction\", \"code\": \"timeTracking.erganiRestriction\"}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "404": {
            "description": "404",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\"error\": \"Employee not found\", \"code\": \"employee.notExists\"}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "409": {
            "description": "409",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\"error\": \"Conflicting entries exist\", \"code\": \"timeEntryUpdate.conflictingEntriesExist\"}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "422": {
            "description": "422",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\"error\": \"Clock-out time is before clock-in time\", \"code\": \"clockOut.isBeforeClockIn\"}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "500": {
            "description": "500",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\"error\": \"Lock error\", \"code\": \"timeTracking.lockError\"}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```