Listing all tickets in Zoho Desk is straightforward via the REST API — a single GET request to the tickets endpoint returns your full ticket list, provided your OAuth token carries the correct scopes.
Why this matters
When you need a programmatic overview of every support ticket in your Zoho Desk portal — for reporting, bulk processing, or integration work — you must call the dedicated list endpoint rather than relying on manual UI exports. Getting the authentication scopes and organisation ID right upfront saves significant debugging time. This guide is produced by Beam Help, independent expert support for Zoho (not official Zoho support).
Step-by-step
Step 1. Ensure your OAuth token includes the necessary Zoho Desk scopes before making any API call. At minimum you need Desk.tickets.READ; for full create/update/delete capability you would also include Desk.tickets.ALL, Desk.tickets.WRITE, Desk.tickets.CREATE, Desk.tickets.UPDATE, and Desk.tickets.DELETE. [2]
Step 2. Confirm your Desk organisation ID (orgId) is available. When a Zoho Desk API client is initialised, the system attempts to auto-discover the org ID by calling the organisations endpoint if one has not already been stored. The discovered ID is then persisted and attached to subsequent requests as the orgId header. If you are setting this up manually, retrieve your org ID from the Zoho Desk admin panel or via the organisations endpoint, then store it for reuse. [8]
Step 3. Send the following HTTP request to list all tickets:
GET /api/v1/tickets
Pass any optional query-string parameters in the request (represented as p in the client implementation) to filter or paginate results — for example, page number or sort order. The operation name for this call is listalltickets. [4]
Step 4. Parse the response. The API returns ticket records in a structured payload. When displaying results to users, focus on key fields such as ticket subject, status, assigned agent, and contact name — skipping internal IDs and empty values keeps the output readable. [5]
Step 5. To navigate directly to a specific ticket in the Zoho Desk web interface, construct a deep-link URL using the pattern:
https://desk.zoho.{dc}/agent/{portal}/tickets/details/{TicketId}
Replace {dc} with your data-centre suffix (e.g. com, eu, in), {portal} with your portal name, and {TicketId} with the ticket's ID from the API response. If you only need the general tickets list view rather than a specific record, the fallback URL follows the pattern {deskrecordsroot}/tickets. [3] [1]
Step 6. For conversational or assistant-driven workflows, the correct tool to invoke for a broad listing request (e.g. "show me all tickets") is listalltickets, while filtered queries such as "show open tickets" should route to search_tickets with an appropriate status parameter. [6]
Common pitfalls
- Missing
orgIdheader. Zoho Desk requires the organisation ID on every API request. If it is absent or incorrect, calls will fail with an authorisation or not-found error. Always verify the org ID is being injected into the client before making ticket calls. [8] - Insufficient OAuth scopes. Requesting tickets with only
Desk.basic.READwill not work — you must explicitly includeDesk.tickets.READorDesk.tickets.ALLin your scope string. Scopes are comma-separated and must be declared at token-generation time. [2] - Wrong data-centre domain. If your Zoho account is on the EU or IN data centre, the base URL changes from
https://desk.zoho.comtohttps://desk.zoho.euorhttps://desk.zoho.inrespectively. Using the wrong domain will result in authentication failures. [3] - Confusing list vs. search. A plain
GET /api/v1/ticketsretrieves all tickets, but if you need filtered results (by status, assignee, date range, etc.) you should use the search endpoint instead. Mixing these up can return more data than expected or miss records entirely. [4] [6]
What to check
- Scopes confirmed: Verify that
Desk.tickets.READ(at minimum) appears in your active OAuth token's scope list before calling the endpoint. [2] - Org ID present: Confirm the
orgIdvalue is correctly stored and being sent with each request — check your connection record or log the outgoing headers. [8] - Correct base URL for your region: Make sure the API domain matches your Zoho data centre (
zoho.com,zoho.eu,zoho.in, etc.) to avoid silent routing failures. [3]