ProjectsGet a task

Get a task

Returns one task by its integer ID.

Returns the task as TaskRead, whatever its status and whether or not the caller is allocated to it. The project (with its customer) is included only with $expand=project. IsFavourite is always null here, and ParentFullName is only the parent's own name, not the full path the searches return. An unknown taskID is a 500, not a 404.

Use it to:

  • Resolve a TaskID from a time registration, allocation or payment into a name and project
  • Read IsFixedPrice / AdditionalTextIsRequired before registering time on a task

Not for:

  • Searching tasks by text → GET /v1/task/search-for-time-tracking
  • Dates, budget, status or contract of a task — not in TaskRead

Behaviour:

  • Idempotent.
  • Safe to retry.
  • Changes are visible to the next read immediately.

Call first: A TaskID from a search, a time registration or an allocation

Next: POST /v1/task/registration, GET /v1/task/{taskID}/external-keys

See also: GET /v1/task

Not yet documented: request → query params.

curl -X GET "https://app3.timelog.com/your-account/api/v1/task/123?$expand=project" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "Properties": {
    "TaskID": 123,
    "ID": "123e4567-e89b-12d3-a456-426614174000",
    "Name": "John Doe",
    "No": "example_string",
    "IsFixedPrice": true,
    "IsDefaultBillable": true,
    "AdditionalTextIsRequired": true,
    "ParentFullName": "John Doe",
    "ProjectID": 123,
    "Project": {
      "ProjectID": 123,
      "ID": "123e4567-e89b-12d3-a456-426614174000",
      "Name": "John Doe",
      "No": "example_string",
      "ExpenseIsBillable": "null",
      "CustomerID": 123,
      "Customer": {
        "CustomerID": 123,
        "ID": "123e4567-e89b-12d3-a456-426614174000",
        "Name": "John Doe",
        "No": "example_string",
        "DefaultMileageDistance": 25,
        "CustomerStatusID": 123,
        "VATNo": "example_string",
        "OrganizationNo": "example_string"
      },
      "MainContractId": 123
    },
    "ParentTaskID": "null",
    "IsTravelTimeTask": true,
    "IsFavourite": "null"
  },
  "Links": [
    {
      "Href": "example_string",
      "Rel": "example_string"
    }
  ],
  "Actions": [
    {}
  ]
}
GET
/v1/task/{taskID}
GET
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.
path
taskIDinteger
Required

The task. A non-integer does not match the route (404 Page Not Found, captured).

Format: int32
query
$expandstring

Only project is meaningful. Allowed values: | Value | Name | Meaning | |---|---|---| | project | project | Fill Project (ProjectHeaderRead) and its Customer; otherwise Project is null. |

Options: project
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.

Path Parameters

taskIDinteger
Required

The task. A non-integer does not match the route (404 Page Not Found, captured).

Query Parameters

$expandstring

Only project is meaningful.

Allowed values:

ValueNameMeaning
projectprojectFill Project (ProjectHeaderRead) and its Customer; otherwise Project is null.
Allowed values:project

Responses

Propertiesobject

A short task representation for time-tracking pickers: the task's IDs, name and number, its parent, its project, and three flags that change how a registration on it behaves (fixed price, default billable, additional text required). It is not the full task (no dates, budget, status or contract). The TAF self link points to GET /v1/task/{TaskID}; entities also carry TAF actions (add-registration, start-time-tracker and, depending on the operation, create-task / create-sub-task / validate-new-task) describing other POST operations.

Linksarray
Actionsobject[]