Listing all modules in Zoho Desk is straightforward via a single API call that returns every module available in your organisation's Desk instance.
Why this matters
When building integrations or automations against Zoho Desk, you need to know exactly which modules are available before querying records, applying filters, or configuring OAuth scopes. Retrieving the full module list programmatically saves time compared to manually browsing the Desk UI, and ensures your code references only modules that actually exist in your portal.
Step-by-step
Step 1. Ensure your OAuth token includes the correct Desk scopes before making any API call. At minimum you will need Desk.basic.READ in your scope string, which covers organisations, agents, and departments — the foundational data layer that module metadata sits within. [1]
Step 2. Send a GET request to the Zoho Desk endpoint /api/v1/modules. This operation is identified internally as listallmodules and accepts an optional parameter object (p) if you need to pass query parameters such as pagination. [3]
Step 3. In Python, the call looks like this (paraphrased from our internal client wrapper):
def list_all_modules(self, p: dict = None):
"""List All Modules"""
return self.c.request("GET", "/api/v1/modules", p, None)
Pass p=None for a plain, unfiltered list of all modules, or supply a dictionary of query parameters if the API supports filtering. [3]
Step 4. Parse the response. The returned payload will contain the module names and metadata for your Desk portal. You can then use those module names in subsequent calls — for example, when building links to records such as tickets, contacts, or accounts within your portal. [2]
Step 5. If you are working in a multi-data-centre environment, confirm your base URL matches your Zoho data centre. For the default com region the Desk base URL is https://desk.zoho.com; for other regions substitute the appropriate domain suffix (e.g. zoho.eu, zoho.com.au). [5]
Common pitfalls
- Missing scopes. If your OAuth token does not include
Desk.basic.READ, the/api/v1/modulescall will be rejected. Double-check that your scope string contains the basic read permission alongside any other Desk scopes you need. [1] - Wrong portal or org identifier. Zoho Desk URLs and API contexts are tied to a specific portal. If you have multiple portals, make sure the authenticated session targets the correct one — otherwise the module list may be incomplete or return a 403. [5]
- Pagination. If your Desk instance has a large number of custom modules, the response may be paginated. Use the
pparameter to pass page or limit values as needed. [3] - Scope conflicts in combined deployments. If you are running both Zoho CRM and Zoho Desk in the same application, your combined scope string must include Desk-specific scopes separately — they are not inherited from CRM scopes. [1]
What to check
- Confirm the API response contains the expected module names (e.g.
tickets,contacts,accounts,tasks,events,articles) before building any downstream logic against them. [6] - Verify your OAuth token's Desk scopes include at least
Desk.basic.READand any module-specific scopes (Desk.tickets.READ,Desk.contacts.READ, etc.) required for follow-up calls. [1] - Validate the data centre suffix in your base URL matches the region where your Zoho Desk portal is hosted. [5]
---
*Beam Help provides independent expert support for Zoho products and is not official Zoho support. Always refer to the Zoho Desk API documentation for the latest endpoint specifications.*