Skip to main content
Tools Reference

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

ToolPlanAccessSummary
td_create_companyProWriteCreate a new company with the authenticated user as owner.
td_get_companyFreeRead-onlyRetrieve detailed information about a specific company.
td_get_directory_syncFreeRead-onlyRetrieve directory synchronization configuration for the company.
td_list_companiesFreeRead-onlyRetrieve list of companies where the authenticated user has administrative access.
td_list_company_timezonesFreeRead-onlyRetrieve timezone information for all users in the company.
td_update_companyProDestructiveDESTRUCTIVE: update company information and settings.
td_update_directory_syncProDestructiveDESTRUCTIVE: configure or update directory synchronization settings for the company.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, description, creator, timezone, pricingPlan, newOwnerId, silentTrackingTimes, whoCanAccessScreenshots, whoCanAccessPayroll, allowLeavesForRegularUsers, mobileAppTracking, capture2Tracking, aiConnectionsTracking.
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.

[Time Doctor] Retrieve detailed information about a specific company. GET /api/1.0/companies/. Path parameters: companyId. Returns raw Time Doctor JSON.

ParamTypeRequiredDefaultDescription
companyIdstringyesRequired. Unique identifier of the company.

[Time Doctor] Retrieve directory synchronization configuration for the company. GET /api/1.0/companies//directory-sync. Path parameters: companyId. Returns raw Time Doctor JSON.

ParamTypeRequiredDefaultDescription
companyIdstringyesRequired. Unique identifier of the company.

[Time Doctor] Retrieve list of companies where the authenticated user has administrative access. GET /api/1.0/companies. Returns raw Time Doctor JSON.

