Beam Help
Get help now

How-to · Zoho DESK

How to get field options in Zoho Desk

Retrieve all available options for a dropdown or picklist field.

Retrieving the available options for a custom or standard field in Zoho Desk is straightforward via the organization fields API — you need the module name, the field ID, and the right OAuth scopes in place.


Why this matters


When you're building integrations, automations, or reporting dashboards on top of Zoho Desk, you often need to know the exact set of allowed values for a picklist or dropdown field before you can safely write or validate data. Fetching field options programmatically means your integration stays in sync with whatever an admin has configured in Desk, without hard-coding values that could change. This is also essential when populating UI dropdowns in a custom portal or validating incoming webhook payloads.


Step-by-step


Step 1. Confirm your OAuth token includes the correct Zoho Desk scopes before making any field-related calls. At minimum you'll need Desk.settings.READ in your token's scope list, since field metadata sits under the settings surface of the API. [4]


Step 2. Identify the two path parameters you'll need: moduleName (for example, tickets, contacts, or accounts) and fieldId (the unique identifier of the field whose options you want to retrieve). Both are required — the endpoint will not accept wildcards. [1]


Step 3. Send a GET request to the following endpoint, substituting your values for {moduleName} and {fieldId}:


GET /api/v1/organizationFields/{moduleName}/{fieldId}/options

The endpoint also accepts an optional query-parameter object (p) if you need to pass pagination or filter hints. [1]


Step 4. If you're using the Python client wrapper our team works with, the call looks like this:


options = api.get_field_options(
    moduleName="tickets",
    fieldId="<your_field_id>",
    p={}          # optional; pass None or {} if not needed
)

The wrapper issues the GET request and returns the parsed response body directly. [1]


Step 5. Inspect the response. The returned payload will contain the list of option objects for that field. Each option has its own optionId, which you'll need if you later want to update a specific option via PATCH /api/v1/organizationFields/{moduleName}/{fieldId}/options/{optionId}. [6]


Step 6. Make sure your API client has a valid orgId set. Zoho Desk routes all organization-scoped requests through the org identifier. If your client was initialised without one, it should auto-discover the org ID by calling the organizations endpoint first and then persist it for subsequent calls. [7]


Common pitfalls


  • Missing or wrong scope. If your OAuth token was issued without Desk.settings.READ (or the broader Desk.settings.ALL), the API will return a 401 or permission error. Double-check the full scope list in your OAuth configuration and re-authorise if needed. [4]

  • 401 authentication errors. A 401 response usually means the access token has expired. The client should automatically refresh using the stored refresh token; if it doesn't, re-connect your Zoho integration and retry. [5]

  • Wrong moduleName casing or spelling. Zoho Desk is case-sensitive about module names in the path. Use lowercase values like tickets, contacts, or accounts as documented — an incorrect module name will result in an "invalid module" error. [5]

  • Missing orgId. If the orgId is blank when the request is made, the Desk API will reject it. Ensure the org ID is discovered and stored before calling field-option endpoints. [7]

  • Confusing fieldId with field API name. The path requires the numeric or UUID field identifier, not the human-readable API name you might see in the Desk UI. Retrieve the field list first via the organization fields endpoint to map names to IDs before calling the options sub-resource. [1]

What to check


  • Scope coverage: Verify that Desk.settings.READ (or Desk.settings.ALL) appears in the active OAuth token's scope string before making the call. [4]
  • Correct IDs in the path: Confirm that both moduleName and fieldId are accurate and that orgId is populated on your API client instance. [^1, ^7]
  • Option IDs in the response: If you plan to update any option afterward, note the optionId values returned here, since the update endpoint requires them explicitly. [6]

---


*Beam Help provides independent expert support for Zoho — we are not official Zoho support. For platform-level issues, always cross-reference the Zoho Desk API documentation directly.*

Sources cited

  1. [1] GET /api/v1/organizationFields/{moduleName}/{fieldId}/options
  2. [2] server.py: build_zoho_links
  3. [3] server.py: get_zoho_api
  4. [4] config.py
  5. [5] server.py: _clarifying_question_from_tool_error
  6. [6] PATCH /api/v1/organizationFields/{moduleName}/{fieldId}/options/{optionId}
  7. [7] browser_automation.py
Get Field Options | Beam Help