Beam Help
Get help now

How-to · Zoho DESK

How to delete a field option in Zoho Desk

Remove options from dropdown and picklist fields.

Zoho Desk lets you remove individual picklist or dropdown choices from a field — or delete an entire custom field — through its REST API. Here is how to do both cleanly using the Zoho Desk API.


Why this matters


When your support workflow evolves, stale field options clutter agent forms and skew reporting. Removing a single option keeps the picklist tidy without touching the field itself. If the whole field is no longer needed, a separate endpoint lets you wipe it entirely. As independent expert support for Zoho (not official Zoho support), Beam Help walks you through both paths below.


Step-by-step


Path A — Delete a single field option


Step 1. Gather the three identifiers you will need: the module name (e.g., tickets, contacts), the field ID of the parent field, and the option ID of the specific choice you want to remove. You can retrieve these by calling the organization fields list endpoint for the relevant module first.


Step 2. Send a DELETE request to the option-level endpoint. The path follows this pattern:


DELETE /api/v1/organizationFields/{moduleName}/{fieldId}/options/{optionId}

Replace {moduleName}, {fieldId}, and {optionId} with the real values you collected in Step 1. [1]


Step 3. In Python (or any HTTP client), the call looks like this:


client.delete_field_option(
    moduleName="tickets",
    fieldId="<your_field_id>",
    optionId="<your_option_id>"
)

A successful response confirms the option has been permanently removed from that field's picklist. [1]


---


Path B — Delete an entire custom field (tickets module)


Step 1. Confirm the field you want to remove is a custom field — standard/system fields cannot be deleted via the API.


Step 2. Note the field_id of the custom ticket field. Then issue a DELETE to:


DELETE /api/v1/ticketFields/custom/{field_id}

[5]


Step 3. In Python:


client.delete_custom_field(field_id="<your_field_id>")

This permanently removes the field from the tickets module. [5]


---


Path C — Delete a custom field across other modules


For modules beyond tickets (for example, contacts or accounts), a different endpoint handles field deletion:


DELETE /api/v1/organizationFields/{moduleName}/{fieldId}

Pass the correct moduleName and fieldId as path parameters. [2]


client.delete_custom_field_2(
    moduleName="contacts",
    fieldId="<your_field_id>"
)

[2]


---


OAuth scopes required


Your connected Zoho Desk OAuth token must include settings-level permissions. Specifically, the Desk.settings.DELETE scope (and ideally Desk.settings.ALL) must be granted, otherwise the API will return a 401 or permission error. [6]


---


Common pitfalls


  • 401 authentication errors — If Zoho rejects the request with a 401 status, your OAuth token has likely expired or is missing the required Desk.settings.DELETE scope. Reconnect the integration and confirm the scope list before retrying. [6]
  • Wrong endpoint for the module — The ticket-specific endpoint (/api/v1/ticketFields/custom/{field_id}) only applies to the tickets module. For contacts, accounts, or other modules, use the organization fields endpoint with moduleName in the path instead. Using the wrong endpoint will return an invalid module error. [1][2][5]
  • This is permanent — Deleting a field option or an entire custom field is a high-risk, irreversible schema change. There is no soft-delete or recycle bin. Export any data stored in that field before proceeding. [7]
  • Option ID vs. field ID confusion — When removing just one picklist choice, you need *both* the parent fieldId and the child optionId. Passing only the field ID will target the whole field, not a single option. [1]

---


What to check


  • Confirm the option or field is gone by re-fetching the field definition via GET /api/v1/organizationFields/{moduleName}/{fieldId} and verifying the option no longer appears in the response.
  • Verify your OAuth scopes include Desk.settings.DELETE or Desk.settings.ALL to avoid silent permission failures on future calls. [6]
  • Check existing ticket records that previously used the deleted option — those records may now show a blank or null value for that field, which could affect views, automations, or reports that filter on that choice.

Sources cited

  1. [1] DELETE /api/v1/organizationFields/{moduleName}/{fieldId}/options/{optionId}
  2. [2] DELETE /api/v1/organizationFields/{moduleName}/{fieldId}
  3. [3] server.py: _clarifying_question_from_tool_error
  4. [4] DELETE /settings/fields/{fid}
  5. [5] DELETE /api/v1/ticketFields/custom/{field_id}
  6. [6] config.py
  7. [7] delete_field
  8. [8] server.py: apply_plan
Delete Field Option | Beam Help