My work

log-time-tool

Create a new time entry for the authenticated user.

Creates a worklog and returns it in the same shape as list-worklogs-tool. Server-side permission gates apply: overtime requires times::write_overtime and is silently coerced to false otherwise; logging against another user's deadline requires times::write_on_others_deadlines and otherwise returns an authorization error.

Inputs

NameTypeRequiredDescription
datestring (Y-m-d)yesDate the work happened.
minutesintegeryesDuration in minutes (1–1440).
descriptionstringyesWhat was done. Up to 5000 characters.
project_idintegeryesProject the time belongs to.
deadline_idintegernoOptional deadline within the project. Must belong to the same project.
work_item_idintegernoOptional work-item association.
is_overtimebooleannoDefaults to false. Silently dropped if the user lacks times::write_overtime.
is_not_billablebooleannoWhen omitted, inferred from the deadline's is_billable flag (or false when no deadline is set).
reasonstringnoRequired when the time entry exceeds the budget; informational otherwise.

Permissions

  • Logging time: always allowed.
  • is_overtime: true: requires times::write_overtime. Without it the value is silently set to false and the response reflects that.
  • Setting deadline_id to a deadline owned by another user: requires times::write_on_others_deadlines.

Example

{
  "date": "2026-05-18",
  "minutes": 90,
  "description": "Refactor payment gateway",
  "project_id": 7
}

Response

The created worklog, in the same shape as a row from list-worklogs-tool.

Errors

  • Missing required fields (date, minutes, description, project_id) return validation errors.
  • Setting a deadline_id that doesn't belong to the given project_id returns a 404-style error.
  • Setting deadline_id to another user's deadline without times::write_on_others_deadlines returns an authorization error.

On this page