Timesheet (time tracking items)Toggle a timesheet favourite

Toggle a timesheet favourite

Flips the calling user's "favourite" mark on a task or an absence code in the timesheet — adds it if absent, removes it if present.

If the caller already has a favourite for (GroupType, ReferenceID) on the timesheet page, it is deleted; otherwise one is created. Favourites are per user. The result is visible as IsFavourite on time tracking items. Answers 204 with no body; there is no endpoint to read the current state directly.

Use it to:

  • Star / un-star a task in a time-tracking client's task picker

Not for:

  • Setting a known state idempotently — read IsFavourite first, then toggle only if needed

Rules across fields:

  • R1: ReferenceID must be a TaskID when GroupType = 1 and an AbsenceCodeID when GroupType = 3.

Behaviour:

  • Not idempotent.
  • Not safe to retry blindly. A retry after a lost response flips the favourite BACK. Re-read IsFavourite before retrying.
  • Duplicates: Toggle: a second identical call undoes the first.
  • Side effect: Inserts or deletes the caller's favourite row (entity = task 98 / absence code 149, page TimeTrackingBase 361).
  • Changes are visible to the next read immediately.

Call first: Task IDs: GET /v1/task/search-for-time-tracking (or list rows' TaskID), Absence codes: AbsenceCodeRead lookups

Next: GET /v1/time-tracking-item/get-by-date

Not yet documented: examples.

curl -X POST "https://app3.timelog.com/your-account/api/v1/time-tracking-item/save-favourite" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "ReferenceID": 123,
  "GroupType": 42
}'
{}
POST
/v1/time-tracking-item/save-favourite
POST
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.
Content-Typestring
Required

The media type of the request body

Options: application/json
ReferenceIDinteger

The TaskID (GroupType 1 = Project) or the AbsenceCodeID (GroupType 3 = Absence) to toggle as favourite. Refers to TaskRead | AbsenceCodeRead (see GroupType). - omitted — Binds as 0, which is no valid task / absence code → 500 Code 100. - the task / absence code does not exist — "ReferenceId invalid" → 500 Code 100 with the generic message. > Not yet documented: behaviour.

Format: int32
GroupTypeinteger

Says whether ReferenceID is a task or an absence code. Only 1 and 3 are accepted. - any value other than 1 or 3 (incl. omitted = 0, and the retired 2) — Mapped to DomainType.NotSpecified → "DomainType invalid" → 500 Code 100. Allowed values: | Value | Name | Meaning | |---|---|---| | 1 | Project | ReferenceID is a TaskID: toggles the task as a timesheet favourite. | | 3 | Absence | ReferenceID is an AbsenceCodeID: toggles the absence code as a favourite. | | 4 | ProjectTimeTracker | Exists in the shared enum; rejected here (mapped to 'not specified'). | | 5 | AbsenceTimeTracker | Exists in the shared enum; rejected here. | | 6 | TravelTime | Exists in the shared enum; rejected here. | > Not yet documented: values → serialization.

Format: int32 • Options: 1, 3, 4, 5, 6
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp).

The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user.

Not yet documented: how to obtain a token.

Not yet documented: token lifetime.

Body

application/json
ReferenceIDinteger

The TaskID (GroupType 1 = Project) or the AbsenceCodeID (GroupType 3 = Absence) to toggle as favourite.

Refers to TaskRead | AbsenceCodeRead (see GroupType).

  • omitted — Binds as 0, which is no valid task / absence code → 500 Code 100.

  • the task / absence code does not exist — "ReferenceId invalid" → 500 Code 100 with the generic message.

Not yet documented: behaviour.

GroupTypeinteger

Says whether ReferenceID is a task or an absence code. Only 1 and 3 are accepted.

  • any value other than 1 or 3 (incl. omitted = 0, and the retired 2) — Mapped to DomainType.NotSpecified → "DomainType invalid" → 500 Code 100.

Allowed values:

ValueNameMeaning
1ProjectReferenceID is a TaskID: toggles the task as a timesheet favourite.
3AbsenceReferenceID is an AbsenceCodeID: toggles the absence code as a favourite.
4ProjectTimeTrackerExists in the shared enum; rejected here (mapped to 'not specified').
5AbsenceTimeTrackerExists in the shared enum; rejected here.
6TravelTimeExists in the shared enum; rejected here.

Not yet documented: values → serialization.

Allowed values:13456

Responses