Retrieving module details in Zoho Desk is straightforward once you know the correct API endpoint and have the right OAuth scopes in place. This article walks you through the process step by step — as independent expert support from Beam Help, not official Zoho support.
Why this matters
When building integrations or automations on top of Zoho Desk, you often need to inspect the structure and metadata of a specific module before querying its records. Fetching module details programmatically lets you validate module IDs, confirm field availability, and dynamically adapt your application logic without hardcoding assumptions about your Desk configuration.
Step-by-step
Step 1. Ensure your OAuth token includes the correct Zoho Desk scopes. At a minimum, your token should cover Desk.basic.READ to access organisational and structural data such as modules. Broader scopes like Desk.settings.READ may also be relevant depending on what the module metadata exposes in your environment. [3]
Step 2. Identify the moduleId for the module you want to inspect. This is the unique identifier Zoho Desk assigns to each module (for example, tickets, contacts, or accounts). You can obtain this by listing all available modules first, then noting the id field from the response before drilling into a specific one. [1]
Step 3. Make a GET request to the following endpoint, substituting your target module's identifier:
GET /api/v1/modules/{moduleId}
This operation is named getmoduledetails in the Zoho Desk API. The path parameter moduleId is required; the optional query parameter p can be used to pass additional pagination or filter options. [1]
Step 4. If you are working in Python, the call looks like this:
def get_module_details(self, moduleId: str, p: dict = None):
"""Get Module Details"""
return self.c.request("GET", f"/api/v1/modules/{moduleId}", p, None)
Pass the module ID as a string, and optionally supply a dictionary of extra parameters via p. [1]
Step 5. Parse the response. The returned payload will contain the module's metadata. If you need to go deeper and retrieve details about a specific field within that module, use the companion endpoint:
GET /api/v1/organizationFields/{moduleName}/{fieldId}
This getfielddetails operation accepts the module's name (not its numeric ID) alongside the field's identifier, and similarly supports an optional p parameter. [8]
Step 6. If you are building link generation or UI navigation on top of the module data, note that Zoho Desk record URLs follow the pattern:
https://desk.zoho.{dc}/agent/{portal}/tickets/details/{TicketId}
Your data centre suffix (com, eu, in, etc.) and portal slug are both required to construct valid deep links into the Desk interface. [5]
Common pitfalls
- Missing scopes. If your OAuth token lacks
Desk.basic.READ, the API will return an authorisation error even though the endpoint itself is correct. Double-check that all required Desk scopes are included when generating your token. [3] - Confusing
moduleIdwithmoduleName. Thegetmoduledetailsendpoint uses a numeric or uniquemoduleIdin the path, whilegetfielddetailsuses the stringmoduleName. Mixing these up will result in a 404 or unexpected response. [^1, ^8] - Optional
pparameter. PassingNoneforpis perfectly valid and simply omits any additional query parameters. Only supply it when you have specific pagination or filtering needs. [1]
What to check
- Confirm your OAuth token contains
Desk.basic.READ(and any other relevant Desk scopes) before making the request. [3] - Verify that the
moduleIdvalue you are passing matches the actual identifier returned by Zoho Desk — not a display name or API name string. [1] - If you also need field-level metadata, ensure you have the correct
moduleNamestring (not the numeric ID) ready for thegetfielddetailscall. [8]