[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.

ParamTypeRequiredDefaultDescription
companyIdstringyesRequired. Unique identifier of the company.
sortTzstringnonullOptional. Sends sort-tz. When true, sorts timezones with company timezone listed first.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, description, creator, timezone, pricingPlan, newOwnerId, silentTrackingTimes, whoCanAccessScreenshots, whoCanAccessPayroll, allowLeavesForRegularUsers, mobileAppTracking, capture2Tracking, aiConnectionsTracking.
companyIdstringyesRequired. Unique identifier of the company.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON, per Time Doctor's documented sample for this endpoint.
companyIdstringyesRequired. Unique identifier of the company.

Company payroll

ToolPlanAccessSummary
td_get_company_payroll_settingsFreeRead-onlyRetrieve company-wide payroll settings and defaults.
td_update_company_payroll_settingsProDestructiveDESTRUCTIVE: update company-wide payroll settings and defaults.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: transferWise, transferWiseCurrency, payoneer, paypal, bitWage, quickBooks, gusto, adp, adpCompanyCode, adpMaxHours, adpIncludeUserNames.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

Profile

ToolPlanAccessSummary
td_send_password_reset_emailProDestructiveDESTRUCTIVE: request a password reset email.
td_update_my_profileProDestructiveDESTRUCTIVE: update user profile information (personal data not tied to any specific company).

[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.

ParamTypeRequiredDefaultDescription
emailstringyesRequired. The email this call filters on.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, email, timezone, password, twoFactorAuth, referrer.

Account and sessions

ToolPlanAccessSummary
td_activate_two_factorProDestructiveDESTRUCTIVE: turn on two-factor sign-in for the signed-in account by confirming a code from the authenticator app holding the new seed.
td_generate_two_factor_secretProDestructiveDESTRUCTIVE: generate a new two-factor authenticator seed and QR code for the signed-in account.
td_get_authorization_contextFreeRead-onlyRead the signed-in account's own profile, permissions, company settings and the list of companies it can reach.
td_get_current_userFreeRead-onlyRead the signed-in account's user and company data from the Auth v2 service.
td_revoke_user_sessionProDestructiveDESTRUCTIVE: invalidate one of the signed-in account's access tokens by its id, ending that one session and leaving the others alone.
td_revoke_user_session_v2ProDestructiveDESTRUCTIVE: revoke one Auth v2 access-token document by its id, ending that one session and leaving the others alone.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: totpCode.

[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.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
hasManagedScreencastsstringnonullOptional. Sends has-managed-screencasts. If specified, resolve whether screencasts enabled for you and your managed users.
taskProjectNamesstringnonullOptional. Sends task-project-names. If specified, the method will resolve the names for tasks and projects.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
hasManagedScreencastsstringnonullOptional. Sends has-managed-screencasts. The has-managed-screencasts filter.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolve task and project names in the payload.

[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.

ParamTypeRequiredDefaultDescription
idstringyesRequired. token ID, returned by GET /api/1.0/users/tokens API.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: id.

Invitations

ToolPlanAccessSummary
td_check_invitation_existsFreeRead-onlyCheck if an invitation exists for a specific email address.
td_check_invitations_exist_bulkFreeRead-onlyCheck if invitations exist for multiple email addresses in a single request.
td_send_invitationProDestructiveDESTRUCTIVE: send an invitation email to a new user to join the company.
td_send_invitations_bulkProDestructiveDESTRUCTIVE: send multiple user invitations in a single request.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
emailstringyesRequired. Email address of user to query.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: emails.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, email, role, employeeId, noSendEmail, onlyProjectIds.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: users, noSendEmail, onlyProjectIds, tagIds, settings, managedGroups, assignedProjects.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

Payroll

ToolPlanAccessSummary
td_bulk_update_user_payrollProDestructiveDESTRUCTIVE: bulk update payroll information for multiple users.
td_delete_user_payrollProDestructiveDESTRUCTIVE: remove payroll information for a specific user.
td_list_user_payrollFreeRead-onlyRetrieve payroll information for multiple users.
td_update_user_payrollProDestructiveDESTRUCTIVE: update payroll information for a specific user.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: id, currency, adjustment, payRate, payMethod, payIdentifier, hourlyLimit, hourlyLimitRange.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userIdstringyesRequired. Unique identifier of the user to retrieve payroll data for.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringnonullOptional. ISO 8601 date for the start of the payroll period (YYYY-MM-DD). ISO 8601 UTC.
tagstringnonullOptional. Comma-separated tag IDs to filter time entries for payroll calculations.
tostringnonullOptional. ISO 8601 date for the end of the payroll period (YYYY-MM-DD). ISO 8601 UTC.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: id, currency, adjustment, payRate, payMethod, payIdentifier, hourlyLimit, hourlyLimitRange.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userIdstringyesRequired. Unique identifier of the user to retrieve payroll data for.

Pending approvals

ToolPlanAccessSummary
td_approve_pending_userProDestructiveDESTRUCTIVE: approve or update a pending user approval request.
td_approve_pending_users_bulkProDestructiveDESTRUCTIVE: bulk approve or update multiple pending user approvals.
td_delete_pending_approvalProDestructiveDESTRUCTIVE: remove a pending approval request for a specific user.
td_delete_pending_approvals_bulkProDestructiveDESTRUCTIVE: bulk remove multiple pending approval requests.
td_list_pending_approvalsFreeRead-onlyRetrieve list of pending user approvals awaiting administrator action.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: userId, approved, blocked.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userIdstringyesRequired. ID of the user to delete.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: userId, approved, blocked.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userIdstringyesRequired. ID of the user to delete.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON, per Time Doctor's documented sample for this endpoint.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
blockedstringnonullOptional. Filter approvals by blocked status (true for blocked approvals, false for unblocked).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterDateTimeAddedstringnonullOptional. Sends filter[dateTimeAdded]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterLastSeenstringnonullOptional. Sends filter[lastSeen]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.

Users

ToolPlanAccessSummary
td_add_user_to_groupProWriteAdd a user to a group (tag) as a member.
td_delete_userProDestructiveDESTRUCTIVE: remove a user from the company or permanently delete their data.
td_get_userFreeRead-onlyRetrieve detailed information about a specific user by their ID.
td_get_user_totalsFreeRead-onlyRetrieve comprehensive configuration details for all users in the company.
td_get_user_v11FreeRead-onlyRetrieve detailed user information with enhanced idle status data.
td_list_managed_usersFreeRead-onlyRetrieve list of users managed by the specified user.
td_list_user_auth_tokensFreeRead-onlyRetrieve information about all active authentication tokens for the current user.
td_list_usersFreeRead-onlyRetrieve a list of users in the company with optional filtering and pagination.
td_list_users_v11FreeRead-onlyRetrieve a list of users with enhanced features including idle status information.
td_list_users_v12FreeRead-onlyGet users details.
td_remove_user_from_groupProDestructiveDESTRUCTIVE: remove a user from a group (tag).
td_update_userProDestructiveDESTRUCTIVE: update user settings and configuration within a company.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: tagId.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletePermanentlystringnonullOptional. Sends delete-permanently. When true, permanently deletes user and all associated data from system (irreversible).
deletedstringnonullOptional. When true, operates on disabled (deleted) users. When false, operates on active users.
reasonstringnonullOptional. Reason for deleting user (for audit trail).
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
deletedstringnonullOptional. When true, operates on disabled (deleted) users. When false, operates on active users.
detailstringnonullOptional. Level of detail in reply (controls which fields are included).
filterClientVersionstringnonullOptional. Sends filter[clientVersion]. "string" -- exact match. Time Doctor also accepts filter[client-version]; this argument sends the camelCase spelling.
filterCreatedstringnonullOptional. Sends filter[created]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterEmailstringnonullOptional. Sends filter[email]. "string" -- starts with.
filterHiredAtstringnonullOptional. Sends filter[hiredAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[hired-at]; this argument sends the camelCase spelling.
filterHostNamestringnonullOptional. Sends filter[hostName]. "string" -- starts with. Time Doctor also accepts filter[host-name]; this argument sends the camelCase spelling.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterInviteAcceptedbooleannonullOptional. Sends filter[inviteAccepted]. boolean value. Time Doctor also accepts filter[invite-accepted]; this argument sends the camelCase spelling.
filterInvitePendingbooleannonullOptional. Sends filter[invitePending]. boolean value. Time Doctor also accepts filter[invite-pending]; this argument sends the camelCase spelling.
filterIpstringnonullOptional. Sends filter[ip]. "string" -- starts with.
filterKeywordsstringnonullOptional. Sends filter[keywords]. match string.
filterLastActiveTrackstringnonullOptional. Sends filter[lastActiveTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-active-track]; this argument sends the camelCase spelling.
filterLastTrackstringnonullOptional. Sends filter[lastTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-track]; this argument sends the camelCase spelling.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterOsstringnonullOptional. Sends filter[os]. "string" -- exact match.
filterPayrollAccessbooleannonullOptional. Sends filter[payrollAccess]. boolean value. Time Doctor also accepts filter[payroll-access]; this argument sends the camelCase spelling.
filterRolestringnonullOptional. Sends filter[role]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScreenshotsstringnonullOptional. Sends filter[screenshots]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShowOnReportsbooleannonullOptional. Sends filter[showOnReports]. boolean value. Time Doctor also accepts filter[show-on-reports]; this argument sends the camelCase spelling.
filterTagstringnonullOptional. Sends filter[tag]. "string" -- exact match.
filterTagCountstringnonullOptional. Sends filter[tag-count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterVideosstringnonullOptional. Sends filter[videos]. "string" -- exact match.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes archived users in results. Archived users are hidden by default.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
noTagstringnonullOptional. Sends no-tag. When true, returns only users without any tag assignments.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolves task and project names instead of returning only IDs.
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
detailstringnonullOptional. Level of detail in reply (controls which fields are included).
filterClientVersionstringnonullOptional. Sends filter[clientVersion]. "string" -- exact match. Time Doctor also accepts filter[client-version]; this argument sends the camelCase spelling.
filterCreatedstringnonullOptional. Sends filter[created]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterEmailstringnonullOptional. Sends filter[email]. "string" -- starts with.
filterHiredAtstringnonullOptional. Sends filter[hiredAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[hired-at]; this argument sends the camelCase spelling.
filterHostNamestringnonullOptional. Sends filter[hostName]. "string" -- starts with. Time Doctor also accepts filter[host-name]; this argument sends the camelCase spelling.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterInviteAcceptedbooleannonullOptional. Sends filter[inviteAccepted]. boolean value. Time Doctor also accepts filter[invite-accepted]; this argument sends the camelCase spelling.
filterInvitePendingbooleannonullOptional. Sends filter[invitePending]. boolean value. Time Doctor also accepts filter[invite-pending]; this argument sends the camelCase spelling.
filterIpstringnonullOptional. Sends filter[ip]. "string" -- starts with.
filterKeywordsstringnonullOptional. Sends filter[keywords]. match string.
filterLastActiveTrackstringnonullOptional. Sends filter[lastActiveTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-active-track]; this argument sends the camelCase spelling.
filterLastTrackstringnonullOptional. Sends filter[lastTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-track]; this argument sends the camelCase spelling.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterOsstringnonullOptional. Sends filter[os]. "string" -- exact match.
filterPayrollAccessbooleannonullOptional. Sends filter[payrollAccess]. boolean value. Time Doctor also accepts filter[payroll-access]; this argument sends the camelCase spelling.
filterRolestringnonullOptional. Sends filter[role]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScreenshotsstringnonullOptional. Sends filter[screenshots]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShowOnReportsbooleannonullOptional. Sends filter[showOnReports]. boolean value. Time Doctor also accepts filter[show-on-reports]; this argument sends the camelCase spelling.
filterTagstringnonullOptional. Sends filter[tag]. "string" -- exact match.
filterTagCountstringnonullOptional. Sends filter[tag-count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterVideosstringnonullOptional. Sends filter[videos]. "string" -- exact match.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes archived users in results. Archived users are hidden by default.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
noTagstringnonullOptional. Sends no-tag. When true, returns only users without any tag assignments.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
selfstringnonullOptional. When true, returns user data of userId in self reply field.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolves task and project names instead of returning only IDs.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
deletedstringnonullOptional. When true, operates on disabled (deleted) users. When false, operates on active users.
detailstringnonullOptional. Level of detail in reply (controls which fields are included).
filterClientVersionstringnonullOptional. Sends filter[clientVersion]. "string" -- exact match. Time Doctor also accepts filter[client-version]; this argument sends the camelCase spelling.
filterCreatedstringnonullOptional. Sends filter[created]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterEmailstringnonullOptional. Sends filter[email]. "string" -- starts with.
filterHiredAtstringnonullOptional. Sends filter[hiredAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[hired-at]; this argument sends the camelCase spelling.
filterHostNamestringnonullOptional. Sends filter[hostName]. "string" -- starts with. Time Doctor also accepts filter[host-name]; this argument sends the camelCase spelling.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterInviteAcceptedbooleannonullOptional. Sends filter[inviteAccepted]. boolean value. Time Doctor also accepts filter[invite-accepted]; this argument sends the camelCase spelling.
filterInvitePendingbooleannonullOptional. Sends filter[invitePending]. boolean value. Time Doctor also accepts filter[invite-pending]; this argument sends the camelCase spelling.
filterIpstringnonullOptional. Sends filter[ip]. "string" -- starts with.
filterKeywordsstringnonullOptional. Sends filter[keywords]. match string.
filterLastActiveTrackstringnonullOptional. Sends filter[lastActiveTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-active-track]; this argument sends the camelCase spelling.
filterLastTrackstringnonullOptional. Sends filter[lastTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-track]; this argument sends the camelCase spelling.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterOsstringnonullOptional. Sends filter[os]. "string" -- exact match.
filterPayrollAccessbooleannonullOptional. Sends filter[payrollAccess]. boolean value. Time Doctor also accepts filter[payroll-access]; this argument sends the camelCase spelling.
filterRolestringnonullOptional. Sends filter[role]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScreenshotsstringnonullOptional. Sends filter[screenshots]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShowOnReportsbooleannonullOptional. Sends filter[showOnReports]. boolean value. Time Doctor also accepts filter[show-on-reports]; this argument sends the camelCase spelling.
filterTagstringnonullOptional. Sends filter[tag]. "string" -- exact match.
filterTagCountstringnonullOptional. Sends filter[tag-count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterVideosstringnonullOptional. Sends filter[videos]. "string" -- exact match.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes archived users in results. Archived users are hidden by default.
includeIdleStatusstringnonullOptional. Sends include_idle_status. When true, includes idle status by joining with stats collection (adds 30-min window analysis).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
noTagstringnonullOptional. Sends no-tag. When true, returns only users without any tag assignments.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolves task and project names instead of returning only IDs.
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. Level of detail in reply (controls which fields are included).
filterClientVersionstringnonullOptional. Sends filter[clientVersion]. "string" -- exact match. Time Doctor also accepts filter[client-version]; this argument sends the camelCase spelling.
filterCreatedstringnonullOptional. Sends filter[created]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterEmailstringnonullOptional. Sends filter[email]. "string" -- starts with.
filterHiredAtstringnonullOptional. Sends filter[hiredAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[hired-at]; this argument sends the camelCase spelling.
filterHostNamestringnonullOptional. Sends filter[hostName]. "string" -- starts with. Time Doctor also accepts filter[host-name]; this argument sends the camelCase spelling.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterInviteAcceptedbooleannonullOptional. Sends filter[inviteAccepted]. boolean value. Time Doctor also accepts filter[invite-accepted]; this argument sends the camelCase spelling.
filterInvitePendingbooleannonullOptional. Sends filter[invitePending]. boolean value. Time Doctor also accepts filter[invite-pending]; this argument sends the camelCase spelling.
filterIpstringnonullOptional. Sends filter[ip]. "string" -- starts with.
filterKeywordsstringnonullOptional. Sends filter[keywords]. match string.
filterLastActiveTrackstringnonullOptional. Sends filter[lastActiveTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-active-track]; this argument sends the camelCase spelling.
filterLastTrackstringnonullOptional. Sends filter[lastTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-track]; this argument sends the camelCase spelling.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterOsstringnonullOptional. Sends filter[os]. "string" -- exact match.
filterPayrollAccessbooleannonullOptional. Sends filter[payrollAccess]. boolean value. Time Doctor also accepts filter[payroll-access]; this argument sends the camelCase spelling.
filterRolestringnonullOptional. Sends filter[role]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScreenshotsstringnonullOptional. Sends filter[screenshots]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShowOnReportsbooleannonullOptional. Sends filter[showOnReports]. boolean value. Time Doctor also accepts filter[show-on-reports]; this argument sends the camelCase spelling.
filterTagstringnonullOptional. Sends filter[tag]. "string" -- exact match.
filterTagCountstringnonullOptional. Sends filter[tag-count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterVideosstringnonullOptional. Sends filter[videos]. "string" -- exact match.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes archived users in results. Archived users are hidden by default.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
noTagstringnonullOptional. Sends no-tag. When true, returns only users without any tag assignments.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
selfstringnonullOptional. When true, returns user data of userId in self reply field.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolves task and project names instead of returning only IDs.
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

[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.

ParamTypeRequiredDefaultDescription
filterCreatedAtstringnonullOptional. Sends filter[createdAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterExpiresAtstringnonullOptional. Sends filter[expiresAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.

[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.

ParamTypeRequiredDefaultDescription
adcEnabledstringnonullOptional. Sends adc_enabled. When true, restricts the result to users with Advanced Data Capture (ADC) enabled. Honors company-level capture2Tracking: returns empty when "off", all users when "on", and per-user enableCapture2 when "user". Omit to return all users (default behavior).
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
deletedstringnonullOptional. When true, operates on disabled (deleted) users. When false, operates on active users.
detailstringnonullOptional. Level of detail in reply (controls which fields are included).
filterClientVersionstringnonullOptional. Sends filter[clientVersion]. "string" -- exact match. Time Doctor also accepts filter[client-version]; this argument sends the camelCase spelling.
filterCreatedstringnonullOptional. Sends filter[created]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterEmailstringnonullOptional. Sends filter[email]. "string" -- starts with.
filterHiredAtstringnonullOptional. Sends filter[hiredAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[hired-at]; this argument sends the camelCase spelling.
filterHostNamestringnonullOptional. Sends filter[hostName]. "string" -- starts with. Time Doctor also accepts filter[host-name]; this argument sends the camelCase spelling.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterInviteAcceptedbooleannonullOptional. Sends filter[inviteAccepted]. boolean value. Time Doctor also accepts filter[invite-accepted]; this argument sends the camelCase spelling.
filterInvitePendingbooleannonullOptional. Sends filter[invitePending]. boolean value. Time Doctor also accepts filter[invite-pending]; this argument sends the camelCase spelling.
filterIpstringnonullOptional. Sends filter[ip]. "string" -- starts with.
filterKeywordsstringnonullOptional. Sends filter[keywords]. match string.
filterLastActiveTrackstringnonullOptional. Sends filter[lastActiveTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-active-track]; this argument sends the camelCase spelling.
filterLastTrackstringnonullOptional. Sends filter[lastTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-track]; this argument sends the camelCase spelling.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterOsstringnonullOptional. Sends filter[os]. "string" -- exact match.
filterPayrollAccessbooleannonullOptional. Sends filter[payrollAccess]. boolean value. Time Doctor also accepts filter[payroll-access]; this argument sends the camelCase spelling.
filterRolestringnonullOptional. Sends filter[role]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScreenshotsstringnonullOptional. Sends filter[screenshots]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShowOnReportsbooleannonullOptional. Sends filter[showOnReports]. boolean value. Time Doctor also accepts filter[show-on-reports]; this argument sends the camelCase spelling.
filterTagstringnonullOptional. Sends filter[tag]. "string" -- exact match.
filterTagCountstringnonullOptional. Sends filter[tag-count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterVideosstringnonullOptional. Sends filter[videos]. "string" -- exact match.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes archived users in results. Archived users are hidden by default.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
managerstringnonullOptional. Unique identifier of manager. When specified, returns only users managed by this manager.
noTagstringnonullOptional. Sends no-tag. When true, returns only users without any tag assignments.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
selfstringnonullOptional. When true, returns user data of userId in self reply field.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Unique identifier of tag. When specified, returns only users assigned to this tag.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolves task and project names instead of returning only IDs.
userstringnonullOptional. Comma-separated list of user IDs to resolve. Reply array indexes match input list indexes (alias: id).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
deletedstringnonullOptional. When true, operates on disabled (deleted) users. When false, operates on active users.
detailstringnonullOptional. Level of detail in reply (controls which fields are included).
filterClientVersionstringnonullOptional. Sends filter[clientVersion]. "string" -- exact match. Time Doctor also accepts filter[client-version]; this argument sends the camelCase spelling.
filterCreatedstringnonullOptional. Sends filter[created]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterEmailstringnonullOptional. Sends filter[email]. "string" -- starts with.
filterHiredAtstringnonullOptional. Sends filter[hiredAt]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[hired-at]; this argument sends the camelCase spelling.
filterHostNamestringnonullOptional. Sends filter[hostName]. "string" -- starts with. Time Doctor also accepts filter[host-name]; this argument sends the camelCase spelling.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterInviteAcceptedbooleannonullOptional. Sends filter[inviteAccepted]. boolean value. Time Doctor also accepts filter[invite-accepted]; this argument sends the camelCase spelling.
filterInvitePendingbooleannonullOptional. Sends filter[invitePending]. boolean value. Time Doctor also accepts filter[invite-pending]; this argument sends the camelCase spelling.
filterIpstringnonullOptional. Sends filter[ip]. "string" -- starts with.
filterKeywordsstringnonullOptional. Sends filter[keywords]. match string.
filterLastActiveTrackstringnonullOptional. Sends filter[lastActiveTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-active-track]; this argument sends the camelCase spelling.
filterLastTrackstringnonullOptional. Sends filter[lastTrack]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to". Time Doctor also accepts filter[last-track]; this argument sends the camelCase spelling.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterOsstringnonullOptional. Sends filter[os]. "string" -- exact match.
filterPayrollAccessbooleannonullOptional. Sends filter[payrollAccess]. boolean value. Time Doctor also accepts filter[payroll-access]; this argument sends the camelCase spelling.
filterRolestringnonullOptional. Sends filter[role]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScreenshotsstringnonullOptional. Sends filter[screenshots]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShowOnReportsbooleannonullOptional. Sends filter[showOnReports]. boolean value. Time Doctor also accepts filter[show-on-reports]; this argument sends the camelCase spelling.
filterTagstringnonullOptional. Sends filter[tag]. "string" -- exact match.
filterTagCountstringnonullOptional. Sends filter[tag-count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterVideosstringnonullOptional. Sends filter[videos]. "string" -- exact match.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes archived users in results. Archived users are hidden by default.
includeIdleStatusstringnonullOptional. Sends include_idle_status. When true, includes idle status by joining with stats collection (adds 30-min window analysis).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
managerstringnonullOptional. Unique identifier of manager. When specified, returns only users managed by this manager.
noTagstringnonullOptional. Sends no-tag. When true, returns only users without any tag assignments.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
selfstringnonullOptional. When true, returns user data of userId in self reply field.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Unique identifier of tag. When specified, returns only users assigned to this tag.
taskProjectNamesstringnonullOptional. Sends task-project-names. When true, resolves task and project names instead of returning only IDs.
userstringnonullOptional. Comma-separated list of user IDs to resolve. Reply array indexes match input list indexes (alias: id).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
tagIdstringyesRequired. Unique identifier of tag.
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, role, onlyProjectIds, employeeId, exists, active, screenshots, videos, workCheckInterval, canEditTime, poorTimeusePopup, allowDeleteScreenshots, tasksMode, trackingMode, interactiveTrackingMode, emailSubCount, showOnReports, emailReports, weeklyEmailReports, jobTitle, blurScreenshots, allowNoBreak, trackInternetConnectivity, stripUrlQuery, allowAdminSID, hideScreencasts, payrollAccess, payrollFeature, workScheduleFeature, trackConnectivity, allowManagerTagCategories, allowManagerProjectsTasks, allowManagerInviteUsers, allowManagerWorkSchedules, allowUsersActivitySummaryReport, allowLeavesForRegularUsers, forceAutostart, firstDayOfWeek, webAndAppTracking, mobileAppTracking, allowMobileAppTracking, capture2Tracking, enableCapture2, adc_enabled, aiConnectionsTracking, enableAiConnections.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on disabled (deleted) users. When false, operates on active users.
userIdstringyesRequired. Unique identifier of user (use "me" or empty string to reference caller).

Breaks

ToolPlanAccessSummary
td_create_breakProWriteCreate a new break time record.
td_delete_breakProDestructiveDESTRUCTIVE: remove a break time record.
td_get_breakFreeRead-onlyRetrieve detailed information about a specific break.
td_list_breaksFreeRead-onlyRetrieve list of break time records for users.
td_update_breakProWriteUpdate break time record 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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, type, active, public, access, scope, breakLimit, poolMode, poolPeriod.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
breakIdstringyesRequired. Unique identifier of the break type.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
breakIdstringyesRequired. Unique identifier of the break type.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
assignedbooleannonullOptional. When true, returns only break types that are assigned to or accessible by the authenticated user.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterBreakLimitstringnonullOptional. Sends filter[breakLimit]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeyphrasestringnonullOptional. Sends filter[keyphrase]. A keyphrase for searching by keywords.
filterKeywordsstringnonullOptional. Sends filter[keywords]. set of keywords to be matched.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterPoolModestringnonullOptional. Sends filter[poolMode]. "string" -- starts with.
filterPoolPeriodstringnonullOptional. Sends filter[poolPeriod]. "string" -- starts with.
filterTypestringnonullOptional. Sends filter[type]. "string" -- starts with.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, type, active, public, access, scope, breakLimit, poolMode, poolPeriod.
breakIdstringyesRequired. Unique identifier of the break type.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

Time edits

ToolPlanAccessSummary
td_bulk_update_time_editsProDestructiveDESTRUCTIVE: update multiple time edit records in a single request.
td_create_time_editProDestructiveDESTRUCTIVE: create a manual time entry or adjustment for a user.
td_list_time_editsFreeRead-onlyRetrieve manual time edits and adjustments for user(s).
td_update_time_editProDestructiveDESTRUCTIVE: update a specific manual time entry by its ID.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: userId, start, taskId, projectId, end, operation, reason, approved.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: userId, start, taskId, projectId, end, operation, reason, approved.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
approvedstringnonullOptional. If specified, the method will filter by approval.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
excludeFieldsstringnonullOptional. Sends exclude-fields. Comma-separated list of field names to exclude from the response. Specified fields will be omitted from the returned data.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
includeAutoApprovedbooleannonullOptional. Sends include-auto-approved. include auto approved edit time records.
includeModesstringnonullOptional. Sends include-modes. Comma-separated list of additional worklog modes to include in results (e.g., unpaidLeave). By default, only standard modes are included.
pageUserstringnonullOptional. Sends page-user. continue listing from the user with specified ID.
resolveNamesbooleannonullOptional. Sends resolve-names. include reviewer name, project name, task name & user name.
sortUserstringnonullOptional. Sends sort-user. sort users by specified field ("_" prefix = descending).
tagstringnonullOptional. comma separated value of tag ids.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: userId, start, taskId, projectId, end, operation, reason, approved.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
idstringyesRequired. ID of the time to edit.

Worklogs and activity

ToolPlanAccessSummary
td_get_app_and_web_usageFreeRead-onlyRetrieve aggregated statistics about application and website usage.
td_get_meeting_logFreeRead-onlyRetrieve meeting activity logs for user(s) within a specified time range.
td_get_worklogFreeRead-onlyRetrieve detailed work activity log for a user within a specified time range.
td_list_disconnect_periodsFreeRead-onlyRetrieve periods when the user was offline or disconnected from tracking.
td_list_meeting_log_pagedFreeRead-onlyFlat, paged meeting records for MCP and other clients that need paging.totalCount.
td_list_worklog_pagedFreeRead-onlyFlat, paged worklog ranges for MCP and other clients that need paging.totalCount.
td_update_worklog_rangesProDestructiveDESTRUCTIVE: modify worklog ranges for a user.

[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.

ParamTypeRequiredDefaultDescription
categorystringnonullOptional. Category to fetch report for.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterCategorystringnonullOptional. Sends filter[category]. "string" -- exact match.
filterScorestringnonullOptional. Sends filter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTimestringnonullOptional. Sends filter[time]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. When set to true, returns detailed activity information including device IDs and user comments.
excludeFieldsstringnonullOptional. Sends exclude-fields. Comma-separated list of field names to exclude from the response. Specified fields will be omitted from the returned data.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes meeting logs for archived users.
includeFutureintegernonullOptional. Sends include-future. When set to 1, includes meeting log entries that extend beyond the current time.
includeModesstringnonullOptional. Sends include-modes. Comma-separated list of additional worklog modes to include in results (e.g., unpaidLeave). By default, only standard modes are included.
includeStatsintegernonullOptional. Sends include-stats. When set to 1, enriches meeting logs with idle-time stats from activity statistics.
limitintegernonullOptional. Maximum number of meeting records to return (default 200, maximum 500). When set (alone or with page), data is a flat array of meeting records plus a paging object. Capped at 250 by StackJack.
mergeMeetingsintegernonullOptional. Sends merge-meetings. When set to 1, merges consecutive meeting segments that belong to the same meeting session.
noCutintegernonullOptional. Sends no-cut. When set to 1, returns full meeting ranges without trimming to the requested time window.
pageintegernonullOptional. Row offset to skip (not a page index). When set (alone or with limit), data is a flat array of meeting records plus a paging object instead of per-user nested arrays. Row OFFSET, not a page index.
rawDataintegernonullOptional. Sends raw-data. When set to 1, returns raw database records instead of formalized meeting log entries.
sortstringnonullOptional. Sort meeting logs within each user array. A leading "_" means descending order. When page or limit is set, sort is applied across the flattened meeting list before slicing.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. When set to true, returns detailed activity information including device IDs and user comments.
excludeFieldsstringnonullOptional. Sends exclude-fields. Comma-separated list of field names to exclude from the response. Specified fields will be omitted from the returned data.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
includeMeetingstringnonullOptional. Sends include-meeting. If specified, the method will include meeting time in the results.
includeModesstringnonullOptional. Sends include-modes. Comma-separated list of additional worklog modes to include in results (e.g., unpaidLeave). By default, only standard modes are included.
taskProjectNamesstringnonullOptional. Sends task-project-names. If specified, the method will resolve the names for tasks and projects.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. When set to true, returns detailed activity information including device IDs and user comments.
excludeFieldsstringnonullOptional. Sends exclude-fields. Comma-separated list of field names to exclude from the response. Specified fields will be omitted from the returned data.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
includeArchivedUsersbooleannonullOptional. Sends include-archived-users. When true, includes meeting logs for archived users.
includeFutureintegernonullOptional. Sends include-future. When set to 1, includes meeting log entries that extend beyond the current time.
includeModesstringnonullOptional. Sends include-modes. Comma-separated list of additional worklog modes to include in results (e.g., unpaidLeave). By default, only standard modes are included.
includeStatsintegernonullOptional. Sends include-stats. When set to 1, enriches meeting logs with idle-time stats from activity statistics.
limitintegernonullOptional. Maximum number of meeting records to return (default 200, maximum 500). When set (alone or with page), data is a flat array of meeting records plus a paging object. Capped at 250 by StackJack.
mergeMeetingsintegernonullOptional. Sends merge-meetings. When set to 1, merges consecutive meeting segments that belong to the same meeting session.
noCutintegernonullOptional. Sends no-cut. When set to 1, returns full meeting ranges without trimming to the requested time window.
pageintegernonullOptional. Row offset to skip (not a page index). When set (alone or with limit), data is a flat array of meeting records plus a paging object instead of per-user nested arrays. Row OFFSET, not a page index.
rawDataintegernonullOptional. Sends raw-data. When set to 1, returns raw database records instead of formalized meeting log entries.
sortstringnonullOptional. Sort meeting logs within each user array. A leading "_" means descending order. When page or limit is set, sort is applied across the flattened meeting list before slicing.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. When set to true, returns detailed activity information including device IDs and user comments.
excludeFieldsstringnonullOptional. Sends exclude-fields. Comma-separated list of field names to exclude from the response. Specified fields will be omitted from the returned data.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
includeMeetingstringnonullOptional. Sends include-meeting. If specified, the method will include meeting time in the results.
includeModesstringnonullOptional. Sends include-modes. Comma-separated list of additional worklog modes to include in results (e.g., unpaidLeave). By default, only standard modes are included.
taskProjectNamesstringnonullOptional. Sends task-project-names. If specified, the method will resolve the names for tasks and projects.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: start, end, taskId, projectId.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user.

Productivity ratings

ToolPlanAccessSummary
td_get_unrated_countFreeRead-onlyGet count of uncategorized applications and websites.
td_list_productivity_ratingsFreeRead-onlyRetrieve list of productivity categories configured in the company.
td_list_user_productivity_ratingsFreeRead-onlyRetrieve productivity categories specific to a user or group.
td_set_productivity_ratingProWriteConfigure productivity classification for an application or website at company level.
td_set_user_productivity_ratingProWriteConfigure user-specific or group-specific productivity classification override.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.
filterEntitystringnonullOptional. Sends filter[entity]. predefined value.
filterNamestringnonullOptional. Sends filter[name]. "string" -- exact match.
filterScorestringnonullOptional. Sends filter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTimestringnonullOptional. Sends filter[time]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
globalUnratedstringnonullOptional. Sends global-unrated. When true, returns only categories that are unrated in both company and global scopes.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterEntitystringnonullOptional. Sends filter[entity]. predefined value.
filterNamestringnonullOptional. Sends filter[name]. "string" -- exact match.
filterScorestringnonullOptional. Sends filter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTimestringnonullOptional. Sends filter[time]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
userIdstringyesRequired. Unique identifier of the user.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: id, entity, name, score, standardActiveSecRatio.
companystringnonullOptional. Scope the call to one company. Omit it for the global scope, or to fall back to the default company id saved on this connection. Call td_list_companies for ids.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: id, entity, name, score.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
userIdstringyesRequired. Unique identifier of the user.

Software cost insights

ToolPlanAccessSummary
td_get_software_cost_by_categoryFreeRead-onlyGet software cost insights aggregated by category.
td_get_software_cost_by_category_v2FreeRead-onlyGet software cost insights by category (single aggregation, from/to first/last day of month, range > 26 days, max 6 calendar months).
td_get_software_cost_category_treeFreeRead-onlyGet category group hierarchy for the company from BigQuery (reporting_hierarchy_groups).
td_get_software_cost_summaryFreeRead-onlyGet summary statistics for software cost insights.
td_get_software_cost_summary_v2FreeRead-onlyGet summary statistics (single aggregation; from/to first or last day of month, range > 26 days, max 6 calendar months).
td_get_software_cost_timesheet_summaryFreeRead-onlyGet software cost insights summary with timesheet breakdown.
td_get_software_cost_timesheet_summary_v2FreeRead-onlyGet software cost insights summary per timesheet range (max 6 calendar months).
td_query_software_cost_by_categoryFreeRead-onlySame as GET category-v2; use POST with JSON body for large filter payloads (merges with query; body wins).
td_query_software_cost_summaryFreeRead-onlySame as GET summary-v2; use POST with JSON body for large filter payloads (merges with query; body wins).
td_query_software_cost_timesheet_summaryFreeRead-onlySame as GET timesheet/summary-v2; use POST with JSON body for large filter payloads (merges with query; body wins).

[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.

ParamTypeRequiredDefaultDescription
categorystringnonullOptional. Comma-separated category IDs to filter by; when omitted, all categories are included (summary-v2/timesheet summary-v2).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
endstringnonullOptional. ISO 8601 timestamp for the end of the reporting period (inclusive).
fromstringnonullOptional. ISO 8601 start of range (inclusive). For summary-v2/category-v2: must be first or last day of month; range > 26 days; max 6 calendar months. ISO 8601 UTC.
paramsstringnonullOptional. Additional query parameters for advanced filtering and aggregation.
startstringnonullOptional. ISO 8601 timestamp for the start of the reporting period (inclusive).
summarystringnonullOptional. Summary aggregation type for grouping statistics (e.g., daily, weekly, monthly).
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
timezonestringnonullOptional. IANA timezone identifier for date calculations (e.g., America/New_York, Europe/London).
tostringnonullOptional. ISO 8601 end of range (inclusive). For summary-v2/category-v2: must be first or last day of month; max 6 calendar months. ISO 8601 UTC.
useLocalTimeintegernonullOptional. Sends use-local-time. When 1, use local time for calculations; when 0, use UTC time.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.
userTzintegernonullOptional. Sends user-tz. User timezone mode: 0=no timezone adjustment, 1=external timezone, 2=internal timezone.

[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.

ParamTypeRequiredDefaultDescription
categorystringyesRequired. Comma-separated category IDs (required).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringyesRequired. ISO 8601 start of range (inclusive). Must be first or last day of month; range > 26 days; max 6 calendar months.
limitintegernonullOptional. Page size. Capped at 250 by StackJack.
pageintegernonullOptional. Number of items to skip (pagination offset). Default 0. Row OFFSET, not a page index.
sortstringnonullOptional. Sort field (prefix with - for descending), e.g. toolStatus, -totalSec.
statusRangestringnonullOptional. Sends status-range. Comma-separated low,high thresholds for tool status (e.g. 0.3,0.8).
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
tostringyesRequired. ISO 8601 end of range (inclusive). Must be first or last day of month; max 6 calendar months.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringnonullOptional. ISO 8601 start of range (inclusive). When provided with to, excludes categories with 26 days; max 6 calendar months. ISO 8601 UTC.
limitintegernonullOptional. Maximum number of groups per page (capped at 200). Capped at 250 by StackJack.
pageintegernonullOptional. Number of items to skip (pagination offset). Default 0. Row OFFSET, not a page index.
searchstringnonullOptional. Filter by parent tool name / group_parent (partial match); when provided, only groups whose parent name matches are returned, with all children in each group.
sortstringnonullOptional. Sort parent groups by total child usage when set to time (ascending) or -time / _time (descending). Requires from and to. When omitted, groups are sorted alphabetically by group_parent.
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
tostringnonullOptional. ISO 8601 end of range (inclusive). When provided with from, excludes categories with <1 min usage in that range. Must be first or last day of month; max 6 calendar months. ISO 8601 UTC.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.

[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.

ParamTypeRequiredDefaultDescription
categorystringnonullOptional. Comma-separated category IDs to filter by; when omitted, all categories are included (summary-v2/timesheet summary-v2).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
endstringnonullOptional. ISO 8601 timestamp for the end of the reporting period (inclusive).
fromstringnonullOptional. ISO 8601 start of range (inclusive). For summary-v2/category-v2: must be first or last day of month; range > 26 days; max 6 calendar months. ISO 8601 UTC.
paramsstringnonullOptional. Additional query parameters for advanced filtering and aggregation.
startstringnonullOptional. ISO 8601 timestamp for the start of the reporting period (inclusive).
summarystringnonullOptional. Summary aggregation type for grouping statistics (e.g., daily, weekly, monthly).
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
timezonestringnonullOptional. IANA timezone identifier for date calculations (e.g., America/New_York, Europe/London).
tostringnonullOptional. ISO 8601 end of range (inclusive). For summary-v2/category-v2: must be first or last day of month; max 6 calendar months. ISO 8601 UTC.
useLocalTimeintegernonullOptional. Sends use-local-time. When 1, use local time for calculations; when 0, use UTC time.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.
userTzintegernonullOptional. Sends user-tz. User timezone mode: 0=no timezone adjustment, 1=external timezone, 2=internal timezone.

[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.

ParamTypeRequiredDefaultDescription
categorystringnonullOptional. Comma-separated category IDs to filter by; when omitted, all categories are included (summary-v2/timesheet summary-v2).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringyesRequired. ISO 8601 start of range (inclusive). Must be first or last day of month; range > 26 days; max 6 calendar months.
statusRangestringnonullOptional. Sends status-range. Comma-separated low,high thresholds for tool status (e.g. 0.3,0.8).
summarystringnonullOptional. Summary aggregation type for grouping statistics (e.g., daily, weekly, monthly).
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
timezonestringnonullOptional. IANA timezone identifier for date calculations (e.g., America/New_York, Europe/London).
tostringyesRequired. ISO 8601 end of range (inclusive). Must be first or last day of month; max 6 calendar months.
useLocalTimeintegernonullOptional. Sends use-local-time. When 1, use local time for calculations; when 0, use UTC time.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.

[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.

ParamTypeRequiredDefaultDescription
categorystringnonullOptional. Comma-separated category IDs to filter by; when omitted, all categories are included (summary-v2/timesheet summary-v2).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
endstringnonullOptional. ISO 8601 timestamp for the end of the reporting period (inclusive).
fromstringnonullOptional. ISO 8601 start of range (inclusive). For summary-v2/category-v2: must be first or last day of month; range > 26 days; max 6 calendar months. ISO 8601 UTC.
paramsstringnonullOptional. Additional query parameters for advanced filtering and aggregation.
startstringnonullOptional. ISO 8601 timestamp for the start of the reporting period (inclusive).
summarystringnonullOptional. Summary aggregation type for grouping statistics (e.g., daily, weekly, monthly).
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
timezonestringnonullOptional. IANA timezone identifier for date calculations (e.g., America/New_York, Europe/London).
tostringnonullOptional. ISO 8601 end of range (inclusive). For summary-v2/category-v2: must be first or last day of month; max 6 calendar months. ISO 8601 UTC.
useLocalTimeintegernonullOptional. Sends use-local-time. When 1, use local time for calculations; when 0, use UTC time.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.
userTzintegernonullOptional. Sends user-tz. User timezone mode: 0=no timezone adjustment, 1=external timezone, 2=internal timezone.

[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.

ParamTypeRequiredDefaultDescription
categorystringnonullOptional. Comma-separated category IDs to filter by; when omitted, all categories are included (summary-v2/timesheet summary-v2).
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
endstringnonullOptional. ISO 8601 timestamp for the end of the reporting period (inclusive).
fromstringnonullOptional. ISO 8601 start of range (inclusive). For summary-v2/category-v2: must be first or last day of month; range > 26 days; max 6 calendar months. ISO 8601 UTC.
paramsstringnonullOptional. Additional query parameters for advanced filtering and aggregation.
startstringnonullOptional. ISO 8601 timestamp for the start of the reporting period (inclusive).
summarystringnonullOptional. Summary aggregation type for grouping statistics (e.g., daily, weekly, monthly).
tagstringnonullOptional. Filter by single tag ID or comma-separated list of tag IDs.
timezonestringnonullOptional. IANA timezone identifier for date calculations (e.g., America/New_York, Europe/London).
tostringnonullOptional. ISO 8601 end of range (inclusive). For summary-v2/category-v2: must be first or last day of month; max 6 calendar months. ISO 8601 UTC.
useLocalTimeintegernonullOptional. Sends use-local-time. When 1, use local time for calculations; when 0, use UTC time.
userstringnonullOptional. Filter by single user ID or comma-separated list of user IDs.
userTzintegernonullOptional. Sends user-tz. User timezone mode: 0=no timezone adjustment, 1=external timezone, 2=internal timezone.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: from, to, category, user, tag, status-range, page, limit, sort.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: from, to, user, tag, summary, category, timezone, use-local-time, status-range.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. 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.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

Statistics

ToolPlanAccessSummary
td_get_stats_categoryFreeRead-onlyGet category stats v1.1. GET /api/1.1/stats/category.
td_get_stats_outliersFreeRead-onlyGet outliers stats v1.1. GET /api/1.1/stats/outliers.
td_get_stats_shiftFreeRead-onlyGet shift stats v1.1. GET /api/1.1/stats/shift.
td_get_stats_summaryFreeRead-onlyGet summary stats v1.1. GET /api/1.1/stats/summary.
td_get_stats_totalFreeRead-onlyGet total stats v1.1. GET /api/1.1/stats/total.
td_get_stats_work_lifeFreeRead-onlyGet work-life stats v1.1. GET /api/1.1/stats/work-life.
td_get_timesheet_categoryFreeRead-onlyGet category stats/timesheet v1.1. GET /api/1.1/stats/timesheet/category.
td_get_timesheet_outliersFreeRead-onlyGet outliers stats/timesheet v1.1. GET /api/1.1/stats/timesheet/outliers.
td_get_timesheet_shiftFreeRead-onlyGet shift stats/timesheet v1.1. GET /api/1.1/stats/timesheet/shift.
td_get_timesheet_summaryFreeRead-onlyGet summary stats/timesheet v1.1. GET /api/1.1/stats/timesheet/summary.
td_get_timesheet_totalFreeRead-onlyGet total stats/timesheet v1.1. GET /api/1.1/stats/timesheet/total.
td_get_timesheet_work_lifeFreeRead-onlyGet work-life stats/timesheet v1.1. GET /api/1.1/stats/timesheet/work-life.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterActiveBiasstringnonullOptional. Sends filter[activeBias]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveBiasRatiostringnonullOptional. Sends filter[activeBiasRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecstringnonullOptional. Sends filter[activeSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecRatiostringnonullOptional. Sends filter[activeSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksstringnonullOptional. Sends filter[clicks]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatObjstringnonullOptional. Sends filter[comCatObj]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsstringnonullOptional. Sends filter[idleMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsRatiostringnonullOptional. Sends filter[idleMinsRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecstringnonullOptional. Sends filter[idleSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecRatiostringnonullOptional. Sends filter[idleSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysstringnonullOptional. Sends filter[keys]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingTotalstringnonullOptional. Sends filter[meetingTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesstringnonullOptional. Sends filter[moves]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecstringnonullOptional. Sends filter[standardActiveSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecRatiostringnonullOptional. Sends filter[standardActiveSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalMinsstringnonullOptional. Sends filter[totalMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecstringnonullOptional. Sends filter[totalSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterComCatstringnonullOptional. Sends prefilter[comCat]. "string" -- exact match.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEntitystringnonullOptional. Sends prefilter[entity]. "string" -- exact match.
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterNamestringnonullOptional. Sends prefilter[name]. unknown API-defined value.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterScorestringnonullOptional. Sends prefilter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTagIdstringnonullOptional. Sends prefilter[tagId]. "string" -- exact match.
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserCatstringnonullOptional. Sends prefilter[userCat]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMinHoursstringnonullOptional. Sends filter[minHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftObjstringnonullOptional. Sends filter[shiftObj]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterShiftEndstringnonullOptional. Sends prefilter[shiftEnd]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterShiftIdstringnonullOptional. Sends prefilter[shiftId]. "string" -- exact match.
prefilterShiftStartstringnonullOptional. Sends prefilter[shiftStart]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterActiveBiasstringnonullOptional. Sends filter[activeBias]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveBiasRatiostringnonullOptional. Sends filter[activeBiasRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecstringnonullOptional. Sends filter[activeSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecRatiostringnonullOptional. Sends filter[activeSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgIdleTimePerMeetingstringnonullOptional. Sends filter[avgIdleTimePerMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgMeetingDurationstringnonullOptional. Sends filter[avgMeetingDuration]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksstringnonullOptional. Sends filter[clicks]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksRatiostringnonullOptional. Sends filter[clicksRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatstringnonullOptional. Sends filter[comCat]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatObjstringnonullOptional. Sends filter[comCatObj]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatRatiostringnonullOptional. Sends filter[comCatRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerstringnonullOptional. Sends filter[computer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerRatiostringnonullOptional. Sends filter[computerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsstringnonullOptional. Sends filter[idleMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsDuringMeetingRatiostringnonullOptional. Sends filter[idleMinsDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsMeetingstringnonullOptional. Sends filter[idleMinsMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsOutsideMeetingRatiostringnonullOptional. Sends filter[idleMinsOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsRatiostringnonullOptional. Sends filter[idleMinsRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingMinsstringnonullOptional. Sends filter[idleOutsideMeetingMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingSecstringnonullOptional. Sends filter[idleOutsideMeetingSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecstringnonullOptional. Sends filter[idleSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecDuringMeetingRatiostringnonullOptional. Sends filter[idleSecDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingstringnonullOptional. Sends filter[idleSecMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingRatiostringnonullOptional. Sends filter[idleSecMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecOutsideMeetingRatiostringnonullOptional. Sends filter[idleSecOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecRatiostringnonullOptional. Sends filter[idleSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysstringnonullOptional. Sends filter[keys]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysRatiostringnonullOptional. Sends filter[keysRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualstringnonullOptional. Sends filter[manual]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualRatiostringnonullOptional. Sends filter[manualRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingstringnonullOptional. Sends filter[meeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingCountstringnonullOptional. Sends filter[meetingCount]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingRatiostringnonullOptional. Sends filter[meetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingTotalstringnonullOptional. Sends filter[meetingTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManstringnonullOptional. Sends filter[mobMan]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManRatiostringnonullOptional. Sends filter[mobManRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobilestringnonullOptional. Sends filter[mobile]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobileRatiostringnonullOptional. Sends filter[mobileRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterModeTotalstringnonullOptional. Sends filter[modeTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesstringnonullOptional. Sends filter[moves]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesRatiostringnonullOptional. Sends filter[movesRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralstringnonullOptional. Sends filter[neutral]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisstringnonullOptional. Sends filter[neutralHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisRatiostringnonullOptional. Sends filter[neutralHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralRatiostringnonullOptional. Sends filter[neutralRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerstringnonullOptional. Sends filter[offcomputer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerRatiostringnonullOptional. Sends filter[offcomputerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftstringnonullOptional. Sends filter[outShift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftRatiostringnonullOptional. Sends filter[outShiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakstringnonullOptional. Sends filter[paidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakRatiostringnonullOptional. Sends filter[paidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeavestringnonullOptional. Sends filter[paidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeaveRatiostringnonullOptional. Sends filter[paidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdstringnonullOptional. Sends filter[prod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisstringnonullOptional. Sends filter[prodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisRatiostringnonullOptional. Sends filter[prodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdRatiostringnonullOptional. Sends filter[prodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectstringnonullOptional. Sends filter[project]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectRatiostringnonullOptional. Sends filter[projectRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalstringnonullOptional. Sends filter[scoreTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalRatiostringnonullOptional. Sends filter[scoreTotalRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftstringnonullOptional. Sends filter[shift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftRatiostringnonullOptional. Sends filter[shiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecstringnonullOptional. Sends filter[standardActiveSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecRatiostringnonullOptional. Sends filter[standardActiveSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTalkTimestringnonullOptional. Sends filter[talkTime]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskstringnonullOptional. Sends filter[task]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskRatiostringnonullOptional. Sends filter[taskRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalMinsstringnonullOptional. Sends filter[totalMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecstringnonullOptional. Sends filter[totalSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecRatiostringnonullOptional. Sends filter[totalSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakstringnonullOptional. Sends filter[unpaidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakRatiostringnonullOptional. Sends filter[unpaidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeavestringnonullOptional. Sends filter[unpaidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeaveRatiostringnonullOptional. Sends filter[unpaidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodstringnonullOptional. Sends filter[unprod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisstringnonullOptional. Sends filter[unprodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisRatiostringnonullOptional. Sends filter[unprodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodRatiostringnonullOptional. Sends filter[unprodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedstringnonullOptional. Sends filter[unrated]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisstringnonullOptional. Sends filter[unratedHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisRatiostringnonullOptional. Sends filter[unratedHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedRatiostringnonullOptional. Sends filter[unratedRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangestringnonullOptional. Sends filter[workRange]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangeRatiostringnonullOptional. Sends filter[workRangeRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEntitystringnonullOptional. Sends prefilter[entity]. "string" -- exact match.
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterNamestringnonullOptional. Sends prefilter[name]. unknown API-defined value.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterScorestringnonullOptional. Sends prefilter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTagIdstringnonullOptional. Sends prefilter[tagId]. "string" -- exact match.
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserCatstringnonullOptional. Sends prefilter[userCat]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterActiveBiasstringnonullOptional. Sends filter[activeBias]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveBiasRatiostringnonullOptional. Sends filter[activeBiasRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecstringnonullOptional. Sends filter[activeSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecRatiostringnonullOptional. Sends filter[activeSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgIdleTimePerMeetingstringnonullOptional. Sends filter[avgIdleTimePerMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgMeetingDurationstringnonullOptional. Sends filter[avgMeetingDuration]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksstringnonullOptional. Sends filter[clicks]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksRatiostringnonullOptional. Sends filter[clicksRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatstringnonullOptional. Sends filter[comCat]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatRatiostringnonullOptional. Sends filter[comCatRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerstringnonullOptional. Sends filter[computer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerRatiostringnonullOptional. Sends filter[computerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsstringnonullOptional. Sends filter[idleMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsDuringMeetingRatiostringnonullOptional. Sends filter[idleMinsDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsMeetingstringnonullOptional. Sends filter[idleMinsMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsOutsideMeetingRatiostringnonullOptional. Sends filter[idleMinsOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsRatiostringnonullOptional. Sends filter[idleMinsRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingMinsstringnonullOptional. Sends filter[idleOutsideMeetingMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingSecstringnonullOptional. Sends filter[idleOutsideMeetingSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecstringnonullOptional. Sends filter[idleSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecDuringMeetingRatiostringnonullOptional. Sends filter[idleSecDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingstringnonullOptional. Sends filter[idleSecMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingRatiostringnonullOptional. Sends filter[idleSecMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecOutsideMeetingRatiostringnonullOptional. Sends filter[idleSecOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecRatiostringnonullOptional. Sends filter[idleSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysstringnonullOptional. Sends filter[keys]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysRatiostringnonullOptional. Sends filter[keysRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualstringnonullOptional. Sends filter[manual]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualRatiostringnonullOptional. Sends filter[manualRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingstringnonullOptional. Sends filter[meeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingCountstringnonullOptional. Sends filter[meetingCount]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingRatiostringnonullOptional. Sends filter[meetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManstringnonullOptional. Sends filter[mobMan]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManRatiostringnonullOptional. Sends filter[mobManRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobilestringnonullOptional. Sends filter[mobile]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobileRatiostringnonullOptional. Sends filter[mobileRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterModeTotalstringnonullOptional. Sends filter[modeTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesstringnonullOptional. Sends filter[moves]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesRatiostringnonullOptional. Sends filter[movesRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralstringnonullOptional. Sends filter[neutral]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisstringnonullOptional. Sends filter[neutralHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisRatiostringnonullOptional. Sends filter[neutralHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralRatiostringnonullOptional. Sends filter[neutralRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerstringnonullOptional. Sends filter[offcomputer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerRatiostringnonullOptional. Sends filter[offcomputerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftstringnonullOptional. Sends filter[outShift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftRatiostringnonullOptional. Sends filter[outShiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakstringnonullOptional. Sends filter[paidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakRatiostringnonullOptional. Sends filter[paidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeavestringnonullOptional. Sends filter[paidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeaveRatiostringnonullOptional. Sends filter[paidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdstringnonullOptional. Sends filter[prod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisstringnonullOptional. Sends filter[prodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisRatiostringnonullOptional. Sends filter[prodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdRatiostringnonullOptional. Sends filter[prodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectstringnonullOptional. Sends filter[project]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectRatiostringnonullOptional. Sends filter[projectRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalstringnonullOptional. Sends filter[scoreTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalRatiostringnonullOptional. Sends filter[scoreTotalRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftstringnonullOptional. Sends filter[shift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftRatiostringnonullOptional. Sends filter[shiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecstringnonullOptional. Sends filter[standardActiveSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecRatiostringnonullOptional. Sends filter[standardActiveSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTalkTimestringnonullOptional. Sends filter[talkTime]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskstringnonullOptional. Sends filter[task]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskRatiostringnonullOptional. Sends filter[taskRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalMinsstringnonullOptional. Sends filter[totalMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecstringnonullOptional. Sends filter[totalSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecRatiostringnonullOptional. Sends filter[totalSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakstringnonullOptional. Sends filter[unpaidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakRatiostringnonullOptional. Sends filter[unpaidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeavestringnonullOptional. Sends filter[unpaidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeaveRatiostringnonullOptional. Sends filter[unpaidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodstringnonullOptional. Sends filter[unprod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisstringnonullOptional. Sends filter[unprodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisRatiostringnonullOptional. Sends filter[unprodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodRatiostringnonullOptional. Sends filter[unprodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedstringnonullOptional. Sends filter[unrated]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisstringnonullOptional. Sends filter[unratedHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisRatiostringnonullOptional. Sends filter[unratedHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedRatiostringnonullOptional. Sends filter[unratedRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangestringnonullOptional. Sends filter[workRange]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangeRatiostringnonullOptional. Sends filter[workRangeRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDailyIssuesstringnonullOptional. Sends filter[dailyIssues]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterLateHoursstringnonullOptional. Sends filter[lateHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutOfShiftWorkstringnonullOptional. Sends filter[outOfShiftWork]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftstringnonullOptional. Sends filter[outShift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTooManyHoursstringnonullOptional. Sends filter[tooManyHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalHoursstringnonullOptional. Sends filter[totalHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalIssuesstringnonullOptional. Sends filter[totalIssues]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWeekendWorkstringnonullOptional. Sends filter[weekendWork]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterDaystringnonullOptional. Sends prefilter[day]. "string" -- exact match.
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterLastHourstringnonullOptional. Sends prefilter[lastHour]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterActiveBiasstringnonullOptional. Sends filter[activeBias]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveBiasRatiostringnonullOptional. Sends filter[activeBiasRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecstringnonullOptional. Sends filter[activeSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecRatiostringnonullOptional. Sends filter[activeSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksstringnonullOptional. Sends filter[clicks]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatObjstringnonullOptional. Sends filter[comCatObj]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsstringnonullOptional. Sends filter[idleMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsRatiostringnonullOptional. Sends filter[idleMinsRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecstringnonullOptional. Sends filter[idleSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecRatiostringnonullOptional. Sends filter[idleSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysstringnonullOptional. Sends filter[keys]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingTotalstringnonullOptional. Sends filter[meetingTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesstringnonullOptional. Sends filter[moves]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecstringnonullOptional. Sends filter[standardActiveSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecRatiostringnonullOptional. Sends filter[standardActiveSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalMinsstringnonullOptional. Sends filter[totalMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecstringnonullOptional. Sends filter[totalSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterComCatstringnonullOptional. Sends prefilter[comCat]. "string" -- exact match.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEntitystringnonullOptional. Sends prefilter[entity]. "string" -- exact match.
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterNamestringnonullOptional. Sends prefilter[name]. unknown API-defined value.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterScorestringnonullOptional. Sends prefilter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTagIdstringnonullOptional. Sends prefilter[tagId]. "string" -- exact match.
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserCatstringnonullOptional. Sends prefilter[userCat]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMinHoursstringnonullOptional. Sends filter[minHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftObjstringnonullOptional. Sends filter[shiftObj]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterShiftEndstringnonullOptional. Sends prefilter[shiftEnd]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterShiftIdstringnonullOptional. Sends prefilter[shiftId]. "string" -- exact match.
prefilterShiftStartstringnonullOptional. Sends prefilter[shiftStart]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterActiveBiasstringnonullOptional. Sends filter[activeBias]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveBiasRatiostringnonullOptional. Sends filter[activeBiasRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecstringnonullOptional. Sends filter[activeSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecRatiostringnonullOptional. Sends filter[activeSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgIdleTimePerMeetingstringnonullOptional. Sends filter[avgIdleTimePerMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgMeetingDurationstringnonullOptional. Sends filter[avgMeetingDuration]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksstringnonullOptional. Sends filter[clicks]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksRatiostringnonullOptional. Sends filter[clicksRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatstringnonullOptional. Sends filter[comCat]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatObjstringnonullOptional. Sends filter[comCatObj]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatRatiostringnonullOptional. Sends filter[comCatRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerstringnonullOptional. Sends filter[computer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerRatiostringnonullOptional. Sends filter[computerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsstringnonullOptional. Sends filter[idleMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsDuringMeetingRatiostringnonullOptional. Sends filter[idleMinsDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsMeetingstringnonullOptional. Sends filter[idleMinsMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsOutsideMeetingRatiostringnonullOptional. Sends filter[idleMinsOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsRatiostringnonullOptional. Sends filter[idleMinsRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingMinsstringnonullOptional. Sends filter[idleOutsideMeetingMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingSecstringnonullOptional. Sends filter[idleOutsideMeetingSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecstringnonullOptional. Sends filter[idleSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecDuringMeetingRatiostringnonullOptional. Sends filter[idleSecDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingstringnonullOptional. Sends filter[idleSecMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingRatiostringnonullOptional. Sends filter[idleSecMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecOutsideMeetingRatiostringnonullOptional. Sends filter[idleSecOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecRatiostringnonullOptional. Sends filter[idleSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysstringnonullOptional. Sends filter[keys]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysRatiostringnonullOptional. Sends filter[keysRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualstringnonullOptional. Sends filter[manual]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualRatiostringnonullOptional. Sends filter[manualRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingstringnonullOptional. Sends filter[meeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingCountstringnonullOptional. Sends filter[meetingCount]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingRatiostringnonullOptional. Sends filter[meetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingTotalstringnonullOptional. Sends filter[meetingTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManstringnonullOptional. Sends filter[mobMan]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManRatiostringnonullOptional. Sends filter[mobManRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobilestringnonullOptional. Sends filter[mobile]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobileRatiostringnonullOptional. Sends filter[mobileRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterModeTotalstringnonullOptional. Sends filter[modeTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesstringnonullOptional. Sends filter[moves]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesRatiostringnonullOptional. Sends filter[movesRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralstringnonullOptional. Sends filter[neutral]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisstringnonullOptional. Sends filter[neutralHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisRatiostringnonullOptional. Sends filter[neutralHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralRatiostringnonullOptional. Sends filter[neutralRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerstringnonullOptional. Sends filter[offcomputer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerRatiostringnonullOptional. Sends filter[offcomputerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftstringnonullOptional. Sends filter[outShift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftRatiostringnonullOptional. Sends filter[outShiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakstringnonullOptional. Sends filter[paidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakRatiostringnonullOptional. Sends filter[paidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeavestringnonullOptional. Sends filter[paidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeaveRatiostringnonullOptional. Sends filter[paidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdstringnonullOptional. Sends filter[prod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisstringnonullOptional. Sends filter[prodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisRatiostringnonullOptional. Sends filter[prodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdRatiostringnonullOptional. Sends filter[prodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectstringnonullOptional. Sends filter[project]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectRatiostringnonullOptional. Sends filter[projectRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalstringnonullOptional. Sends filter[scoreTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalRatiostringnonullOptional. Sends filter[scoreTotalRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftstringnonullOptional. Sends filter[shift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftRatiostringnonullOptional. Sends filter[shiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecstringnonullOptional. Sends filter[standardActiveSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecRatiostringnonullOptional. Sends filter[standardActiveSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTalkTimestringnonullOptional. Sends filter[talkTime]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskstringnonullOptional. Sends filter[task]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskRatiostringnonullOptional. Sends filter[taskRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalMinsstringnonullOptional. Sends filter[totalMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecstringnonullOptional. Sends filter[totalSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecRatiostringnonullOptional. Sends filter[totalSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakstringnonullOptional. Sends filter[unpaidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakRatiostringnonullOptional. Sends filter[unpaidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeavestringnonullOptional. Sends filter[unpaidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeaveRatiostringnonullOptional. Sends filter[unpaidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodstringnonullOptional. Sends filter[unprod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisstringnonullOptional. Sends filter[unprodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisRatiostringnonullOptional. Sends filter[unprodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodRatiostringnonullOptional. Sends filter[unprodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedstringnonullOptional. Sends filter[unrated]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisstringnonullOptional. Sends filter[unratedHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisRatiostringnonullOptional. Sends filter[unratedHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedRatiostringnonullOptional. Sends filter[unratedRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangestringnonullOptional. Sends filter[workRange]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangeRatiostringnonullOptional. Sends filter[workRangeRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEntitystringnonullOptional. Sends prefilter[entity]. "string" -- exact match.
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterNamestringnonullOptional. Sends prefilter[name]. unknown API-defined value.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterScorestringnonullOptional. Sends prefilter[score]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTagIdstringnonullOptional. Sends prefilter[tagId]. "string" -- exact match.
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserCatstringnonullOptional. Sends prefilter[userCat]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterActiveBiasstringnonullOptional. Sends filter[activeBias]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveBiasRatiostringnonullOptional. Sends filter[activeBiasRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecstringnonullOptional. Sends filter[activeSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterActiveSecRatiostringnonullOptional. Sends filter[activeSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgIdleTimePerMeetingstringnonullOptional. Sends filter[avgIdleTimePerMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterAvgMeetingDurationstringnonullOptional. Sends filter[avgMeetingDuration]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksstringnonullOptional. Sends filter[clicks]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterClicksRatiostringnonullOptional. Sends filter[clicksRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatstringnonullOptional. Sends filter[comCat]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComCatRatiostringnonullOptional. Sends filter[comCatRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerstringnonullOptional. Sends filter[computer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterComputerRatiostringnonullOptional. Sends filter[computerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsstringnonullOptional. Sends filter[idleMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsDuringMeetingRatiostringnonullOptional. Sends filter[idleMinsDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsMeetingstringnonullOptional. Sends filter[idleMinsMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsOutsideMeetingRatiostringnonullOptional. Sends filter[idleMinsOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleMinsRatiostringnonullOptional. Sends filter[idleMinsRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingMinsstringnonullOptional. Sends filter[idleOutsideMeetingMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleOutsideMeetingSecstringnonullOptional. Sends filter[idleOutsideMeetingSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecstringnonullOptional. Sends filter[idleSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecDuringMeetingRatiostringnonullOptional. Sends filter[idleSecDuringMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingstringnonullOptional. Sends filter[idleSecMeeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecMeetingRatiostringnonullOptional. Sends filter[idleSecMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecOutsideMeetingRatiostringnonullOptional. Sends filter[idleSecOutsideMeetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIdleSecRatiostringnonullOptional. Sends filter[idleSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysstringnonullOptional. Sends filter[keys]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterKeysRatiostringnonullOptional. Sends filter[keysRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualstringnonullOptional. Sends filter[manual]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterManualRatiostringnonullOptional. Sends filter[manualRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingstringnonullOptional. Sends filter[meeting]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingCountstringnonullOptional. Sends filter[meetingCount]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMeetingRatiostringnonullOptional. Sends filter[meetingRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManstringnonullOptional. Sends filter[mobMan]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobManRatiostringnonullOptional. Sends filter[mobManRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobilestringnonullOptional. Sends filter[mobile]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMobileRatiostringnonullOptional. Sends filter[mobileRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterModeTotalstringnonullOptional. Sends filter[modeTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesstringnonullOptional. Sends filter[moves]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterMovesRatiostringnonullOptional. Sends filter[movesRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralstringnonullOptional. Sends filter[neutral]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisstringnonullOptional. Sends filter[neutralHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralHisRatiostringnonullOptional. Sends filter[neutralHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterNeutralRatiostringnonullOptional. Sends filter[neutralRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerstringnonullOptional. Sends filter[offcomputer]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOffcomputerRatiostringnonullOptional. Sends filter[offcomputerRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftstringnonullOptional. Sends filter[outShift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftRatiostringnonullOptional. Sends filter[outShiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakstringnonullOptional. Sends filter[paidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidBreakRatiostringnonullOptional. Sends filter[paidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeavestringnonullOptional. Sends filter[paidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterPaidLeaveRatiostringnonullOptional. Sends filter[paidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdstringnonullOptional. Sends filter[prod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisstringnonullOptional. Sends filter[prodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdHisRatiostringnonullOptional. Sends filter[prodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProdRatiostringnonullOptional. Sends filter[prodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectstringnonullOptional. Sends filter[project]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterProjectRatiostringnonullOptional. Sends filter[projectRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalstringnonullOptional. Sends filter[scoreTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterScoreTotalRatiostringnonullOptional. Sends filter[scoreTotalRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftstringnonullOptional. Sends filter[shift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterShiftRatiostringnonullOptional. Sends filter[shiftRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecstringnonullOptional. Sends filter[standardActiveSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterStandardActiveSecRatiostringnonullOptional. Sends filter[standardActiveSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTalkTimestringnonullOptional. Sends filter[talkTime]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskstringnonullOptional. Sends filter[task]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTaskRatiostringnonullOptional. Sends filter[taskRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalMinsstringnonullOptional. Sends filter[totalMins]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecstringnonullOptional. Sends filter[totalSec]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalSecRatiostringnonullOptional. Sends filter[totalSecRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakstringnonullOptional. Sends filter[unpaidBreak]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidBreakRatiostringnonullOptional. Sends filter[unpaidBreakRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeavestringnonullOptional. Sends filter[unpaidLeave]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnpaidLeaveRatiostringnonullOptional. Sends filter[unpaidLeaveRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodstringnonullOptional. Sends filter[unprod]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisstringnonullOptional. Sends filter[unprodHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodHisRatiostringnonullOptional. Sends filter[unprodHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnprodRatiostringnonullOptional. Sends filter[unprodRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedstringnonullOptional. Sends filter[unrated]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisstringnonullOptional. Sends filter[unratedHis]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedHisRatiostringnonullOptional. Sends filter[unratedHisRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterUnratedRatiostringnonullOptional. Sends filter[unratedRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangestringnonullOptional. Sends filter[workRange]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWorkRangeRatiostringnonullOptional. Sends filter[workRangeRatio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

[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.

ParamTypeRequiredDefaultDescription
breaksstringnonullOptional. Specifies which types of breaks to include in results: all for all breaks, paid for paid breaks only, or unpaid for unpaid breaks only. Cannot be combined with the task parameter.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
dateLimitstringnonullOptional. Sends date-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
datePagestringnonullOptional. Sends date-page. When specified, defines how many resulting first items to skip.
fieldsstringnonullOptional. Comma-separated list of field names to include in the response. When specified, only the requested fields will be returned.
filterCountstringnonullOptional. Sends filter[count]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDailyIssuesstringnonullOptional. Sends filter[dailyIssues]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterLateHoursstringnonullOptional. Sends filter[lateHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutOfShiftWorkstringnonullOptional. Sends filter[outOfShiftWork]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterOutShiftstringnonullOptional. Sends filter[outShift]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant0stringnonullOptional. Sends filter[quant0]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant1stringnonullOptional. Sends filter[quant1]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterQuant2stringnonullOptional. Sends filter[quant2]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatiostringnonullOptional. Sends filter[ratio]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterRatioTotalstringnonullOptional. Sends filter[ratioTotal]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTooManyHoursstringnonullOptional. Sends filter[tooManyHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalstringnonullOptional. Sends filter[total]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalHoursstringnonullOptional. Sends filter[totalHours]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterTotalIssuesstringnonullOptional. Sends filter[totalIssues]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterWeekendWorkstringnonullOptional. Sends filter[weekendWork]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
fromstringnonullOptional. ISO 8601 date-time for the start of the query range (inclusive). Defaults to 30 minutes before the to parameter. ISO 8601 UTC.
groupBystringnonullOptional. Sends group-by. Field name to group results by. Results will be aggregated according to the specified field if grouping is supported for that field.
intervalintegernonullOptional. Number of period units. 1 by default.
levelstringnonullOptional. Level of information ("user" by default).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 1 to include paging object (current page information) in response. 0 (do not include) by default.
periodstringnonullOptional. Period unit of ranges subdivision. days by default.
prefilterCurrentTagIdstringnonullOptional. Sends prefilter[currentTagId]. "string" -- exact match.
prefilterCurrentTagNamestringnonullOptional. Sends prefilter[currentTagName]. "string" -- exact match.
prefilterCurrentTagNameNormstringnonullOptional. Sends prefilter[currentTagNameNorm]. "string" -- exact match.
prefilterCurrentTagObjstringnonullOptional. Sends prefilter[currentTagObj]. "string" -- exact match.
prefilterDatestringnonullOptional. Sends prefilter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterDaystringnonullOptional. Sends prefilter[day]. "string" -- exact match.
prefilterEndstringnonullOptional. Sends prefilter[end]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterItemstringnonullOptional. Sends prefilter[item]. "string" -- exact match.
prefilterLastHourstringnonullOptional. Sends prefilter[lastHour]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterOffsetsstringnonullOptional. Sends prefilter[offsets]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterProjectIdstringnonullOptional. Sends prefilter[projectId]. "string" -- exact match.
prefilterProjectIntegrationNamestringnonullOptional. Sends prefilter[projectIntegrationName]. "string" -- exact match.
prefilterProjectIntegrationNameNormstringnonullOptional. Sends prefilter[projectIntegrationNameNorm]. "string" -- exact match.
prefilterProjectIntegrationProviderstringnonullOptional. Sends prefilter[projectIntegrationProvider]. "string" -- exact match.
prefilterProjectNamestringnonullOptional. Sends prefilter[projectName]. "string" -- exact match.
prefilterProjectNameNormstringnonullOptional. Sends prefilter[projectNameNorm]. "string" -- exact match.
prefilterProjectObjstringnonullOptional. Sends prefilter[projectObj]. "string" -- exact match.
prefilterQuantsstringnonullOptional. Sends prefilter[quants]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterStartstringnonullOptional. Sends prefilter[start]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIdstringnonullOptional. Sends prefilter[taskId]. "string" -- exact match.
prefilterTaskIntegrationLastTrackedstringnonullOptional. Sends prefilter[taskIntegrationLastTracked]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
prefilterTaskIntegrationLinkstringnonullOptional. Sends prefilter[taskIntegrationLink]. "string" -- exact match.
prefilterTaskIntegrationNamestringnonullOptional. Sends prefilter[taskIntegrationName]. "string" -- exact match.
prefilterTaskIntegrationNameNormstringnonullOptional. Sends prefilter[taskIntegrationNameNorm]. "string" -- exact match.
prefilterTaskIntegrationProviderstringnonullOptional. Sends prefilter[taskIntegrationProvider]. "string" -- exact match.
prefilterTaskNamestringnonullOptional. Sends prefilter[taskName]. "string" -- exact match.
prefilterTaskNameNormstringnonullOptional. Sends prefilter[taskNameNorm]. "string" -- exact match.
prefilterTaskObjstringnonullOptional. Sends prefilter[taskObj]. "string" -- exact match.
prefilterTimezonestringnonullOptional. Sends prefilter[timezone]. "string" -- exact match.
prefilterUserArchivedstringnonullOptional. Sends prefilter[userArchived]. "string" -- exact match.
prefilterUserIdstringnonullOptional. Sends prefilter[userId]. "string" -- exact match.
prefilterUserNamestringnonullOptional. Sends prefilter[userName]. "string" -- exact match.
prefilterUserNameNormstringnonullOptional. Sends prefilter[userNameNorm]. unknown API-defined value.
prefilterUserObjPosstringnonullOptional. Sends prefilter[userObjPos]. "string" -- exact match.
prefilterUserObjPrePosstringnonullOptional. Sends prefilter[userObjPrePos]. "string" -- exact match.
ratiostringnonullOptional. Optional comma-separated list of field names to get total ratio of.
ratioFieldstringnonullOptional. Sends ratio-field. A field to specify for "ratio" paging. Default is first specified in "ratio" param.
ratioFilterTotalstringnonullOptional. Sends ratio-filter[total]. Prefilter ratio totals.
ratioIdstringnonullOptional. Sends ratio-id. ID of ratio item for "ratio" paging. Default is top first in ratio array.
ratioLimitstringnonullOptional. Sends ratio-limit. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default.
ratioPagestringnonullOptional. Sends ratio-page. When specified, defines how many resulting first items to skip.
ratioSortstringnonullOptional. Sends ratio-sort. Which field to sort by, prepend it with "_" for descending sorting.
resolvestringnonullOptional. Optional comma-separated list of field names to resolve.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs. When specified, filters results to include only users assigned to these tags.
taskstringnonullOptional. Task ID to filter statistics. When specified, returns statistics only for the specified task.
timezonestringnonullOptional. Timezone of ranges breaks. Etc/UTC by default.
tostringnonullOptional. ISO 8601 date-time for the end of the query range (exclusive). Defaults to the current time. ISO 8601 UTC.
unpaidintegernonullOptional. Set to 1 to include unpaid time from unpaid breaks in the report. Set to 0 or omit to exclude unpaid time.
userstringnonullOptional. Comma-separated list of user IDs to filter results. If omitted, returns data for the authenticated user. Use all to retrieve company-wide totals.

Groups

ToolPlanAccessSummary
td_add_group_managerProDestructiveDESTRUCTIVE: assign a manager to a group (tag).
td_create_groupProWriteCreate a new group (tag) in the company.
td_delete_groupProDestructiveDESTRUCTIVE: delete a group (tag) from the company.
td_get_groupFreeRead-onlyRetrieve details of a specific group (tag).
td_list_groupsFreeRead-onlyRetrieve list of all groups (tags) in the company.
td_remove_group_managerProDestructiveDESTRUCTIVE: remove a manager from a group (tag).
td_update_groupProDestructiveDESTRUCTIVE: update details of a specific group (tag).

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: userId.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
tagIdstringyesRequired. Unique identifier of the user group (tag).

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, description.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on an archived (deleted) group instead of an active one.
tagIdstringyesRequired. Unique identifier of the user group (tag).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
tagIdstringyesRequired. Unique identifier of the user group (tag).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
includeArchivedTagsbooleannonullOptional. Sends include-archived-tags. When true, returns archived (deleted) groups alongside the live ones, each row flagged by its deleted field. Archived groups are hidden by default.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
tagIdstringyesRequired. Unique identifier of the user group (tag).
userIdstringyesRequired. Unique identifier of the group manager.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, description, active.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
tagIdstringyesRequired. Unique identifier of the user group (tag).

Projects

ToolPlanAccessSummary
td_create_projectProWriteCreate a new project in the company.
td_delete_projectProDestructiveDESTRUCTIVE: remove a project from the company.
td_get_projectFreeRead-onlyRetrieve detailed information about a specific project.
td_grant_project_accessProDestructiveDESTRUCTIVE: grant or modify user access to a private project.
td_list_projectsFreeRead-onlyRetrieve a list of all projects in the company.
td_list_projects_v11FreeRead-onlyRetrieve projects list with enhanced streaming support.
td_make_project_publicProDestructiveDESTRUCTIVE: convert a private project to public access.
td_revoke_project_accessProDestructiveDESTRUCTIVE: revoke a specific user's access to a private project.
td_update_projectProDestructiveDESTRUCTIVE: update project information and settings.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: scope, users, cloneTasksFromId, cloneAccessFromId, name, description, deleted, weight.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on a deleted (archived) project instead of an active one.
projectIdstringyesRequired. Unique identifier of the project.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on a deleted (archived) project instead of an active one.
projectIdstringyesRequired. Unique identifier of the project.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: role.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on a deleted (archived) project instead of an active one.
projectIdstringyesRequired. Unique identifier of the project.
userIdstringyesRequired. Unique identifier of the user whose project access will be modified.

[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.

ParamTypeRequiredDefaultDescription
allstringnonullOptional. When true, returns all projects in the company instead of only assigned projects.
allowUnassignedstringnonullOptional. Sends allow-unassigned. When true, includes projects that the user is not explicitly assigned to.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. Level of detail to include in the response. Defaults to "basic".
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterKeyphrasestringnonullOptional. Sends filter[keyphrase]. A keyphrase for searching by keywords.
filterKeywordsstringnonullOptional. Sends filter[keywords]. set of keywords to be matched.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
projectsstringnonullOptional. Comma-separated list of project IDs to retrieve. When specified, only these projects are returned.
showIntegrationstringnonullOptional. Sends show-integration. When true, includes projects synced from external integrations (e.g., Jira, Asana).
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
userstringnonullOptional. Comma-separated list of user IDs to retrieve accessible projects for. Defaults to the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
allstringnonullOptional. When true, returns all projects in the company instead of only assigned projects.
allowUnassignedstringnonullOptional. Sends allow-unassigned. When true, includes projects that the user is not explicitly assigned to.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
detailstringnonullOptional. Level of detail to include in the response. Defaults to "basic".
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterKeyphrasestringnonullOptional. Sends filter[keyphrase]. A keyphrase for searching by keywords.
filterKeywordsstringnonullOptional. Sends filter[keywords]. set of keywords to be matched.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
projectsstringnonullOptional. Comma-separated list of project IDs to retrieve. When specified, only these projects are returned.
showIntegrationstringnonullOptional. Sends show-integration. When true, includes projects synced from external integrations (e.g., Jira, Asana).
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
userstringnonullOptional. Comma-separated list of user IDs to retrieve accessible projects for. Defaults to the authenticated user.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on a deleted (archived) project instead of an active one.
projectIdstringyesRequired. Unique identifier of the project.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on a deleted (archived) project instead of an active one.
projectIdstringyesRequired. Unique identifier of the project.
userIdstringyesRequired. Unique identifier of the user whose project access will be modified.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: name, description, deleted, weight.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, operates on a deleted (archived) project instead of an active one.
projectIdstringyesRequired. Unique identifier of the project.

Tasks

ToolPlanAccessSummary
td_archive_taskProDestructiveDESTRUCTIVE: archive or restore a task.
td_create_taskProWriteCreate a new task in the company.
td_get_taskFreeRead-onlyRetrieve detailed information about a specific task.
td_list_tasksFreeRead-onlyRetrieve a list of all tasks in the company.
td_list_tasks_v11FreeRead-onlyRetrieve tasks list with enhanced streaming support.
td_update_taskProDestructiveDESTRUCTIVE: update task information and settings.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, restores (unarchives) the task instead of archiving it.
taskIdstringyesRequired. Unique identifier of the task.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: project, name, description, weight, deleted, status, public.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
taskIdstringyesRequired. Unique identifier of the task.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, returns deleted (archived) tasks instead of active tasks.
filterAssignedTostringnonullOptional. Sends filter[assignedTo]. "string" -- exact match.
filterFolderstringnonullOptional. Sends filter[folder]. "string" -- exact match.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterKeyphrasestringnonullOptional. Sends filter[keyphrase]. A keyphrase for searching by keywords.
filterKeywordsstringnonullOptional. Sends filter[keywords]. set of keywords to be matched.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterProjectstringnonullOptional. Sends filter[project]. "string" -- exact match.
filterStatusstringnonullOptional. Sends filter[status]. options from open, closed.
foldersstringnonullOptional. Comma-separated list of folder IDs to filter tasks by. Returns only tasks in these folders.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
projectlessstringnonullOptional. When true, returns only tasks that are not assigned to any project.
projectsstringnonullOptional. Comma-separated list of project IDs to filter tasks by. Returns only tasks belonging to these projects.
publicOnlystringnonullOptional. Sends public-only. When true, returns only public tasks that are visible to all users.
showIntegrationstringnonullOptional. Sends show-integration. When true, includes tasks synced from external integrations (e.g., Jira, Asana).
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tasksstringnonullOptional. Comma-separated list of task IDs to retrieve. When specified, only these tasks are returned.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedstringnonullOptional. When true, returns deleted (archived) tasks instead of active tasks.
filterAssignedTostringnonullOptional. Sends filter[assignedTo]. "string" -- exact match.
filterFolderstringnonullOptional. Sends filter[folder]. "string" -- exact match.
filterIdstringnonullOptional. Sends filter[id]. "string" -- exact match.
filterKeyphrasestringnonullOptional. Sends filter[keyphrase]. A keyphrase for searching by keywords.
filterKeywordsstringnonullOptional. Sends filter[keywords]. set of keywords to be matched.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterProjectstringnonullOptional. Sends filter[project]. "string" -- exact match.
filterStatusstringnonullOptional. Sends filter[status]. options from open, closed.
foldersstringnonullOptional. Comma-separated list of folder IDs to filter tasks by. Returns only tasks in these folders.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
projectlessstringnonullOptional. When true, returns only tasks that are not assigned to any project.
projectsstringnonullOptional. Comma-separated list of project IDs to filter tasks by. Returns only tasks belonging to these projects.
publicOnlystringnonullOptional. Sends public-only. When true, returns only public tasks that are visible to all users.
showIntegrationstringnonullOptional. Sends show-integration. When true, includes tasks synced from external integrations (e.g., Jira, Asana).
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tasksstringnonullOptional. Comma-separated list of task IDs to retrieve. When specified, only these tasks are returned.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: project, name, description, weight, deleted, status, public.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
taskIdstringyesRequired. Unique identifier of the task.

Work schedules

ToolPlanAccessSummary
td_delete_work_scheduleProDestructiveDESTRUCTIVE: remove a specific work schedule entry.
td_get_attendance_reportFreeRead-onlyRetrieve Attendance Report rows for scheduled shifts in a date range.
td_get_leave_statsFreeRead-onlyRetrieve aggregated leave statistics including total and approved leave counts.
td_get_work_scheduleFreeRead-onlyRetrieve details of a specific work schedule entry.
td_list_schedule_issuesFreeRead-onlyRetrieve work schedule issues and conflicts for dashboard monitoring.
td_list_work_schedulesFreeRead-onlyRetrieve work schedules for users including shifts, time off, and leave periods.
td_replace_work_schedulesProDestructiveDESTRUCTIVE: bulk create or update work schedules for multiple users.
td_update_work_scheduleProWriteUpdate a specific work schedule entry.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
idstringyesRequired. Unique identifier of the work schedule.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterLeaveTypestringnonullOptional. Sends filter[leaveType]. "string" -- exact match.
filterStartstringnonullOptional. Sends filter[start]. "string" -- exact match.
fromstringyesRequired. Start date and time of the schedule period (ISO 8601 format).
groupBystringnonullOptional. Sends group-by. Row ordering: grouped by user name (default) or by shift date.
includeArchivedUsersstringnonullOptional. Sends include-archived-users. When set to 1, archived users are included. Defaults to 0.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
showAbsentLateOnlystringnonullOptional. Sends show-absent-late-only. When set to 1, only rows with status absent, partially absent or late are returned.
showUsersWithShiftstringnonullOptional. Sends show-users-with-shift. When set to 1, only rows with a resolved non-leave status are returned.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs to filter users by their assigned tags.
timezonestringnonullOptional. IANA timezone used for day boundaries, the "today" cutoff and the reported date. Defaults to the caller timezone, then the company timezone, then Etc/UTC.
tostringyesRequired. End date and time of the schedule period (ISO 8601 format).
userstringnonullOptional. Comma-separated list of user IDs, or special values: all, managed, all-self, managed-self, all-on-reports, managed-on-reports, all-self-on-reports. Defaults to all-self-on-reports.

[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.

ParamTypeRequiredDefaultDescription
approvedstringnonullOptional. Filter schedules by approval status: pending, approved, or disapproved.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
excludeStatusstringnonullOptional. Sends exclude-status. Comma-separated list of approval statuses to exclude (e.g., pending, approved, disapproved).
filterLeaveTypestringnonullOptional. Sends filter[leaveType]. "string" -- exact match.
filterStartstringnonullOptional. Sends filter[start]. "string" -- exact match.
fromstringyesRequired. Start date and time of the schedule period (ISO 8601 format).
includeAutoApprovedbooleannonullOptional. Sends include-auto-approved. When true, includes automatically approved schedules in results. Defaults to true.
leaveTypestringnonullOptional. Sends leave-type. Comma-separated list of leave types to filter by (e.g., paidLeave, unpaidLeave).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
resolveNamesbooleannonullOptional. Sends resolve-names. When true, includes reviewer name and user name in the response. Defaults to false.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs to filter users by their assigned tags. When tag is set without user, the API scopes to user=all (tag members the caller can access).
tostringyesRequired. End date and time of the schedule period (ISO 8601 format).
userstringnonullOptional. Comma-separated list of user IDs.
workRangestringnonullOptional. Sends work-range. Time range in seconds for the work schedule period.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
idstringyesRequired. Unique identifier of the work schedule.

[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.

ParamTypeRequiredDefaultDescription
allUsersTagstringnonullOptional. Sends all-users-tag. When set to 1, includes the special "all users" tag ID in results. Defaults to 0.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringyesRequired. Start date and time of the schedule period (ISO 8601 format).
groupBystringnonullOptional. Sends group-by. Field to group results by: either by user's current tag ID or by user ID.
tagstringnonullOptional. Comma-separated list of tag IDs to filter users by their assigned tags.
tostringyesRequired. End date and time of the schedule period (ISO 8601 format).
userstringnonullOptional. Comma-separated list of user IDs, or special values: all, managed, all-self, managed-self, all-on-reports, managed-on-reports.

[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.

ParamTypeRequiredDefaultDescription
approvedstringnonullOptional. Filter schedules by approval status: pending, approved, or disapproved.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
excludeStatusstringnonullOptional. Sends exclude-status. Comma-separated list of approval statuses to exclude (e.g., pending, approved, disapproved).
filterLeaveTypestringnonullOptional. Sends filter[leaveType]. "string" -- exact match.
filterStartstringnonullOptional. Sends filter[start]. "string" -- exact match.
fromstringyesRequired. Start date and time of the schedule period (ISO 8601 format).
includeAutoApprovedbooleannonullOptional. Sends include-auto-approved. When true, includes automatically approved schedules in results. Defaults to true.
leaveTypestringnonullOptional. Sends leave-type. Comma-separated list of leave types to filter by (e.g., paidLeave, unpaidLeave).
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
resolveNamesbooleannonullOptional. Sends resolve-names. When true, includes reviewer name and user name in the response. Defaults to false.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs to filter users by their assigned tags. When tag is set without user, the API scopes to user=all (tag members the caller can access).
tostringyesRequired. End date and time of the schedule period (ISO 8601 format).
userstringnonullOptional. Comma-separated list of user IDs.
workRangestringnonullOptional. Sends work-range. Time range in seconds for the work schedule period.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringnonullOptional. A JSON request body. Time Doctor documents these fields: userId, schedules.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringyesRequired. Start date and time of the schedule period (ISO 8601 format).
tostringyesRequired. End date and time of the schedule period (ISO 8601 format).

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringnonullOptional. A JSON request body. Time Doctor documents these fields: approved.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
idstringyesRequired. Unique identifier of the work schedule.

Screencasts

ToolPlanAccessSummary
td_delete_screencastProDestructiveDESTRUCTIVE: remove a specific file entry from the system.
td_get_screencast_countsFreeRead-onlyRetrieve aggregated file counts for screenshots and other tracked media.
td_get_screencast_download_urlFreeRead-onlyGenerate a temporary signed URL for secure file download.
td_list_screencastsFreeRead-onlyRetrieve list of all files (screenshots, webcam captures, etc.) for users.
td_list_screencasts_by_typeFreeRead-onlyRetrieve files filtered by specific type (screenshots, webcam, etc.).
td_update_screencast_metadataProWriteCreate or update file metadata entry in the system.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
datestringyesRequired. ISO 8601 timestamp when the file was captured.
numberintegeryesRequired. File index number (for screenshots, corresponds to monitor number).
typestringyesRequired. Type of file to retrieve (screenshot, video, etc.).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterAvgActivitystringnonullOptional. Sends filter[avg-activity]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDatestringnonullOptional. Sends filter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDuplicatestringnonullOptional. Sends filter[duplicate]. match string.
filterEntitystringnonullOptional. Sends filter[entity]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIsBluredstringnonullOptional. Sends filter[isBlured]. match string.
includeUnusualActivitystringnonullOptional. When enabled via feature flag, include unusual activity metadata on each file.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 0 to disable paging stats.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs to retrieve files for all users in those tags.
totalDuplicateCountstringnonullOptional. When set to 1, include totalDuplicateCount in paging (uses filter[duplicate] when provided, otherwise duplicates only).
totalLowActvityCountstringnonullOptional. When set (e.g. _30), include totalLowActvityCount in paging for files at or below that avg-activity.
unusualOnlystringnonullOptional. When enabled via feature flag, return only files within unusual activity periods.
userstringnonullOptional. Comma-separated list of user IDs whose files to retrieve (defaults to current user).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
datestringyesRequired. ISO 8601 timestamp when the file was captured.
numberintegeryesRequired. File index number (for screenshots, corresponds to monitor number).
typestringyesRequired. Type of file to retrieve (screenshot, video, etc.).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterAvgActivitystringnonullOptional. Sends filter[avg-activity]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDatestringnonullOptional. Sends filter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDuplicatestringnonullOptional. Sends filter[duplicate]. match string.
filterEntitystringnonullOptional. Sends filter[entity]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIsBluredstringnonullOptional. Sends filter[isBlured]. match string.
includeUnusualActivitystringnonullOptional. When enabled via feature flag, include unusual activity metadata on each file.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 0 to disable paging stats.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs to retrieve files for all users in those tags.
totalDuplicateCountstringnonullOptional. When set to 1, include totalDuplicateCount in paging (uses filter[duplicate] when provided, otherwise duplicates only).
totalLowActvityCountstringnonullOptional. When set (e.g. _30), include totalLowActvityCount in paging for files at or below that avg-activity.
unusualOnlystringnonullOptional. When enabled via feature flag, return only files within unusual activity periods.
userstringnonullOptional. Comma-separated list of user IDs whose files to retrieve (defaults to current user).

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterAvgActivitystringnonullOptional. Sends filter[avg-activity]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDatestringnonullOptional. Sends filter[date]. "ISO_date" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterDuplicatestringnonullOptional. Sends filter[duplicate]. match string.
filterEntitystringnonullOptional. Sends filter[entity]. "number" -- exact match; or "from_to" -- inclusive range; or "from_"; or "_to".
filterIsBluredstringnonullOptional. Sends filter[isBlured]. match string.
includeUnusualActivitystringnonullOptional. When enabled via feature flag, include unusual activity metadata on each file.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
pagingintegernonullOptional. Set to 0 to disable paging stats.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tagstringnonullOptional. Comma-separated list of tag IDs to retrieve files for all users in those tags.
totalDuplicateCountstringnonullOptional. When set to 1, include totalDuplicateCount in paging (uses filter[duplicate] when provided, otherwise duplicates only).
totalLowActvityCountstringnonullOptional. When set (e.g. _30), include totalLowActvityCount in paging for files at or below that avg-activity.
typestringyesRequired. Type of file to retrieve (screenshot, video, etc.).
unusualOnlystringnonullOptional. When enabled via feature flag, return only files within unusual activity periods.
userstringnonullOptional. Comma-separated list of user IDs whose files to retrieve (defaults to current user).

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: contentType, blur, chunkId, clicks, movements, keys, period, imageSize, imageMd5, createdAt, h, w, projectId, taskId, screenNumber, type.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
datestringyesRequired. ISO 8601 timestamp when the file was captured.
numberintegeryesRequired. File index number (for screenshots, corresponds to monitor number).
typestringyesRequired. Type of file to retrieve (screenshot, video, etc.).

IP allow list

ToolPlanAccessSummary
td_archive_ip_addressProDestructiveDESTRUCTIVE: remove an IP address from the company whitelist.
td_archive_ip_addresses_by_ssidProDestructiveDESTRUCTIVE: archive all IP address whitelist records that share the same WiFi network name (SSID).
td_create_ip_addressProWriteAdd a new IP address to the company whitelist.
td_get_ip_addressFreeRead-onlyRetrieve details of a specific IP address record.
td_list_ip_addressesFreeRead-onlyRetrieve list of allowed IP addresses for company access control.
td_update_ip_addressProWriteUpdate an existing IP address record.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
ipAddressIdstringyesRequired. ID of IP address record.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
ssidstringyesRequired. WiFi network name (SSID). All active IP whitelist rows with this SSID are archived.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: ipAddress, type, ipRangeStart, ipRangeEnd, ipCidr, locationType, ipType.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
ipAddressIdstringyesRequired. ID of IP address record.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
deletedbooleannonullOptional. Include archived IP addresses in the response.
filterLocationTypestringnonullOptional. Sends filter[locationType]. "string" -- exact match.
fromstringnonullOptional. Filter IP addresses modified after this date. ISO 8601 UTC.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.
tostringnonullOptional. Filter IP addresses modified before this date. ISO 8601 UTC.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: ipAddress, type, ipRangeStart, ipRangeEnd, ipCidr, locationType, ipType.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
ipAddressIdstringyesRequired. ID of IP address record.

Notifications

ToolPlanAccessSummary
td_create_notificationProDestructiveDESTRUCTIVE: create a new notification for users.
td_get_notificationFreeRead-onlyRetrieve detailed information about a specific notification.
td_list_notificationsFreeRead-onlyRetrieve list of notifications for the authenticated user.
td_subscribe_notificationProWriteSubscribe to a specific notification type or channel.
td_unsubscribe_notificationProDestructiveDESTRUCTIVE: unsubscribe from a specific notification type or channel.
td_update_notificationProWriteUpdate notification settings or mark as read.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: notification.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
notificationIdstringyesRequired. Unique identifier of the notification.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
filterActivebooleannonullOptional. Sends filter[active]. boolean value.
filterIsDENbooleannonullOptional. Sends filter[isDEN]. boolean value.
filterNamestringnonullOptional. Sends filter[name]. "string" -- starts with.
filterNotifyTypestringnonullOptional. Sends filter[notifyType]. "string" -- exact match.
filterPricingPlanstringnonullOptional. Sends filter[pricingPlan]. "string" -- exact match.
filterRecipientIdstringnonullOptional. Sends filter[recipientId]. "string" -- exact match.
filterUserstringnonullOptional. Sends filter[user]. "string" -- exact match.
limitintegernonullOptional. When specified, defines maximum number of resulting first items to be returned; or use API-specific hard limit by default. Capped at 250 by StackJack.
pageintegernonullOptional. When specified, defines how many resulting first items to skip. Row OFFSET, not a page index.
sortstringnonullOptional. Which field to sort by, prepend it with "_" for descending sorting.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: recipientIds.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
notificationIdstringyesRequired. Unique identifier of the notification.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: recipientIds.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
notificationIdstringyesRequired. Unique identifier of the notification.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: notification.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
notificationIdstringyesRequired. Unique identifier of the notification.

Calendar integration

ToolPlanAccessSummary
td_delete_stored_calendar_eventsProDestructiveDESTRUCTIVE: delete stored calendar events from local database.
td_disconnect_calendarProDestructiveDESTRUCTIVE: disconnect calendar integration (marks token as invalid, stops webhook, optionally deletes events).
td_get_calendar_auth_urlFreeRead-onlyGenerate Google Calendar OAuth2 authorization URL for user consent.
td_get_calendar_summaryFreeRead-onlyGet summary statistics for calendar meetings across multiple users.
td_get_calendar_token_statusFreeRead-onlyCheck Google Calendar OAuth2 token status and connection health.
td_list_calendar_eventsFreeRead-onlyFetch calendar events directly from Google Calendar API.
td_list_stored_calendar_eventsFreeRead-onlyRetrieve calendar events from local database storage.
td_list_unique_calendar_meetingsFreeRead-onlyGet deduplicated calendar meetings for users with connected Google Calendar.
td_refresh_calendar_tokenProDestructiveDESTRUCTIVE: refresh expired OAuth2 access token using refresh token.
td_start_calendar_watchProDestructiveDESTRUCTIVE: start Google Calendar webhook notifications for real-time event updates.
td_stop_calendar_watchProDestructiveDESTRUCTIVE: stop Google Calendar webhook notifications.
td_sync_calendar_eventsProWriteManually trigger calendar event synchronization and return updated events.

[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.

ParamTypeRequiredDefaultDescription
beforestringnonullOptional. ISO 8601 timestamp. When specified, deletes all events that start before this date/time.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
eventIdstringnonullOptional. Unique identifier of a single event to delete from Google Calendar.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringnonullOptional. A JSON request body. Time Doctor documents these fields: deleteEvents, provider.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringnonullOptional. ISO 8601 start date/time for filtering events (inclusive). ISO 8601 UTC.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.
tagstringnonullOptional. Access filter. Comma-separated tag IDs. Restricts results to users that have the given tag(s). Events are then filtered by user; tags are not stored on event documents.
tostringnonullOptional. ISO 8601 end date/time for filtering events (exclusive). ISO 8601 UTC.
userstringnonullOptional. User scope filter. Accepts: "all" (all users), "managed" (managed users), comma-separated user IDs, or specific user ID. Defaults to caller's accessible users.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringnonullOptional. ISO 8601 start date/time for filtering events (inclusive). ISO 8601 UTC.
limitintegernonullOptional. Maximum number of events to return. Defaults to 250. Capped at 250 by StackJack.
orderBystringnonullOptional. Field to order results by. Defaults to startTime.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.
singleEventsstringnonullOptional. When false, recurring events are not expanded into individual instances. Defaults to true.
tostringnonullOptional. ISO 8601 end date/time for filtering events (exclusive). ISO 8601 UTC.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
eventIdstringnonullOptional. Filter by specific Google Calendar event ID. When provided, user scope (user, tag) is skipped and all stored attendee rows for that event in the company are returned.
fromstringnonullOptional. ISO 8601 start date/time for filtering events (inclusive). ISO 8601 UTC.
limitintegernonullOptional. Maximum number of results per page. Defaults to 50, maximum 250. Capped at 250 by StackJack.
pageintegernonullOptional. Page number for pagination (0-indexed). Defaults to 0. Row OFFSET, not a page index.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.
resolvestringnonullOptional. When set to "username", includes userName field in response for each event.
sortstringnonullOptional. Sort field and direction. Supported values: "start" (event start time/date ascending), "_start" (descending), "durationMinutes" (event duration ascending), "_durationMinutes" (descending), "meetinglogTime" (meeting log time ascending), "_meetinglogTime" (descending). Defaults to "start" (ascending by start time).
tagstringnonullOptional. Access filter. Comma-separated tag IDs. Restricts results to users that have the given tag(s). Events are then filtered by user; tags are not stored on event documents.
tostringnonullOptional. ISO 8601 end date/time for filtering events (exclusive). ISO 8601 UTC.
userstringnonullOptional. User scope filter. Accepts: "all" (all users), "managed" (managed users), comma-separated user IDs, or specific user ID. Defaults to caller's accessible users.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
fromstringnonullOptional. ISO 8601 start date/time for filtering events (inclusive). ISO 8601 UTC.
limitintegernonullOptional. Maximum number of results per page. Defaults to 50, maximum 250. Capped at 250 by StackJack.
pageintegernonullOptional. Page number for pagination (0-indexed). Defaults to 0. Row OFFSET, not a page index.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.
sortstringnonullOptional. Sort field and direction. Supported values: "start" (event start time/date ascending), "_start" (descending), "durationMinutes" (event duration ascending), "_durationMinutes" (descending), "meetinglogTime" (meeting log time ascending), "_meetinglogTime" (descending). Defaults to "start" (ascending by start time).
tagstringnonullOptional. Access filter. Comma-separated tag IDs. Restricts results to users that have the given tag(s). Events are then filtered by user; tags are not stored on event documents.
tostringnonullOptional. ISO 8601 end date/time for filtering events (exclusive). ISO 8601 UTC.
userstringnonullOptional. User scope filter. Accepts: "all" (all users), "managed" (managed users), comma-separated user IDs, or specific user ID. Defaults to caller's accessible users.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.
providerstringnonullOptional. Calendar integration: google (Google Calendar) or outlook (Microsoft Outlook via Graph). Defaults to google. Webhooks (watch/) are Google-only.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringyesRequired. The request body as JSON. Time Doctor documents these fields: callbackUrl.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

[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.

ParamTypeRequiredDefaultDescription
bodyJsonstringnonullOptional. A JSON request body. Time Doctor documents these fields: userId, from, to, limit, force, provider.
companystringnonullOptional to send, but Time Doctor requires a company here: omit it and StackJack uses the default company id saved on this connection, and refuses the call when none is saved. Call td_list_companies for the ids this login reaches.

Raw Requests

ToolPlanAccessSummary
td_raw_getFreeWriteSend one GET to any Time Doctor path and return the response exactly as Time Doctor sent it.
td_raw_requestProDestructiveDESTRUCTIVE: send one POST, PUT or DELETE to any Time Doctor path and return the response exactly as Time Doctor sent it.

[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.

ParamTypeRequiredDefaultDescription
companystringnonullOptional. Scope the call to one company. Omit it to use the default company id saved on this connection. Ignored when your path's own query already names company. Call td_list_companies for ids.
pathstringyesThe path relative to the instance root, starting with api/ — for example api/1.0/companies or api/1.1/stats/summary. May carry its own query string. No scheme, no '..', no fragment.

[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.

ParamTypeRequiredDefaultDescription
bodystringnonullOptional. The request body as JSON, or omit for none. Passed to Time Doctor untouched.
companystringnonullOptional. Scope the call to one company. Omit it to use the default company id saved on this connection. Ignored when your path's own query already names company. Call td_list_companies for ids.
methodstringyesThe HTTP verb: POST, PUT or DELETE. GET is refused — use td_raw_get. PATCH does not exist in Time Doctor's API.
pathstringyesThe path relative to the instance root, starting with api/ — for example api/1.0/users/. May carry its own query string. No scheme, no '..', no fragment.