Get the active timer
Read the key owner’s current timer in the bound workspace.
GET /api/v1/timer
Required scope: timers:read
Returns the active timer only if it belongs to the key's workspace. Requires bearer authentication and timers:read. No query parameters or body.
curl "https://www.tracktimer.app/api/v1/timer" \
--header "Authorization: Bearer $TRACKTIMER_API_KEY"
Response — 200
timer is null or an object with these fields:
id: UUID of this timer/time entry.clientId,projectId: client and project UUIDs.clientName,projectName: nonempty display names.billable: boolean indicating whether the entry is billable.note: string up to 500 characters, ornull.startedAt: ISO 8601 timestamp with timezone offset, normally UTCZ.serverNow: server timestamp used for this response's elapsed calculation.elapsedSeconds: nonnegative integer elapsed seconds as ofserverNow.payRateCents: nonnegative integer hourly pay rate in cents, snapshotted on the entry. This is not the client billing rate.currency: always"USD".
Integer duration and pay-rate fields are bounded by 2,147,483,647.
{
"timer": {
"id": "33333333-3333-4333-8333-333333333333",
"clientId": "11111111-1111-4111-8111-111111111111",
"clientName": "Northstar",
"projectId": "22222222-2222-4222-8222-222222222222",
"projectName": "Website refresh",
"billable": true,
"note": "Homepage revisions",
"startedAt": "2026-09-10T16:00:00.000Z",
"serverNow": "2026-09-10T16:05:00.000Z",
"elapsedSeconds": 300,
"payRateCents": 5000,
"currency": "USD"
}
}
{"timer":null} means no active timer is visible in this workspace. The user can still have an active timer in another workspace.
Elapsed time is a server-calculated snapshot, not a live stream. Poll within the shared limit. Pay rate is the start-time snapshot; client billing rates and project margins are not exposed. See shared errors.