Time Doctor Tools
Written By Christopher Scaminaci
Last updated 7 days ago
Time Doctor Tools
td_ · 147 tools · Free 81 · Pro 66
Workforce analytics and time tracking - worklogs, time edits, productivity stats, projects, tasks, groups, schedules, screencasts, payroll. One fixed global host, no regional addresses. The credential is a real user's email and password, so the connection carries that person's authority and breaks when their password or two-factor changes. One account can serve many client companies and almost every operation names one: pass company or save a default; omitting both is refused, never guessed. Every declared filter is a named ARGUMENT, so a report tool can take up to 158; send only what you mean. td_raw_get and td_raw_request are the escape hatch for anything the 145 named tools miss: one GET or one write to any path you name. Paging is by ROW OFFSET: page is how many rows to SKIP - walk 0, limit, twice limit; limit caps at 250. A 423 disabledFeature means modern sign-in is off for THAT company, not a bad credential. Screencasts return a temporary signed URL, not bytes.
All connector tools · Time Doctor setup guide
Time Doctor tool groups
- Companies — 7 tools
- Company payroll — 2 tools
- Profile — 2 tools
- Account and sessions — 6 tools
- Invitations — 4 tools
- Payroll — 4 tools
- Pending approvals — 5 tools
- Users — 12 tools
- Breaks — 5 tools
- Time edits — 4 tools
- Worklogs and activity — 7 tools
- Productivity ratings — 5 tools
- Software cost insights — 10 tools
- Statistics — 12 tools
- Groups — 7 tools
- Projects — 9 tools
- Tasks — 6 tools
- Work schedules — 8 tools
- Screencasts — 6 tools
- IP allow list — 6 tools
- Notifications — 6 tools
- Calendar integration — 12 tools
- Raw Requests — 2 tools
Companies
td_create_company details
td_create_company details
[Time Doctor] Create a new company with the authenticated user as owner. POST /api/1.0/companies. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Send the request body as JSON; Time Doctor documents these fields: name, description, creator, timezone, pricingPlan, newOwnerId, silentTrackingTimes, whoCanAccessScreenshots, whoCanAccessPayroll, allowLeavesForRegularUsers, mobileAppTracking, capture2Tracking. Time Doctor documents 1 more field; the bodyJson parameter lists them all. Returns raw Time Doctor JSON.
td_get_company details
td_get_company details
[Time Doctor] Retrieve detailed information about a specific company. GET /api/1.0/companies/. Path parameters: companyId. Returns raw Time Doctor JSON.
td_get_directory_sync details
td_get_directory_sync details
[Time Doctor] Retrieve directory synchronization configuration for the company. GET /api/1.0/companies//directory-sync. Path parameters: companyId. Returns raw Time Doctor JSON.
td_list_companies details
td_list_companies details
[Time Doctor] Retrieve list of companies where the authenticated user has administrative access. GET /api/1.0/companies. Returns raw Time Doctor JSON.
td_list_company_timezones details
td_list_company_timezones details
[Time Doctor] Retrieve timezone information for all users in the company. GET /api/1.0/companies//timezones. Path parameters: companyId. Optional filters: sort-tz. Returns raw Time Doctor JSON.
td_update_company details
td_update_company details
[Time Doctor] DESTRUCTIVE: update company information and settings. Why this is destructive: newOwnerId transfers company ownership and pricingPlan moves the subscription, so this is not a reversible settings toggle. PUT /api/1.0/companies/. Path parameters: companyId. Send the request body as JSON; Time Doctor documents these fields: name, description, creator, timezone, pricingPlan, newOwnerId, silentTrackingTimes, whoCanAccessScreenshots, whoCanAccessPayroll, allowLeavesForRegularUsers, mobileAppTracking, capture2Tracking. Time Doctor documents 1 more field; the bodyJson parameter lists them all. Returns raw Time Doctor JSON.
td_update_directory_sync details
td_update_directory_sync details
[Time Doctor] DESTRUCTIVE: configure or update directory synchronization settings for the company. Why this is destructive: Turns on automatic user provisioning from an external directory, which then creates and deactivates people on its own schedule. The vendor documents no request body, so it is also an arbitrary-payload escape hatch. PUT /api/1.0/companies//directory-sync. Path parameters: companyId. Send the request body as JSON, following Time Doctor's documented sample for this endpoint. Returns raw Time Doctor JSON.
Company payroll
td_get_company_payroll_settings details
td_get_company_payroll_settings details
[Time Doctor] Retrieve company-wide payroll settings and defaults. GET /api/1.0/companies/payroll. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_update_company_payroll_settings details
td_update_company_payroll_settings details
[Time Doctor] DESTRUCTIVE: update company-wide payroll settings and defaults. Why this is destructive: Replaces the company-wide payroll defaults everyone is paid against. PUT /api/1.0/companies/payroll. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: transferWise, transferWiseCurrency, payoneer, paypal, bitWage, quickBooks, gusto, adp, adpCompanyCode, adpMaxHours, adpIncludeUserNames. Returns raw Time Doctor JSON.
Profile
td_send_password_reset_email details
td_send_password_reset_email details
[Time Doctor] DESTRUCTIVE: request a password reset email. Why this is destructive: Emails a password-reset link to the address supplied. Reaching a human cannot be undone, and the link changes an account's password. GET /api/1.0/profile/restore-password. Required filters: email. Returns raw Time Doctor JSON.
td_update_my_profile details
td_update_my_profile details
[Time Doctor] DESTRUCTIVE: update user profile information (personal data not tied to any specific company). Why this is destructive: Changes the signed-in Time Doctor user's own email, password and two-factor setting - the credential this connection authenticates with, across every company that user belongs to. PUT /api/1.0/profile. Send the request body as JSON; Time Doctor documents these fields: name, email, timezone, password, twoFactorAuth, referrer. Returns raw Time Doctor JSON.
Account and sessions
td_activate_two_factor details
td_activate_two_factor details
[Time Doctor] DESTRUCTIVE: turn on two-factor sign-in for the signed-in account by confirming a code from the authenticator app holding the new seed. Why this is destructive: Turns on two-factor sign-in for the signed-in account, so every future login, StackJack's included, needs a code from the matching authenticator. A seed this connection does not hold locks it out of the account it signs in with. POST /api/1.0/login/2fa/activate. Send the request body as JSON; Time Doctor documents these fields: totpCode. Returns raw Time Doctor JSON.
td_generate_two_factor_secret details
td_generate_two_factor_secret details
[Time Doctor] DESTRUCTIVE: generate a new two-factor authenticator seed and QR code for the signed-in account. Why this is destructive: Mints a NEW authenticator seed for the signed-in account and supersedes the old one, so any seed already saved - including the Authenticator Secret this connection signs in with - stops producing valid codes until the customer saves the new one. The response IS the seed: treat it as a credential. GET /api/1.0/login/2fa/new. Returns raw Time Doctor JSON.
td_get_authorization_context details
td_get_authorization_context details
[Time Doctor] Read the signed-in account's own profile, permissions, company settings and the list of companies it can reach. GET /api/1.0/authorization. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: task-project-names, has-managed-screencasts. Returns raw Time Doctor JSON.
td_get_current_user details
td_get_current_user details
[Time Doctor] Read the signed-in account's user and company data from the Auth v2 service. GET /api/2.0/auth/user/me. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: task-project-names, has-managed-screencasts. Returns raw Time Doctor JSON.
td_revoke_user_session details
td_revoke_user_session details
[Time Doctor] DESTRUCTIVE: invalidate one of the signed-in account's access tokens by its id, ending that one session and leaving the others alone. Why this is destructive: Ends that sign-in session immediately, so anything still holding the token stops working. If the id names this connection's own session, StackJack loses Time Doctor access until its next token mint. StackJack requires the id even though Time Doctor marks it optional, so the call always names one session: the vendor documents no behaviour for an omitted id, and the worst case it could carry is the plain logout this connector deliberately does not build. GET /api/1.0/logout/by-id. Required filters: id. Returns raw Time Doctor JSON.
td_revoke_user_session_v2 details
td_revoke_user_session_v2 details
[Time Doctor] DESTRUCTIVE: revoke one Auth v2 access-token document by its id, ending that one session and leaving the others alone. Why this is destructive: Ends that sign-in session immediately on the Auth v2 service, so anything still holding the access token stops working. If the id names this connection's own session, StackJack loses Time Doctor access until its next token mint. POST /api/2.0/auth/v2/logout/by-id. Send the request body as JSON; Time Doctor documents these fields: id. Returns raw Time Doctor JSON.
Invitations
td_check_invitation_exists details
td_check_invitation_exists details
[Time Doctor] Check if an invitation exists for a specific email address. GET /api/1.0/invitations/exists. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: email. Returns raw Time Doctor JSON.
td_check_invitations_exist_bulk details
td_check_invitations_exist_bulk details
[Time Doctor] Check if invitations exist for multiple email addresses in a single request. POST /api/1.0/invitations/exists/bulk. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: emails. Returns raw Time Doctor JSON.
td_send_invitation details
td_send_invitation details
[Time Doctor] DESTRUCTIVE: send an invitation email to a new user to join the company. Why this is destructive: Emails an invitation to a person and creates the account they join with. POST /api/1.1/invitations. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: name, email, role, employeeId, noSendEmail, onlyProjectIds. Returns raw Time Doctor JSON.
td_send_invitations_bulk details
td_send_invitations_bulk details
[Time Doctor] DESTRUCTIVE: send multiple user invitations in a single request. Why this is destructive: Emails invitations to many people in one call. POST /api/1.0/invitations/bulk. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: users, noSendEmail, onlyProjectIds, tagIds, settings, managedGroups, assignedProjects. Returns raw Time Doctor JSON.
Payroll
td_bulk_update_user_payroll details
td_bulk_update_user_payroll details
[Time Doctor] DESTRUCTIVE: bulk update payroll information for multiple users. Why this is destructive: Replaces pay rates, currencies and pay methods for many people at once. PUT /api/1.0/users/payroll/bulk. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: id, currency, adjustment, payRate, payMethod, payIdentifier, hourlyLimit, hourlyLimitRange. Returns raw Time Doctor JSON.
td_delete_user_payroll details
td_delete_user_payroll details
[Time Doctor] DESTRUCTIVE: remove payroll information for a specific user. Why this is destructive: Deletes the person's pay rate, currency and pay method, and payroll then falls back to the company default without saying so. DELETE /api/1.0/users//payroll. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_user_payroll details
td_list_user_payroll details
[Time Doctor] Retrieve payroll information for multiple users. GET /api/1.0/users/payroll. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, tag. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_update_user_payroll details
td_update_user_payroll details
[Time Doctor] DESTRUCTIVE: update payroll information for a specific user. Why this is destructive: Replaces a person's pay rate, currency and pay method. PUT /api/1.0/users//payroll. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: id, currency, adjustment, payRate, payMethod, payIdentifier, hourlyLimit, hourlyLimitRange. Returns raw Time Doctor JSON.
Pending approvals
td_approve_pending_user details
td_approve_pending_user details
[Time Doctor] DESTRUCTIVE: approve or update a pending user approval request. Why this is destructive: Approves or blocks a person's access to the company - a privilege grant. PUT /api/v1/pending-approvals/. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId, approved, blocked. Returns raw Time Doctor JSON.
td_approve_pending_users_bulk details
td_approve_pending_users_bulk details
[Time Doctor] DESTRUCTIVE: bulk approve or update multiple pending user approvals. Why this is destructive: Approves or blocks many people at once - a privilege grant over a set. PUT /api/v1/pending-approvals/bulk. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId, approved, blocked. Returns raw Time Doctor JSON.
td_delete_pending_approval details
td_delete_pending_approval details
[Time Doctor] DESTRUCTIVE: remove a pending approval request for a specific user. Why this is destructive: Removes the pending request, so the person is neither approved nor waiting. They have to be invited again. DELETE /api/v1/pending-approvals/. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_delete_pending_approvals_bulk details
td_delete_pending_approvals_bulk details
[Time Doctor] DESTRUCTIVE: bulk remove multiple pending approval requests. Why this is destructive: Removes many pending requests at once, so every person named is left neither approved nor waiting and each has to be invited again. DELETE /api/v1/pending-approvals/bulk. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON, following Time Doctor's documented sample for this endpoint. Returns raw Time Doctor JSON.
td_list_pending_approvals details
td_list_pending_approvals details
[Time Doctor] Retrieve list of pending user approvals awaiting administrator action. GET /api/v1/pending-approvals. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: page, limit, sort, filter[name], blocked, filter[dateTimeAdded], filter[lastSeen]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
Users
td_add_user_to_group details
td_add_user_to_group details
[Time Doctor] Add a user to a group (tag) as a member. POST /api/1.0/users//tags. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: tagId. Returns raw Time Doctor JSON.
td_delete_user details
td_delete_user details
[Time Doctor] DESTRUCTIVE: remove a user from the company or permanently delete their data. Why this is destructive: The vendor's own words: remove the user from the company OR permanently delete their data. Tracked time, screencasts and payroll history can go with the account. DELETE /api/1.0/users/. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted, delete-permanently, reason. Returns raw Time Doctor JSON.
td_get_user details
td_get_user details
[Time Doctor] Retrieve detailed information about a specific user by their ID. GET /api/1.0/users/. Path parameters: userId. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: detail, no-tag, deleted, page, limit, sort, filter[id], filter[email], filter[name], filter[keywords], task-project-names, include-archived-users, filter[tag], filter[role], filter[showOnReports], filter[invitePending], filter[inviteAccepted], filter[payrollAccess], filter[screenshots], filter[videos], filter[created], filter[hostName], filter[os], filter[hiredAt], filter[lastTrack], filter[lastActiveTrack], filter[clientVersion], filter[ip], filter[tag-count]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_get_user_totals details
td_get_user_totals details
[Time Doctor] Retrieve comprehensive configuration details for all users in the company. GET /api/1.0/users/totals. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: self, detail, no-tag, page, limit, sort, filter[id], filter[email], filter[name], filter[keywords], task-project-names, include-archived-users, filter[tag], filter[role], filter[showOnReports], filter[invitePending], filter[inviteAccepted], filter[payrollAccess], filter[screenshots], filter[videos], filter[created], filter[hostName], filter[os], filter[hiredAt], filter[lastTrack], filter[lastActiveTrack], filter[clientVersion], filter[ip], filter[tag-count]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_get_user_v11 details
td_get_user_v11 details
[Time Doctor] Retrieve detailed user information with enhanced idle status data. GET /api/1.1/users/. Path parameters: userId. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: detail, no-tag, deleted, page, limit, sort, filter[id], filter[email], filter[name], filter[keywords], task-project-names, include-archived-users, filter[tag], filter[role], filter[showOnReports], filter[invitePending], filter[inviteAccepted], filter[payrollAccess], filter[screenshots], filter[videos], filter[created], filter[hostName], filter[os], filter[hiredAt], filter[lastTrack], filter[lastActiveTrack], filter[clientVersion], filter[ip], filter[tag-count], include_idle_status. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_managed_users details
td_list_managed_users details
[Time Doctor] Retrieve list of users managed by the specified user. GET /api/1.0/users//managed. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: self, detail, no-tag, page, limit, sort, filter[id], filter[email], filter[name], filter[keywords], task-project-names, include-archived-users, filter[tag], filter[role], filter[showOnReports], filter[invitePending], filter[inviteAccepted], filter[payrollAccess], filter[screenshots], filter[videos], filter[created], filter[hostName], filter[os], filter[hiredAt], filter[lastTrack], filter[lastActiveTrack], filter[clientVersion], filter[ip], filter[tag-count]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_user_auth_tokens details
td_list_user_auth_tokens details
[Time Doctor] Retrieve information about all active authentication tokens for the current user. GET /api/1.0/users/tokens. Optional filters: page, limit, sort, filter[createdAt], filter[expiresAt]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_users details
td_list_users details
[Time Doctor] Retrieve a list of users in the company with optional filtering and pagination. GET /api/1.0/users. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: user, manager, tag, self, detail, no-tag, deleted, page, limit, sort, filter[id], filter[email], filter[name], filter[keywords], task-project-names, include-archived-users, adc_enabled, filter[tag], filter[role], filter[showOnReports], filter[invitePending], filter[inviteAccepted], filter[payrollAccess], filter[screenshots], filter[videos], filter[created], filter[hostName], filter[os], filter[hiredAt], filter[lastTrack], filter[lastActiveTrack], filter[clientVersion], filter[ip], filter[tag-count]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_users_v11 details
td_list_users_v11 details
[Time Doctor] Retrieve a list of users with enhanced features including idle status information. GET /api/1.1/users. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: user, manager, tag, self, detail, no-tag, deleted, page, limit, sort, filter[id], filter[email], filter[name], filter[keywords], task-project-names, include-archived-users, filter[tag], filter[role], filter[showOnReports], filter[invitePending], filter[inviteAccepted], filter[payrollAccess], filter[screenshots], filter[videos], filter[created], filter[hostName], filter[os], filter[hiredAt], filter[lastTrack], filter[lastActiveTrack], filter[clientVersion], filter[ip], filter[tag-count], include_idle_status. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_users_v12 details
td_list_users_v12 details
[Time Doctor] Get users details. GET /api/1.2/users. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Returns raw Time Doctor JSON.
td_remove_user_from_group details
td_remove_user_from_group details
[Time Doctor] DESTRUCTIVE: remove a user from a group (tag). Why this is destructive: Takes the person out of the group, which removes them from the group's reports and from any access that membership grants. DELETE /api/1.0/users//tags/. Path parameters: userId, tagId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_update_user details
td_update_user details
[Time Doctor] DESTRUCTIVE: update user settings and configuration within a company. Why this is destructive: The same call changes a person's role and can deactivate or soft-delete them, so it is a privilege change rather than a settings edit. PUT /api/1.0/users/. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Send the request body as JSON; Time Doctor documents these fields: name, role, onlyProjectIds, employeeId, exists, active, screenshots, videos, workCheckInterval, canEditTime, poorTimeusePopup, allowDeleteScreenshots. Time Doctor documents 34 more fields; the bodyJson parameter lists them all. Returns raw Time Doctor JSON.
Breaks
td_create_break details
td_create_break details
[Time Doctor] Create a new break time record. POST /api/1.0/breaks. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: name, type, active, public, access, scope, breakLimit, poolMode, poolPeriod. Returns raw Time Doctor JSON.
td_delete_break details
td_delete_break details
[Time Doctor] DESTRUCTIVE: remove a break time record. Why this is destructive: Removes a break record, and the tracked time that break covered is recounted with it. The record cannot be restored through the API. DELETE /api/1.0/breaks/. Path parameters: breakId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_get_break details
td_get_break details
[Time Doctor] Retrieve detailed information about a specific break. GET /api/1.0/breaks/. Path parameters: breakId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_breaks details
td_list_breaks details
[Time Doctor] Retrieve list of break time records for users. GET /api/1.0/breaks. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: page, limit, sort, filter[name], filter[keywords], filter[type], filter[breakLimit], filter[poolMode], filter[poolPeriod], filter[keyphrase], assigned. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_update_break details
td_update_break details
[Time Doctor] Update break time record details. PUT /api/1.0/breaks/. Path parameters: breakId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: name, type, active, public, access, scope, breakLimit, poolMode, poolPeriod. Returns raw Time Doctor JSON.
Time edits
td_bulk_update_time_edits details
td_bulk_update_time_edits details
[Time Doctor] DESTRUCTIVE: update multiple time edit records in a single request. Why this is destructive: Overwrites many manual time entries in one call. PUT /api/1.0/activity/edit-time/bulk. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId, start, taskId, projectId, end, operation, reason, approved. Returns raw Time Doctor JSON.
td_create_time_edit details
td_create_time_edit details
[Time Doctor] DESTRUCTIVE: create a manual time entry or adjustment for a user. Why this is destructive: Adds manual time to a person's day, and manual time is payable time. POST /api/1.0/activity/edit-time. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId, start, taskId, projectId, end, operation, reason, approved. Returns raw Time Doctor JSON.
td_list_time_edits details
td_list_time_edits details
[Time Doctor] Retrieve manual time edits and adjustments for user(s). GET /api/1.0/activity/edit-time. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, from, to, tag, exclude-fields, include-modes, approved, include-auto-approved, resolve-names, page-user, sort-user. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_update_time_edit details
td_update_time_edit details
[Time Doctor] DESTRUCTIVE: update a specific manual time entry by its ID. Why this is destructive: Overwrites an existing manual time entry, which is payable time. PUT /api/1.0/activity/edit-time/. Path parameters: id. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId, start, taskId, projectId, end, operation, reason, approved. Returns raw Time Doctor JSON.
Worklogs and activity
td_get_app_and_web_usage details
td_get_app_and_web_usage details
[Time Doctor] Retrieve aggregated statistics about application and website usage. GET /api/1.0/activity/timeuse/stats. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, page, limit, sort, category, filter[time], filter[score], filter[category]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_meeting_log details
td_get_meeting_log details
[Time Doctor] Retrieve meeting activity logs for user(s) within a specified time range. GET /api/1.0/activity/meetinglog. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, from, to, detail, sort, page, limit, exclude-fields, include-modes, raw-data, no-cut, include-archived-users, include-future, include-stats, merge-meetings. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_worklog details
td_get_worklog details
[Time Doctor] Retrieve detailed work activity log for a user within a specified time range. GET /api/1.0/activity/worklog. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, from, to, detail, exclude-fields, include-modes, task-project-names, include-meeting. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_list_disconnect_periods details
td_list_disconnect_periods details
[Time Doctor] Retrieve periods when the user was offline or disconnected from tracking. GET /api/1.0/activity/disconnectivity. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_meeting_log_paged details
td_list_meeting_log_paged details
[Time Doctor] Flat, paged meeting records for MCP and other clients that need paging.totalCount. GET /api/1.0/activity/meetinglog/paged. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, from, to, detail, sort, page, limit, exclude-fields, include-modes, raw-data, no-cut, include-archived-users, include-future, include-stats, merge-meetings. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_list_worklog_paged details
td_list_worklog_paged details
[Time Doctor] Flat, paged worklog ranges for MCP and other clients that need paging.totalCount. GET /api/1.0/activity/worklog/paged. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, from, to, detail, exclude-fields, include-modes, task-project-names, include-meeting. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_update_worklog_ranges details
td_update_worklog_ranges details
[Time Doctor] DESTRUCTIVE: modify worklog ranges for a user. Why this is destructive: Rewrites recorded work-time ranges. Worked time is the input to payroll, so a wrong range is a pay error rather than a display error. PUT /api/1.0/activity/worklog. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user. Send the request body as JSON; Time Doctor documents these fields: start, end, taskId, projectId. Returns raw Time Doctor JSON.
Productivity ratings
td_get_unrated_count details
td_get_unrated_count details
[Time Doctor] Get count of uncategorized applications and websites. GET /api/1.0/categories/unrated-count. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_productivity_ratings details
td_list_productivity_ratings details
[Time Doctor] Retrieve list of productivity categories configured in the company. GET /api/1.0/categories. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Optional filters: page, limit, sort, filter[name], global-unrated, filter[time], filter[entity], filter[score]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_user_productivity_ratings details
td_list_user_productivity_ratings details
[Time Doctor] Retrieve productivity categories specific to a user or group. GET /api/1.0/categories/user/. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: page, limit, sort, filter[name], filter[time], filter[entity], filter[score]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_set_productivity_rating details
td_set_productivity_rating details
[Time Doctor] Configure productivity classification for an application or website at company level. POST /api/1.0/categories. company is optional here: omit it and the call is global rather than company-scoped, unless this connection saved a default company id. Send the request body as JSON; Time Doctor documents these fields: id, entity, name, score, standardActiveSecRatio. Returns raw Time Doctor JSON.
td_set_user_productivity_rating details
td_set_user_productivity_rating details
[Time Doctor] Configure user-specific or group-specific productivity classification override. POST /api/1.0/categories/user/. Path parameters: userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: id, entity, name, score. Returns raw Time Doctor JSON.
Software cost insights
td_get_software_cost_by_category details
td_get_software_cost_by_category details
[Time Doctor] Get software cost insights aggregated by category. GET /api/1.1/software-cost-insights/category. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, timezone, from, to, start, end, user-tz, use-local-time, params, summary, category. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_software_cost_by_category_v2 details
td_get_software_cost_by_category_v2 details
[Time Doctor] Get software cost insights by category (single aggregation, from/to first/last day of month, range > 26 days, max 6 calendar months). GET /api/1.1/software-cost-insights/category-v2. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to, category. Optional filters: user, tag, page, limit, sort, status-range. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_software_cost_category_tree details
td_get_software_cost_category_tree details
[Time Doctor] Get category group hierarchy for the company from BigQuery (reporting_hierarchy_groups). GET /api/1.1/software-cost-insights/category-group-hierarchy. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, page, limit, sort, search. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_software_cost_summary details
td_get_software_cost_summary details
[Time Doctor] Get summary statistics for software cost insights. GET /api/1.1/software-cost-insights/summary. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, timezone, from, to, start, end, user-tz, use-local-time, params, summary, category. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_software_cost_summary_v2 details
td_get_software_cost_summary_v2 details
[Time Doctor] Get summary statistics (single aggregation; from/to first or last day of month, range > 26 days, max 6 calendar months). GET /api/1.1/software-cost-insights/summary-v2. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to. Optional filters: user, tag, timezone, summary, category, use-local-time, status-range. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_software_cost_timesheet_summary details
td_get_software_cost_timesheet_summary details
[Time Doctor] Get software cost insights summary with timesheet breakdown. GET /api/1.1/software-cost-insights/timesheet/summary. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, timezone, from, to, start, end, user-tz, use-local-time, params, summary, category. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_software_cost_timesheet_summary_v2 details
td_get_software_cost_timesheet_summary_v2 details
[Time Doctor] Get software cost insights summary per timesheet range (max 6 calendar months). GET /api/1.1/software-cost-insights/timesheet/summary-v2. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, timezone, from, to, start, end, user-tz, use-local-time, params, summary, category. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_query_software_cost_by_category details
td_query_software_cost_by_category details
[Time Doctor] Same as GET category-v2; use POST with JSON body for large filter payloads (merges with query; body wins). POST /api/1.1/software-cost-insights/category-v2. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: from, to, category, user, tag, status-range, page, limit, sort. Returns raw Time Doctor JSON.
td_query_software_cost_summary details
td_query_software_cost_summary details
[Time Doctor] Same as GET summary-v2; use POST with JSON body for large filter payloads (merges with query; body wins). POST /api/1.1/software-cost-insights/summary-v2. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: from, to, user, tag, summary, category, timezone, use-local-time, status-range. Returns raw Time Doctor JSON.
td_query_software_cost_timesheet_summary details
td_query_software_cost_timesheet_summary details
[Time Doctor] Same as GET timesheet/summary-v2; use POST with JSON body for large filter payloads (merges with query; body wins). POST /api/1.1/software-cost-insights/timesheet/summary-v2. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: user, tag, start, end, timezone, user-tz, use-local-time, params, summary, from, to, category. Returns raw Time Doctor JSON.
Statistics
td_get_stats_category details
td_get_stats_category details
[Time Doctor] Get category stats v1.1. GET /api/1.1/stats/category. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], filter[total], filter[meetingTotal], prefilter[comCat], filter[comCatObj], prefilter[entity], prefilter[name], prefilter[score], prefilter[tagId], prefilter[userCat], filter[clicks], filter[moves], filter[keys], filter[totalMins], filter[idleSec], filter[idleSecRatio], filter[idleMins], filter[idleMinsRatio], filter[totalSec], filter[activeSec], filter[activeSecRatio], filter[standardActiveSec], filter[activeBias], filter[activeBiasRatio], filter[standardActiveSecRatio], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_stats_outliers details
td_get_stats_outliers details
[Time Doctor] Get outliers stats v1.1. GET /api/1.1/stats/outliers. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_stats_shift details
td_get_stats_shift details
[Time Doctor] Get shift stats v1.1. GET /api/1.1/stats/shift. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], filter[total], prefilter[shiftId], filter[shiftObj], prefilter[shiftStart], prefilter[shiftEnd], filter[minHours], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_stats_summary details
td_get_stats_summary details
[Time Doctor] Get summary stats v1.1. GET /api/1.1/stats/summary. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], filter[total], filter[meetingTotal], filter[comCat], filter[comCatObj], prefilter[entity], prefilter[name], prefilter[score], prefilter[tagId], prefilter[userCat], filter[clicks], filter[moves], filter[keys], filter[totalMins], filter[idleSec], filter[idleSecRatio], filter[idleMins], filter[idleMinsRatio], filter[totalSec], filter[activeSec], filter[activeSecRatio], filter[standardActiveSec], filter[activeBias], filter[activeBiasRatio], filter[standardActiveSecRatio], filter[offcomputer], filter[computer], filter[mobile], filter[manual], filter[mobMan], filter[paidBreak], filter[unpaidBreak], filter[meeting], filter[paidLeave], filter[unpaidLeave], filter[offcomputerRatio], filter[computerRatio], filter[mobileRatio], filter[manualRatio], filter[mobManRatio], filter[paidBreakRatio], filter[unpaidBreakRatio], filter[meetingRatio], filter[paidLeaveRatio], filter[unpaidLeaveRatio], filter[unratedHis], filter[unprodHis], filter[neutralHis], filter[prodHis], filter[unratedHisRatio], filter[unprodHisRatio], filter[neutralHisRatio], filter[prodHisRatio], filter[unrated], filter[unprod], filter[neutral], filter[prod], filter[unratedRatio], filter[unprodRatio], filter[neutralRatio], filter[prodRatio], filter[idleSecMeeting], filter[clicksRatio], filter[idleSecMeetingRatio], filter[keysRatio], filter[movesRatio], filter[totalSecRatio], filter[idleMinsMeeting], filter[idleOutsideMeetingSec], filter[idleOutsideMeetingMins], filter[idleSecDuringMeetingRatio], filter[idleSecOutsideMeetingRatio], filter[idleMinsDuringMeetingRatio], filter[idleMinsOutsideMeetingRatio], filter[outShift], filter[outShiftRatio], filter[project], filter[task], filter[shift], filter[projectRatio], filter[taskRatio], filter[shiftRatio], filter[comCatRatio], filter[scoreTotal], filter[scoreTotalRatio], filter[workRange], filter[workRangeRatio], filter[modeTotal], filter[meetingCount], filter[talkTime], filter[avgMeetingDuration], filter[avgIdleTimePerMeeting], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_stats_total details
td_get_stats_total details
[Time Doctor] Get total stats v1.1. GET /api/1.1/stats/total. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, filter[offcomputer], filter[computer], filter[mobile], filter[manual], filter[mobMan], filter[paidBreak], filter[unpaidBreak], filter[meeting], filter[paidLeave], filter[unpaidLeave], filter[offcomputerRatio], filter[computerRatio], filter[mobileRatio], filter[manualRatio], filter[mobManRatio], filter[paidBreakRatio], filter[unpaidBreakRatio], filter[meetingRatio], filter[paidLeaveRatio], filter[unpaidLeaveRatio], filter[unratedHis], filter[unprodHis], filter[neutralHis], filter[prodHis], filter[unratedHisRatio], filter[unprodHisRatio], filter[neutralHisRatio], filter[prodHisRatio], filter[unrated], filter[unprod], filter[neutral], filter[prod], filter[unratedRatio], filter[unprodRatio], filter[neutralRatio], filter[prodRatio], filter[standardActiveSec], filter[activeBias], filter[activeBiasRatio], filter[standardActiveSecRatio], filter[clicks], filter[idleSec], filter[idleSecMeeting], filter[keys], filter[moves], filter[totalSec], filter[activeSec], filter[clicksRatio], filter[idleSecRatio], filter[idleSecMeetingRatio], filter[keysRatio], filter[movesRatio], filter[totalSecRatio], filter[activeSecRatio], filter[totalMins], filter[idleMins], filter[idleMinsMeeting], filter[idleMinsRatio], filter[idleOutsideMeetingSec], filter[idleOutsideMeetingMins], filter[idleSecDuringMeetingRatio], filter[idleSecOutsideMeetingRatio], filter[idleMinsDuringMeetingRatio], filter[idleMinsOutsideMeetingRatio], filter[outShift], filter[outShiftRatio], filter[project], filter[task], filter[shift], filter[projectRatio], filter[taskRatio], filter[shiftRatio], filter[comCat], filter[comCatRatio], filter[scoreTotal], filter[scoreTotalRatio], filter[workRange], filter[workRangeRatio], filter[modeTotal], filter[total], filter[meetingCount], filter[talkTime], filter[avgMeetingDuration], filter[avgIdleTimePerMeeting], prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_stats_work_life details
td_get_stats_work_life details
[Time Doctor] Get work-life stats v1.1. GET /api/1.1/stats/work-life. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, filter[total], filter[totalHours], prefilter[lastHour], filter[outShift], prefilter[day], filter[tooManyHours], filter[lateHours], filter[outOfShiftWork], filter[weekendWork], filter[totalIssues], filter[dailyIssues], prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_timesheet_category details
td_get_timesheet_category details
[Time Doctor] Get category stats/timesheet v1.1. GET /api/1.1/stats/timesheet/category. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], filter[total], filter[meetingTotal], prefilter[comCat], filter[comCatObj], prefilter[entity], prefilter[name], prefilter[score], prefilter[tagId], prefilter[userCat], filter[clicks], filter[moves], filter[keys], filter[totalMins], filter[idleSec], filter[idleSecRatio], filter[idleMins], filter[idleMinsRatio], filter[totalSec], filter[activeSec], filter[activeSecRatio], filter[standardActiveSec], filter[activeBias], filter[activeBiasRatio], filter[standardActiveSecRatio], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_timesheet_outliers details
td_get_timesheet_outliers details
[Time Doctor] Get outliers stats/timesheet v1.1. GET /api/1.1/stats/timesheet/outliers. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_timesheet_shift details
td_get_timesheet_shift details
[Time Doctor] Get shift stats/timesheet v1.1. GET /api/1.1/stats/timesheet/shift. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], filter[total], prefilter[shiftId], filter[shiftObj], prefilter[shiftStart], prefilter[shiftEnd], filter[minHours], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_timesheet_summary details
td_get_timesheet_summary details
[Time Doctor] Get summary stats/timesheet v1.1. GET /api/1.1/stats/timesheet/summary. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], filter[total], filter[meetingTotal], filter[comCat], filter[comCatObj], prefilter[entity], prefilter[name], prefilter[score], prefilter[tagId], prefilter[userCat], filter[clicks], filter[moves], filter[keys], filter[totalMins], filter[idleSec], filter[idleSecRatio], filter[idleMins], filter[idleMinsRatio], filter[totalSec], filter[activeSec], filter[activeSecRatio], filter[standardActiveSec], filter[activeBias], filter[activeBiasRatio], filter[standardActiveSecRatio], filter[offcomputer], filter[computer], filter[mobile], filter[manual], filter[mobMan], filter[paidBreak], filter[unpaidBreak], filter[meeting], filter[paidLeave], filter[unpaidLeave], filter[offcomputerRatio], filter[computerRatio], filter[mobileRatio], filter[manualRatio], filter[mobManRatio], filter[paidBreakRatio], filter[unpaidBreakRatio], filter[meetingRatio], filter[paidLeaveRatio], filter[unpaidLeaveRatio], filter[unratedHis], filter[unprodHis], filter[neutralHis], filter[prodHis], filter[unratedHisRatio], filter[unprodHisRatio], filter[neutralHisRatio], filter[prodHisRatio], filter[unrated], filter[unprod], filter[neutral], filter[prod], filter[unratedRatio], filter[unprodRatio], filter[neutralRatio], filter[prodRatio], filter[idleSecMeeting], filter[clicksRatio], filter[idleSecMeetingRatio], filter[keysRatio], filter[movesRatio], filter[totalSecRatio], filter[idleMinsMeeting], filter[idleOutsideMeetingSec], filter[idleOutsideMeetingMins], filter[idleSecDuringMeetingRatio], filter[idleSecOutsideMeetingRatio], filter[idleMinsDuringMeetingRatio], filter[idleMinsOutsideMeetingRatio], filter[outShift], filter[outShiftRatio], filter[project], filter[task], filter[shift], filter[projectRatio], filter[taskRatio], filter[shiftRatio], filter[comCatRatio], filter[scoreTotal], filter[scoreTotalRatio], filter[workRange], filter[workRangeRatio], filter[modeTotal], filter[meetingCount], filter[talkTime], filter[avgMeetingDuration], filter[avgIdleTimePerMeeting], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_timesheet_total details
td_get_timesheet_total details
[Time Doctor] Get total stats/timesheet v1.1. GET /api/1.1/stats/timesheet/total. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, filter[offcomputer], filter[computer], filter[mobile], filter[manual], filter[mobMan], filter[paidBreak], filter[unpaidBreak], filter[meeting], filter[paidLeave], filter[unpaidLeave], filter[offcomputerRatio], filter[computerRatio], filter[mobileRatio], filter[manualRatio], filter[mobManRatio], filter[paidBreakRatio], filter[unpaidBreakRatio], filter[meetingRatio], filter[paidLeaveRatio], filter[unpaidLeaveRatio], filter[unratedHis], filter[unprodHis], filter[neutralHis], filter[prodHis], filter[unratedHisRatio], filter[unprodHisRatio], filter[neutralHisRatio], filter[prodHisRatio], filter[unrated], filter[unprod], filter[neutral], filter[prod], filter[unratedRatio], filter[unprodRatio], filter[neutralRatio], filter[prodRatio], filter[standardActiveSec], filter[activeBias], filter[activeBiasRatio], filter[standardActiveSecRatio], filter[clicks], filter[idleSec], filter[idleSecMeeting], filter[keys], filter[moves], filter[totalSec], filter[activeSec], filter[clicksRatio], filter[idleSecRatio], filter[idleSecMeetingRatio], filter[keysRatio], filter[movesRatio], filter[totalSecRatio], filter[activeSecRatio], filter[totalMins], filter[idleMins], filter[idleMinsMeeting], filter[idleMinsRatio], filter[idleOutsideMeetingSec], filter[idleOutsideMeetingMins], filter[idleSecDuringMeetingRatio], filter[idleSecOutsideMeetingRatio], filter[idleMinsDuringMeetingRatio], filter[idleMinsOutsideMeetingRatio], filter[outShift], filter[outShiftRatio], filter[project], filter[task], filter[shift], filter[projectRatio], filter[taskRatio], filter[shiftRatio], filter[comCat], filter[comCatRatio], filter[scoreTotal], filter[scoreTotalRatio], filter[workRange], filter[workRangeRatio], filter[modeTotal], filter[total], filter[meetingCount], filter[talkTime], filter[avgMeetingDuration], filter[avgIdleTimePerMeeting], prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_timesheet_work_life details
td_get_timesheet_work_life details
[Time Doctor] Get work-life stats/timesheet v1.1. GET /api/1.1/stats/timesheet/work-life. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, tag, task, unpaid, breaks, fields, group-by, resolve, ratio, level, timezone, period, interval, paging, page, limit, sort, filter[total], filter[totalHours], prefilter[lastHour], filter[outShift], prefilter[day], filter[tooManyHours], filter[lateHours], filter[outOfShiftWork], filter[weekendWork], filter[totalIssues], filter[dailyIssues], prefilter[userId], prefilter[userObjPrePos], prefilter[userObjPos], prefilter[userName], prefilter[userNameNorm], prefilter[userArchived], prefilter[currentTagId], prefilter[currentTagObj], prefilter[currentTagName], prefilter[currentTagNameNorm], prefilter[projectId], prefilter[projectObj], prefilter[projectName], prefilter[projectNameNorm], prefilter[projectIntegrationProvider], prefilter[projectIntegrationName], prefilter[projectIntegrationNameNorm], prefilter[taskId], prefilter[taskObj], prefilter[taskName], prefilter[taskNameNorm], prefilter[taskIntegrationProvider], prefilter[taskIntegrationName], prefilter[taskIntegrationNameNorm], prefilter[taskIntegrationLink], prefilter[taskIntegrationLastTracked], prefilter[date], prefilter[timezone], prefilter[start], prefilter[end], prefilter[item], filter[ratio], filter[ratioTotal], filter[count], prefilter[quants], prefilter[offsets], filter[quant0], filter[quant1], filter[quant2], ratio-page, ratio-limit, ratio-sort, ratio-filter[total], ratio-field, ratio-id, date-page, date-limit. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
Groups
td_add_group_manager details
td_add_group_manager details
[Time Doctor] DESTRUCTIVE: assign a manager to a group (tag). Why this is destructive: Gives a person manager authority over a group, including that group's reports and payroll visibility - a privilege grant. POST /api/1.0/tags//managers. Path parameters: tagId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId. Returns raw Time Doctor JSON.
td_create_group details
td_create_group details
[Time Doctor] Create a new group (tag) in the company. POST /api/1.0/tags. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: name, description. Returns raw Time Doctor JSON.
td_delete_group details
td_delete_group details
[Time Doctor] DESTRUCTIVE: delete a group (tag) from the company. Why this is destructive: Deletes the group and the report grouping built on it, and the group's managers lose the authority that membership gave them. DELETE /api/1.0/tags/. Path parameters: tagId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Returns raw Time Doctor JSON.
td_get_group details
td_get_group details
[Time Doctor] Retrieve details of a specific group (tag). GET /api/1.0/tags/. Path parameters: tagId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_groups details
td_list_groups details
[Time Doctor] Retrieve list of all groups (tags) in the company. GET /api/1.0/tags. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: include-archived-tags. Returns raw Time Doctor JSON.
td_remove_group_manager details
td_remove_group_manager details
[Time Doctor] DESTRUCTIVE: remove a manager from a group (tag). Why this is destructive: Removes a person's manager authority over the group, including the people and the reports that authority reached. DELETE /api/1.0/tags//managers/. Path parameters: tagId, userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_update_group details
td_update_group details
[Time Doctor] DESTRUCTIVE: update details of a specific group (tag). Why this is destructive: The request body's active field switches the group off, so this update reaches the same outcome as td_delete_group without that tool's consent prompt: the report grouping built on it goes with it, and the group's managers lose the authority that membership gave them. PUT /api/1.0/tags/. Path parameters: tagId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: name, description, active. Returns raw Time Doctor JSON.
Projects
td_create_project details
td_create_project details
[Time Doctor] Create a new project in the company. POST /api/1.0/projects. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: scope, users, cloneTasksFromId, cloneAccessFromId, name, description, deleted, weight. Returns raw Time Doctor JSON.
td_delete_project details
td_delete_project details
[Time Doctor] DESTRUCTIVE: remove a project from the company. Why this is destructive: Removes the project. Time already tracked against it stops reporting under it, and its task structure goes with it. DELETE /api/1.0/projects/. Path parameters: projectId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Returns raw Time Doctor JSON.
td_get_project details
td_get_project details
[Time Doctor] Retrieve detailed information about a specific project. GET /api/1.0/projects/. Path parameters: projectId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Returns raw Time Doctor JSON.
td_grant_project_access details
td_grant_project_access details
[Time Doctor] DESTRUCTIVE: grant or modify user access to a private project. Why this is destructive: Grants or changes a person's access to a private project - a permission grant. PUT /api/1.0/projects//users/. Path parameters: projectId, userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Send the request body as JSON; Time Doctor documents these fields: role. Returns raw Time Doctor JSON.
td_list_projects details
td_list_projects details
[Time Doctor] Retrieve a list of all projects in the company. GET /api/1.0/projects. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: detail, user, page, limit, sort, filter[id], filter[name], filter[keywords], projects, all, show-integration, allow-unassigned, filter[keyphrase]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_projects_v11 details
td_list_projects_v11 details
[Time Doctor] Retrieve projects list with enhanced streaming support. GET /api/1.1/projects. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: detail, user, page, limit, sort, filter[id], filter[name], filter[keywords], projects, all, show-integration, allow-unassigned, filter[keyphrase]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_make_project_public details
td_make_project_public details
[Time Doctor] DESTRUCTIVE: convert a private project to public access. Why this is destructive: Clears the whole per-user access list in one call - the vendor's own way of making a private project public - so everyone in the company can then see it. DELETE /api/1.0/projects//users. Path parameters: projectId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Returns raw Time Doctor JSON.
td_revoke_project_access details
td_revoke_project_access details
[Time Doctor] DESTRUCTIVE: revoke a specific user's access to a private project. Why this is destructive: Takes a person's access to a private project away. Their tracked time stays, but they lose the project from that moment. DELETE /api/1.0/projects//users/. Path parameters: projectId, userId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Returns raw Time Doctor JSON.
td_update_project details
td_update_project details
[Time Doctor] DESTRUCTIVE: update project information and settings. Why this is destructive: The request body's deleted field archives the project, so this update reaches the same outcome as td_delete_project without that tool's consent prompt. Time already tracked against an archived project stops reporting under it, and its task structure goes with it. PUT /api/1.0/projects/. Path parameters: projectId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Send the request body as JSON; Time Doctor documents these fields: name, description, deleted, weight. Returns raw Time Doctor JSON.
Tasks
td_archive_task details
td_archive_task details
[Time Doctor] DESTRUCTIVE: archive or restore a task. Why this is destructive: Archives the task, so it leaves the pickers people track against. Restoring it is a separate call and anyone tracking it has to be re-pointed. DELETE /api/1.0/tasks/. Path parameters: taskId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted. Returns raw Time Doctor JSON.
td_create_task details
td_create_task details
[Time Doctor] Create a new task in the company. POST /api/1.0/tasks. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: project, name, description, weight, deleted, status, public. Returns raw Time Doctor JSON.
td_get_task details
td_get_task details
[Time Doctor] Retrieve detailed information about a specific task. GET /api/1.0/tasks/. Path parameters: taskId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_tasks details
td_list_tasks details
[Time Doctor] Retrieve a list of all tasks in the company. GET /api/1.0/tasks. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted, page, limit, sort, filter[id], filter[name], filter[keywords], tasks, projects, folders, show-integration, public-only, projectless, filter[keyphrase], filter[folder], filter[project], filter[status], filter[assignedTo]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_tasks_v11 details
td_list_tasks_v11 details
[Time Doctor] Retrieve tasks list with enhanced streaming support. GET /api/1.1/tasks. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: deleted, page, limit, sort, filter[id], filter[name], filter[keywords], tasks, projects, folders, show-integration, public-only, projectless, filter[folder], filter[project], filter[status], filter[assignedTo], filter[keyphrase]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_update_task details
td_update_task details
[Time Doctor] DESTRUCTIVE: update task information and settings. Why this is destructive: The request body's deleted field archives the task, so this update reaches the same outcome as td_archive_task without that tool's consent prompt. An archived task leaves the pickers people track against, and anyone tracking it has to be re-pointed. PUT /api/1.0/tasks/. Path parameters: taskId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: project, name, description, weight, deleted, status, public. Returns raw Time Doctor JSON.
Work schedules
td_delete_work_schedule details
td_delete_work_schedule details
[Time Doctor] DESTRUCTIVE: remove a specific work schedule entry. Why this is destructive: Removes a shift from the schedule, which changes what counts as on time and as absent in every schedule-adherence report. DELETE /api/1.0/work-schedules/. Path parameters: id. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_get_attendance_report details
td_get_attendance_report details
[Time Doctor] Retrieve Attendance Report rows for scheduled shifts in a date range. GET /api/1.0/work-schedules/attendance. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to. Optional filters: timezone, user, tag, group-by, page, limit, sort, include-archived-users, show-absent-late-only, show-users-with-shift, filter[start], filter[leaveType]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_leave_stats details
td_get_leave_stats details
[Time Doctor] Retrieve aggregated leave statistics including total and approved leave counts. GET /api/1.0/work-schedules/stats. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to. Optional filters: user, tag, page, limit, sort, work-range, leave-type, approved, resolve-names, include-auto-approved, exclude-status, filter[start], filter[leaveType]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_work_schedule details
td_get_work_schedule details
[Time Doctor] Retrieve details of a specific work schedule entry. GET /api/1.0/work-schedules/. Path parameters: id. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_schedule_issues details
td_list_schedule_issues details
[Time Doctor] Retrieve work schedule issues and conflicts for dashboard monitoring. GET /api/1.0/work-schedules/issues. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to. Optional filters: user, tag, group-by, all-users-tag. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_list_work_schedules details
td_list_work_schedules details
[Time Doctor] Retrieve work schedules for users including shifts, time off, and leave periods. GET /api/1.0/work-schedules. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to. Optional filters: user, tag, page, limit, sort, work-range, leave-type, approved, resolve-names, include-auto-approved, exclude-status, filter[start], filter[leaveType]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_replace_work_schedules details
td_replace_work_schedules details
[Time Doctor] DESTRUCTIVE: bulk create or update work schedules for multiple users. Why this is destructive: The vendor documents remove-then-insert: every existing schedule inside the from/to window is deleted before the request body is inserted, so a person left out of the body loses their shifts. PUT /api/1.0/work-schedules. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: from, to. Send the request body as JSON; Time Doctor documents these fields: userId, schedules. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_update_work_schedule details
td_update_work_schedule details
[Time Doctor] Update a specific work schedule entry. PUT /api/1.0/work-schedules/. Path parameters: id. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: approved. Returns raw Time Doctor JSON.
Screencasts
td_delete_screencast details
td_delete_screencast details
[Time Doctor] DESTRUCTIVE: remove a specific file entry from the system. Why this is destructive: Deletes a screenshot or screen recording - the evidence a productivity or billing dispute is settled with. StackJack cannot restore it. DELETE /api/1.0/files///. Path parameters: type, date, number. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_get_screencast_counts details
td_get_screencast_counts details
[Time Doctor] Retrieve aggregated file counts for screenshots and other tracked media. GET /api/1.0/files/counts. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, paging, page, limit, sort, includeUnusualActivity, unusualOnly, totalDuplicateCount, totalLowActvityCount, filter[date], filter[entity], filter[avg-activity], filter[duplicate], filter[isBlured]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_get_screencast_download_url details
td_get_screencast_download_url details
[Time Doctor] Generate a temporary signed URL for secure file download. GET /api/1.1/files//signed-url//. Path parameters: type, date, number. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_screencasts details
td_list_screencasts details
[Time Doctor] Retrieve list of all files (screenshots, webcam captures, etc.) for users. GET /api/1.0/files. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, paging, page, limit, sort, includeUnusualActivity, unusualOnly, totalDuplicateCount, totalLowActvityCount, filter[date], filter[entity], filter[avg-activity], filter[duplicate], filter[isBlured]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_list_screencasts_by_type details
td_list_screencasts_by_type details
[Time Doctor] Retrieve files filtered by specific type (screenshots, webcam, etc.). GET /api/1.0/files/. Path parameters: type. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, paging, page, limit, sort, includeUnusualActivity, unusualOnly, totalDuplicateCount, totalLowActvityCount, filter[date], filter[entity], filter[avg-activity], filter[duplicate], filter[isBlured]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_update_screencast_metadata details
td_update_screencast_metadata details
[Time Doctor] Create or update file metadata entry in the system. PUT /api/1.0/files///. Path parameters: type, date, number. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: contentType, blur, chunkId, clicks, movements, keys, period, imageSize, imageMd5, createdAt, h, w. Time Doctor documents 4 more fields; the bodyJson parameter lists them all. Returns raw Time Doctor JSON.
IP allow list
td_archive_ip_address details
td_archive_ip_address details
[Time Doctor] DESTRUCTIVE: remove an IP address from the company whitelist. Why this is destructive: Archiving an allow-listed address changes where people are permitted to track time from, and nothing in this API un-archives it. DELETE /api/1.0/ipaddresses/. Path parameters: ipAddressId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_archive_ip_addresses_by_ssid details
td_archive_ip_addresses_by_ssid details
[Time Doctor] DESTRUCTIVE: archive all IP address whitelist records that share the same WiFi network name (SSID). Why this is destructive: Archives EVERY allow-list entry sharing that WiFi name in one call, so one SSID string can remove a whole office's tracking rules. DELETE /api/1.0/ipaddresses/by-ssid. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Required filters: ssid. Returns raw Time Doctor JSON.
td_create_ip_address details
td_create_ip_address details
[Time Doctor] Add a new IP address to the company whitelist. POST /api/1.0/ipaddresses. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: ipAddress, type, ipRangeStart, ipRangeEnd, ipCidr, locationType, ipType. Returns raw Time Doctor JSON.
td_get_ip_address details
td_get_ip_address details
[Time Doctor] Retrieve details of a specific IP address record. GET /api/1.0/ipaddresses/. Path parameters: ipAddressId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_ip_addresses details
td_list_ip_addresses details
[Time Doctor] Retrieve list of allowed IP addresses for company access control. GET /api/1.0/ipaddresses. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: page, limit, sort, from, to, deleted, filter[locationType]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_update_ip_address details
td_update_ip_address details
[Time Doctor] Update an existing IP address record. PUT /api/1.0/ipaddresses/. Path parameters: ipAddressId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: ipAddress, type, ipRangeStart, ipRangeEnd, ipCidr, locationType, ipType. Returns raw Time Doctor JSON.
Notifications
td_create_notification details
td_create_notification details
[Time Doctor] DESTRUCTIVE: create a new notification for users. Why this is destructive: Sends an announcement to the company's people. Reaching a human cannot be undone. POST /api/1.0/notifications. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: notification. Returns raw Time Doctor JSON.
td_get_notification details
td_get_notification details
[Time Doctor] Retrieve detailed information about a specific notification. GET /api/1.0/notifications/. Path parameters: notificationId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_list_notifications details
td_list_notifications details
[Time Doctor] Retrieve list of notifications for the authenticated user. GET /api/1.0/notifications. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: page, limit, sort, filter[name], filter[active], filter[notifyType], filter[recipientId], filter[user], filter[pricingPlan], filter[isDEN]. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. Returns raw Time Doctor JSON.
td_subscribe_notification details
td_subscribe_notification details
[Time Doctor] Subscribe to a specific notification type or channel. POST /api/1.0/notifications//subscribe. Path parameters: notificationId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: recipientIds. Returns raw Time Doctor JSON.
td_unsubscribe_notification details
td_unsubscribe_notification details
[Time Doctor] DESTRUCTIVE: unsubscribe from a specific notification type or channel. Why this is destructive: Stops a person receiving that notification. Re-subscribing is a separate call, and the alerts missed in between are not replayed. POST /api/1.0/notifications//unsubscribe. Path parameters: notificationId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: recipientIds. Returns raw Time Doctor JSON.
td_update_notification details
td_update_notification details
[Time Doctor] Update notification settings or mark as read. PUT /api/1.0/notifications/. Path parameters: notificationId. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: notification. Returns raw Time Doctor JSON.
Calendar integration
td_delete_stored_calendar_events details
td_delete_stored_calendar_events details
[Time Doctor] DESTRUCTIVE: delete stored calendar events from local database. Why this is destructive: Deletes the stored meeting history the calendar reports are built from. It comes back only if the calendar is re-synced, and only for the window Google still holds. DELETE /api/1.1/calendar/events. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: provider, eventId, before. Returns raw Time Doctor JSON.
td_disconnect_calendar details
td_disconnect_calendar details
[Time Doctor] DESTRUCTIVE: disconnect calendar integration (marks token as invalid, stops webhook, optionally deletes events). Why this is destructive: Invalidates the stored Google token, stops the webhook and can delete the stored events with it. Reconnecting needs a fresh Google authorization from the customer. POST /api/1.1/calendar/disconnect. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: deleteEvents, provider. Returns raw Time Doctor JSON.
td_get_calendar_auth_url details
td_get_calendar_auth_url details
[Time Doctor] Generate Google Calendar OAuth2 authorization URL for user consent. GET /api/1.1/calendar/auth-url. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: provider. Returns raw Time Doctor JSON.
td_get_calendar_summary details
td_get_calendar_summary details
[Time Doctor] Get summary statistics for calendar meetings across multiple users. GET /api/1.1/calendar/summary. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, from, to, provider. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_get_calendar_token_status details
td_get_calendar_token_status details
[Time Doctor] Check Google Calendar OAuth2 token status and connection health. GET /api/1.1/calendar/token-status. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: provider. Returns raw Time Doctor JSON.
td_list_calendar_events details
td_list_calendar_events details
[Time Doctor] Fetch calendar events directly from Google Calendar API. GET /api/1.1/calendar/events. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, limit, provider, orderBy, singleEvents. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_list_stored_calendar_events details
td_list_stored_calendar_events details
[Time Doctor] Retrieve calendar events from local database storage. GET /api/1.1/calendar/stored-events. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: from, to, user, resolve, sort, page, limit, tag, provider, eventId. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_list_unique_calendar_meetings details
td_list_unique_calendar_meetings details
[Time Doctor] Get deduplicated calendar meetings for users with connected Google Calendar. GET /api/1.1/calendar/unique-events. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: user, tag, from, to, sort, page, limit, provider. Paging is by ROW OFFSET: page is how many rows to SKIP, not a page index, so walk 0, then limit, then 2 x limit. limit is capped at 250 rows by StackJack. from and to are ISO 8601 instants in UTC (2026-09-01T00:00:00Z): Time Doctor stores and returns UTC only, so convert local times before sending them. Returns raw Time Doctor JSON.
td_refresh_calendar_token details
td_refresh_calendar_token details
[Time Doctor] DESTRUCTIVE: refresh expired OAuth2 access token using refresh token. Why this is destructive: Rotates the stored Google token: the previous one stops working the moment this returns, so anything still holding it fails until it re-reads. POST /api/1.1/calendar/refresh-token. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Optional filters: provider. Returns raw Time Doctor JSON.
td_start_calendar_watch details
td_start_calendar_watch details
[Time Doctor] DESTRUCTIVE: start Google Calendar webhook notifications for real-time event updates. Why this is destructive: Registers an outbound Google push channel at a callback URL this call NAMES, so a customer's calendar changes are pointed at an address chosen by whoever made the call. Closing the channel again needs td_stop_calendar_watch or td_disconnect_calendar and both are destructive, so without this marker an automation refused destructive consent could open a state it cannot close. POST /api/1.1/calendar/watch/start. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: callbackUrl. Returns raw Time Doctor JSON.
td_stop_calendar_watch details
td_stop_calendar_watch details
[Time Doctor] DESTRUCTIVE: stop Google Calendar webhook notifications. Why this is destructive: Stops the Google push channel, so meetings stop arriving until a new watch is started, and the gap is not backfilled. POST /api/1.1/calendar/watch/stop. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Returns raw Time Doctor JSON.
td_sync_calendar_events details
td_sync_calendar_events details
[Time Doctor] Manually trigger calendar event synchronization and return updated events. POST /api/1.1/calendar/sync-events. Names the company it applies to: pass company, or omit it to use the default company id saved on this connection. One Time Doctor login can reach several companies - call td_list_companies for their ids. Send the request body as JSON; Time Doctor documents these fields: userId, from, to, limit, force, provider. Returns raw Time Doctor JSON.
Raw Requests
td_raw_get details
td_raw_get details
[Time Doctor] Send one GET to any Time Doctor path and return the response exactly as Time Doctor sent it. This is the escape hatch for anything the 145 typed tools do not cover — a route added since this connector's spec snapshot, or a shape only the vendor's own documentation describes. It never bypasses a specific tool's own gate: your connector subscription, endpoint tool selection, plan and billing all still apply, and Time Doctor still authorizes on your own role in the company, so this returns exactly what you could read anyway. Prefer the typed tool when one exists — it escapes the ids, names its filters as arguments, and its description tells you what the answer means. Three Time Doctor GET routes ACT rather than read, and this tool can reach all three: api/1.0/profile/restore-password emails a password-reset link to a real person, api/1.0/login/2fa/new mints a new authenticator seed and supersedes the old one, and api/1.0/logout/by-id invalidates an access token. Use td_send_password_reset_email, td_generate_two_factor_secret and td_revoke_user_session for those: they are marked destructive, so your harness asks before it runs them, and this tool does not. That is also why this tool is not marked read-only even though it only sends GET. The path is relative to the instance root and must start with api/ (api/1.0/... and api/1.1/... are the Data API, api/2.0/auth/... the Auth API); it may carry its own query string, which is passed through untouched. company is added for you when your path does not already name it: pass it, or omit it to use the default company id saved on this connection — most Data API routes require it and answer 422 missingRequired without it. Call td_list_companies for the ids this login reaches. Paging is yours to drive: page is a ROW OFFSET, not a page index, so walk 0, then limit, then 2 x limit. Responses are the vendor's raw JSON, payload under a top-level data key and errors as {error, message, thrown}. A raw read is never auto-retried on a server error, because three Time Doctor GETs are real writes upstream and this tool cannot tell in advance which route you named — if a call fails with a 5xx, send it again yourself.
td_raw_request details
td_raw_request details
[Time Doctor] DESTRUCTIVE: send one POST, PUT or DELETE to any Time Doctor path and return the response exactly as Time Doctor sent it. Why this is destructive: the blast radius is whatever path you name, and this connector's most consequential routes are reachable through it — deleting a user can permanently delete their tracked time, screencasts and payroll history; a payroll or time-edit write changes what a person is paid; an invitation, announcement or password-reset route reaches a real human; and replacing work schedules removes the existing ones in the window first. None of that is recoverable from here. It never bypasses a specific tool's own gate: your connector subscription, endpoint tool selection, plan, billing and the agent consent gate all still apply, and Time Doctor still authorizes on your own role in the company. Prefer the typed tool when one exists — 65 writes are already modelled, each with its own warning about what the customer loses. PATCH is not accepted: Time Doctor's API has no PATCH route at all, across all 173 documented operations. GET is refused as well — use td_raw_get, which needs no Pro plan. The path is relative to the instance root and must start with api/, and may carry its own query string. company is added for you when your path does not already name it, from the argument or the default company id saved on this connection; call td_list_companies for the ids this login reaches. Send body as JSON; it reaches Time Doctor untouched, and several routes answer 200 with no content at all, which arrives as {"success":true} rather than as a failure — that is accepted, not confirmed, so re-read the object to see the result.
More in Tools Reference
Atera ToolsAuvik ToolsAvanan (Check Point Harmony Email) ToolsConnectWise Sell ToolsStill need help? Ask the team