Beam Help
Get help now

How-to · Zoho DESK

How to list all teams in Zoho Desk

Retrieve all support teams from your associated departments.

Listing all teams in Zoho Desk is straightforward via the API: a single GET request to the /api/v1/teams endpoint returns every team across all departments associated with your organisation.


Why this matters


Support operations often span multiple departments, each with dedicated teams handling different queues or skill sets. Knowing how to programmatically retrieve the full team list lets you audit assignments, build integrations, or populate dropdowns in custom tooling — all without clicking through the Zoho Desk UI manually. As independent expert support for Zoho (not official Zoho support), Beam Help documents these patterns so your developers can move faster.


Step-by-step


Step 1. Confirm your OAuth token includes the correct Desk scopes before making any call. At minimum you need Desk.basic.READ in your authorised scope set, which covers organisations, agents, and departments — the same tier that governs team data. [2]


Step 2. Ensure your integration has a valid orgId stored for the Desk organisation you want to query. If the org ID is missing, the Zoho Desk client will attempt to auto-discover it by calling the organisations endpoint and persisting the first result. Without a resolved orgId, subsequent calls — including the teams endpoint — will fail or return unexpected results. [3] [7]


Step 3. Send a GET request to the teams endpoint:


GET /api/v1/teams

This operation — internally referred to as listteamsfromallassociated — retrieves teams from every department linked to your account in one call. [4]


Step 4. Optionally pass a p parameter object to filter or paginate the results. The endpoint accepts a p dictionary for query parameters, so you can append standard Zoho Desk pagination keys (such as from and limit) as needed. [4]


A minimal Python call using the Desk client looks like this:


def list_teams_from_all_associated(self, p: dict = None):
    return self.c.request("GET", "/api/v1/teams", p, None)

Step 5. Parse the response. The returned payload will contain team records drawn from all associated departments. Display the key fields — team name, ID, associated department — to your users or downstream system. [6]


Common pitfalls


  • Missing Desk.basic.READ scope. If this scope is absent from your OAuth grant, the /api/v1/teams call will return an authorisation error. Double-check your configured scope list and re-authorise if necessary. [2]
  • Unresolved orgId. The Zoho Desk client attaches the orgId as a header on every request. If the stored value is blank and auto-discovery has not yet run, the API will reject the call. Trigger an organisations lookup first to populate and persist the ID. [3] [7]
  • Confusing CRM and Desk credentials. The Desk client is initialised separately from the CRM client and uses a different API domain and token flow. Passing a CRM access token to a Desk endpoint — or vice versa — will result in authentication failures. Always instantiate the correct client for the product you are targeting. [7]

What to check


  • Verify that Desk.basic.READ (and any other required scopes) appear in your active OAuth token before calling the endpoint. [2]
  • Confirm that a non-empty orgId is stored and attached to your Desk client instance prior to making the request. [3]
  • After receiving the response, cross-reference at least one returned team name against your Zoho Desk Settings → Teams page to confirm the data is current and complete. [4]

Sources cited

  1. [1] server.py: build_zoho_links
  2. [2] config.py
  3. [3] server.py: get_zoho_api
  4. [4] GET /api/v1/teams
  5. [5] planner.py
  6. [6] server.py: chat_plan
List All Teams | Beam Help — Beam Help