Beam Help
Get help now

How-to · Zoho DESK

How to get active timer for a task in Zoho Desk

Retrieve the currently running timer for a specific task.

Retrieving the active timer for a task in Zoho Desk requires a single authenticated GET request to the task's activeTimer sub-resource, returning whichever timer is currently running against that task.


Why this matters


When your support team tracks billable hours or SLA compliance through Zoho Desk tasks, you may need to programmatically check whether a timer is already running before starting a new one. Fetching the active timer lets you surface live time-tracking data in dashboards, prevent duplicate timers, or feed elapsed time into downstream reporting tools. This is distinct from fetching the full timer history for a task, which uses a separate endpoint.


---


Step-by-step


Step 1. Confirm you have a valid Zoho Desk API connection with an active OAuth access token and the correct orgId for your portal. Without these, every API call will be rejected before it reaches the timer resource. [7]


Step 2. Identify the taskId for the task whose active timer you want to inspect. This is the unique identifier Zoho Desk assigns to each task record — you can retrieve it from a prior task-listing call or from the task's URL in the Desk UI. [1]


Step 3. Send a GET request to the following endpoint, substituting your real task ID:


GET /api/v1/tasks/{taskId}/activeTimer

Include your Authorization: Zoho-oauthtoken <access_token> header and the orgId header required by Zoho Desk. [1]


Step 4. Optionally pass query parameters via the p dictionary if your integration needs to filter or paginate the response. The operation signature accepts an optional p parameter for this purpose. [1]


Step 5. If you are using the Python client wrapper our team works with, the call looks like this:


result = api.get_active_timer_for_a_2(taskId="your_task_id_here")

The method issues the GET request internally and returns the parsed response. [1]


Step 6. Parse the response body. A running timer will be present in the payload; if no timer is currently active, the response will typically return an empty or null data object rather than an error.


---


Don't confuse these three endpoints


Zoho Desk exposes similar activeTimer resources at different levels — it is easy to call the wrong one:


| What you want | Endpoint |

|---|---|

| Active timer for a task | GET /api/v1/tasks/{taskId}/activeTimer [1] |

| Active timer for a ticket | GET /api/v1/tickets/{ticketId}/activeTimer [2] |

| Active timer for an agent | GET /api/v1/agents/{agentId}/activeTimer [4] |


Mixing up taskId and ticketId is the most common mistake — tasks and tickets are separate objects in Zoho Desk and their IDs are not interchangeable. [1][2]


There is also a related but different endpoint worth knowing:


GET /api/v1/tasks/{taskId}/timer

This retrieves the general timer record for a task rather than specifically the *active* (currently running) timer. Use activeTimer when you only care about what is running right now. [6]


---


Common pitfalls


  • Wrong resource type. Passing a ticket ID into the task endpoint (or vice versa) will return a 404 or an unrelated record. Always verify which object type your ID belongs to before calling. [1][2]
  • Missing orgId header. Zoho Desk requires the organisation ID on every request. If your connection was set up without persisting orgId, the client may attempt to auto-discover it on first use — ensure that discovery has completed successfully before making timer calls. [7]
  • Expired access token. OAuth tokens have a limited lifespan. A token refresh mechanism should be in place so that timer queries don't fail silently mid-session. [7]
  • Confusing activeTimer with timer. The /timer endpoint returns broader timer data; /activeTimer is scoped to whatever is currently ticking. Using the wrong one may return stale or historical data instead of the live state. [6]

---


What to check


  • Correct ID type: Confirm the ID you are passing belongs to a *task* object, not a ticket or another entity, before calling GET /api/v1/tasks/{taskId}/activeTimer. [1]
  • Authentication headers: Verify that both your OAuth access token and your Zoho Desk orgId are present and current in the request headers. [7]
  • Response data vs. empty response: Check whether the returned payload contains an active timer object or is empty — an empty response means no timer is currently running, which is valid and should not be treated as an error. [1]

---


*Beam Help provides independent expert support for Zoho products and is not official Zoho support. For platform-level issues, always cross-reference with Zoho's own documentation and support channels.*

Sources cited

  1. [1] GET /api/v1/tasks/{taskId}/activeTimer
  2. [2] GET /api/v1/tickets/{ticketId}/activeTimer
  3. [3] run_llm_routing_suite.py
  4. [4] GET /api/v1/agents/{agentId}/activeTimer
  5. [5] browser_automation.py
  6. [6] GET /api/v1/tasks/{taskId}/timer
  7. [7] server.py: get_zoho_api
  8. [8] server.py: chat_plan
Get Active Timer for Task | Beam Help — Beam Help