RyTask docs
REST APITime logs

Log time manually

Creates a manual time entry. Give either `durationSeconds` or both `startedAt` and `endedAt` (never both forms). Classification defaults from the item's priority — `URGENT` items log as `INTERRUPTION`, everything else as `PLANNED` — and can be overridden per entry. Requires `work:write`.

View as MarkdownOpen in ChatGPTOpen in Claude
POST
/work-items/{workItemId}/time-logs

Creates a manual time entry. Give either durationSeconds or both startedAt and endedAt (never both forms). Classification defaults from the item's priority — URGENT items log as INTERRUPTION, everything else as PLANNED — and can be overridden per entry. Requires work:write.

Authorization

bearerAuth
AuthorizationBearer <token>

A session access token or a personal access token.

In: header

Path Parameters

workItemId*string

Header Parameters

Idempotency-Key?string

Retrying with the same key replays the original result instead of repeating the work.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/work-items/497f6eca-6276-4993-bfeb-53cbbbba6f08/time-logs" \  -H "Content-Type: application/json" \  -d '{}'
{  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "workItemId": "1769c5a2-ca6e-4792-8bf1-b1a261dc7481",    "projectId": "5a8591dd-4039-49df-9202-96385ba3eff8",    "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",    "startedAt": "2019-08-24T14:15:22Z",    "endedAt": "2019-08-24T14:15:22Z",    "durationSeconds": 1,    "note": "string",    "billable": true,    "source": "TIMER",    "classification": "PLANNED",    "classificationOverridden": true,    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  }}
Empty
Empty
Empty
Empty