Retrieving time tracking settings in Zoho Desk is straightforward via a single GET request to the /api/v1/timetracking/settings endpoint, provided your client is authenticated and your organisation ID is correctly configured.
Why this matters
When building integrations or automations around Zoho Desk's time tracking feature, you often need to inspect the current configuration before making changes — for example, before deciding whether to create, update, or delete settings. Fetching the settings first gives you a reliable baseline and helps avoid overwriting values unintentionally. This is also a useful diagnostic step when troubleshooting unexpected time tracking behaviour in your helpdesk.
Step-by-step
Step 1. Ensure your Zoho Desk connection is initialised with a valid access token and organisation ID. The ZohoDeskClient requires your API domain, a current access token, and the orgid associated with your Desk portal. If the orgid is not yet stored, the client can auto-discover it by calling the organisations endpoint and persisting the first result. [3]
Step 2. Confirm your access token is fresh before making the call. Our integration layer checks whether the token is within 120 seconds of expiry and proactively refreshes it using the stored refreshtoken, updating the database record with the new accesstoken and tokenexpiresat values. This prevents mid-request 401 errors. [4]
Step 3. Instantiate your ZohoDeskApi object using the authenticated ZohoDeskClient, then call the gettimetrack_settings method. This issues a GET request to /api/v1/timetracking/settings. An optional query-parameter dictionary (p) can be passed if you need to filter or scope the response, but it is not required for a basic fetch. [1]
# Example usage
settings = api.get_time_track_settings(p={})
print(settings)
Step 4. Inspect the response dictionary returned by the call. The data will reflect the current time tracking configuration for your Zoho Desk organisation. If you need to modify these settings afterwards, use PATCH /api/v1/timetracking/settings via updatetimetrack_settings(data, p), passing only the fields you wish to change. [2]
Step 5. If you need to start from scratch, note that the API also exposes POST /api/v1/timetracking/settings to create a fresh configuration and DELETE /api/v1/timetracking/settings to remove the existing one entirely — so the GET call fits naturally into a read-before-write pattern. [7][5]
Common pitfalls
- Missing
orgid: Zoho Desk requires the organisation ID to be sent with every API request. Ifdeskorgidis blank in your connection record, the client will attempt to discover it automatically, but this adds a round-trip. Always persist theorgidafter the first successful call to avoid repeated lookups. [3] - Stale access token: If token refresh logic is not in place, calls will fail with a 401. Make sure your client implements a
tokenrefreshercallback that fetches the latestrefreshtokenfrom storage and exchanges it for a newaccess_token. [3][4] - Confusing GET with DELETE: The same path (
/api/v1/timetracking/settings) is used for GET, POST, PATCH, and DELETE operations. Double-check the HTTP method before executing — accidentally callingdeletetimetrack_settingswill remove your configuration. [5][1]
What to check
- Authentication is valid: Verify that
accesstokenis present in your connection record and thattokenexpires_atis in the future before making the request. [4] orgidis populated: Confirm thatdeskorgidis stored and non-empty in yourzohoconnectionstable so the Desk client can attach it to the request headers. [3]- Response contains expected keys: After calling
gettimetrack_settings, check that the returned dictionary is not an error object — a successful response should contain your portal's time tracking configuration data rather than anerrorkey. [1]
---
*Beam Help is an independent expert support resource for Zoho products and is not official Zoho support.*