---
title: "Update a time entry"
method: PATCH
path: "/time-entries/{id}"
tags: ["Time Entries"]
---

# Update a time entry

`PATCH /time-entries/{id}`

## Request

- Base URL: `https://www.ruddr.io/api/workspace`
- URL: `https://www.ruddr.io/api/workspace/time-entries/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- object
  - `typeId` 'project_time' | 'time_off': The type of the time entry.
  - `statusId` 'not_submitted' | 'pending_approval' | 'approved' | 'rejected': The approval status of the time entry.
  - `date` string, date: The date of the time entry. Should be in the form `YYYY-MM-DD`.
  - `minutes` integer, nullable: The number of minutes for the time entry. Must be a whole number between 1 and 1440.
  - `notes` string, nullable: Notes for the time entry. May be required depending on the project configuration. Max 5000 characters.
  - `startTime` string, nullable: The local start time in `HH:mm` (24-hour) format. Used with `endTime` to calculate `minutes` when not provided.
  - `endTime` string, nullable: The local end time in `HH:mm` (24-hour) format. Must be after `startTime` when set.
  - `memberId` string: The member ID (`uuid`) of the member for this time entry.
  - `projectId` string, nullable: The project ID (`uuid`) of the project for the time entry. Required when `typeId` is changed to `project_time`.
  - `roleId` string, nullable: The role ID (`uuid`) of the project role for the time entry.
  - `taskId` string, nullable: The task ID (`uuid`) of the project task for the time entry.
  - `timeOffTypeId` string, nullable: The time off type ID (`uuid`) for the time entry. Required when `typeId` is changed to `time_off`.

## Response `200`

200

- TimeEntry
  - `id` string: The unique identifier for the object.
  - `typeId` 'project_time' | 'time_off': The type of the time entry.
  - `statusId` 'not_submitted' | 'pending_approval' | 'approved' | 'rejected': The approval status of the time entry.
  - `clientStatusId` 'not_created' | 'pending_approval' | 'approved' | 'rejected', nullable: The client approval status. `null` when the project does not have client approvals enabled.
  - `date` string, date: The date of the time entry. Will be in the form `YYYY-MM-DD`.
  - `minutes` integer: The number of minutes logged for the time entry.
  - `timerStartedAt` string, date-time, nullable: The timestamp when the timer was started. `null` if no timer is active.
  - `notes` string, nullable: Notes associated with the time entry.
  - `createdAt` string, date-time: The timestamp when the object was created.
  - `modifiedAt` string, date-time: The timestamp when the object was last modified.
  - `startTime` string, nullable: The local start time of the time entry in `HH:mm` (24-hour) format.
  - `endTime` string, nullable: The local end time of the time entry in `HH:mm` (24-hour) format.
  - `member` object: The member who logged the time entry.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the member.
  - `project` object, nullable: The project for this time entry. `null` for time off entries.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the project.
    - `client` object: The client associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the client.
  - `role` object, nullable: The project role for this time entry.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the role.
  - `task` object, nullable: The project task for this time entry.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the task.
  - `timeOffType` object, nullable: The time off type. `null` for project time entries.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the time off type.
  - `invoice` object, nullable: The invoice this time entry has been billed on. `null` if not invoiced.
    - `id` string: The unique identifier for the object.
    - `number` string: The invoice number.
    - `line` object, nullable: The invoice line item this time entry is billed on.
      - `id` string: The unique identifier for the object.
      - `number` integer: The invoice line number.
  - `timesheet` object, nullable: The timesheet this time entry was submitted on. `null` when the time entry has not been submitted or the timesheets feature is disabled.
    - `id` string: The unique identifier for the object.
    - `submittedOn` string, date-time: The timestamp when the timesheet was submitted.
  - `isBillable` boolean: Whether this time entry is billable. This is a calculated value based on the project, role, and other related objects.
  - `invoiced` boolean: Whether this time entry has been invoiced. When `true`, the `invoice` property will be populated.
  - `rateCurrency` string, nullable: The currency code for the billing rate.
  - `rate` number, nullable: The billable rate applicable to this time entry. This is a calculated value based on the project, role, and other related objects.
  - `costCurrency` string, nullable: The currency code for the cost rate.
  - `costPerHour` number, nullable: The cost per hour for this time entry.

## Other responses

- `400`: 400
- `404`: 404

---

[API](https://skmtc.dev/ruddr/apis/ruddr-api.md) · [All operations](https://skmtc.dev/ruddr/apis/ruddr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruddr/apis/ruddr-api/revisions/01c3f2a969ba?raw)
