Beam Help
Get help now

How-to · Zoho DESK

How to get view records in Zoho Desk

Retrieve all records from a specific view.

Retrieving records from a specific view in Zoho Desk is straightforward once you have the correct view ID and the right OAuth scopes in place. Here's everything you need to know to pull view records via the Zoho Desk API.


Why this matters


Zoho Desk organises tickets, contacts, and other entities into views — saved filters that group records by criteria like status, assignee, or priority. If you want to programmatically fetch the records belonging to one of those views (for reporting, automation, or integration purposes), you need to call the dedicated view-records endpoint rather than a general list endpoint. This is also useful when you want to mirror what an agent sees in their Desk queue inside a third-party tool or dashboard.


Step-by-step


Step 1. Confirm your OAuth scopes include Desk read access.


Before making any API call, verify that your connected Zoho Desk OAuth token was granted at minimum Desk.tickets.READ (or the relevant module scope such as Desk.contacts.READ). A full integration typically also includes Desk.basic.READ so the API can resolve organisation and department metadata. Without the correct scopes the request will return an authorisation error. [2]


Step 2. Resolve your Organisation ID.


Every Zoho Desk API call must be scoped to an organisation. If you have not stored the orgId yet, call the organisations endpoint first. Iterate over the returned data array, take the id field from the first item, and persist it for reuse. Once discovered, pass this value as the orgId header on all subsequent requests. [4][6]


Step 3. Identify the target View ID.


Navigate to Zoho Desk in your browser, open the view you want to query, and note the numeric ID in the URL — or retrieve it programmatically from the views list endpoint. You will pass this value as the view_id path parameter in the next step. [3]


Step 4. Call GET /api/v1/views/{view_id}/records.


Issue an authenticated GET request to the endpoint below, substituting your actual view ID:


GET /api/v1/views/{view_id}/records

The operation name is getviewrecords. The supported parameters are:


| Parameter | Description |

|-----------|-------------|

| view_id | The numeric ID of the view (path parameter) |

| p | Optional pagination or filter dictionary passed as query parameters |


A minimal Python call looks like this:


result = desk_api.get_view_records(view_id="123456", p={"limit": 50})

The client issues the GET request and returns the parsed JSON response containing the matching records. [3]


Step 5. (Optional) Retrieve only the record count.


If you only need to know how many records exist in a view — for example, to display a badge count or decide whether to paginate — use the count variant of the same endpoint:


GET /api/v1/views/{view_id}/records/count

The operation is getviewrecordscount and accepts the same viewid and p parameters. [7]


Step 6. Build direct links to the returned records.


Once you have the response, you can construct browser-navigable URLs for each record. For tickets the pattern is:


https://desk.zoho.{dc}/agent/{portal}/tickets/details/{TicketId}

For contacts and accounts, the base path follows {deskrecordsroot}/contacts or {deskrecordsroot}/accounts respectively. If no portal slug is available, the org ID is used in its place. [1][5]


Common pitfalls


  • Missing orgId header. Zoho Desk requires the organisation ID on every request. If the stored deskorgid is blank or stale, the API will reject calls. The auto-discovery pattern (fetching organisations on first use and persisting the result) prevents this silently failing. [4][6]
  • Incorrect scope combinations. Requesting Desk.tickets.ALL does not automatically cover contacts or tasks. Each module needs its own scope (Desk.contacts.READ, Desk.tasks.READ, etc.). Double-check the full scope list if you receive 403 errors on specific record types. [2]
  • Data-centre mismatch. Zoho hosts data in multiple regions (.com, .eu, .in, etc.). Ensure the base URL matches the data centre where the account was created — e.g. https://desk.zoho.eu for EU accounts — otherwise requests will fail or redirect unexpectedly. [5]

What to check


  • Scopes are present and active — confirm Desk.tickets.READ (and any other module scopes you need) appear in the token's granted scope list before going live. [2]
  • view_id is valid for your organisation — view IDs are org-specific; a view ID from one Zoho Desk portal will not work in another. [3]
  • Pagination is handled — if the p parameter supports a limit or page offset, verify your code loops through all pages so no records are silently dropped. [3][7]

---


*Beam Help is an independent expert support resource for Zoho products and is not official Zoho support. For billing or account-level issues, contact Zoho directly.*

Sources cited

  1. [1] server.py: build_zoho_links
  2. [2] config.py
  3. [3] GET /api/v1/views/{view_id}/records
  4. [4] server.py: get_zoho_api
  5. [5] GET /api/v1/views/{view_id}/records/count
  6. [6] server.py: apply_plan
Get View Records in Zoho Desk | Beam Help