Retrieving user details from the Zoho Desk Help Center requires a straightforward API call once you have a valid OAuth access token and know both your Help Center ID and the target user's ID. Here's how to do it correctly, step by step.
Why this matters
When building integrations, portals, or automation workflows on top of Zoho Desk, you often need to look up a specific Help Center user's profile — for example, to verify registration status, personalise content, or sync data with another system. The Zoho Desk Help Center API exposes a dedicated endpoint for this purpose. As independent expert support (not official Zoho support), Beam Help walks you through the exact call and the surrounding setup required to make it work reliably.
---
Step-by-step
Step 1. Obtain a valid OAuth access token.
Before any API call, you need a Bearer token scoped to Zoho Desk. Authenticate via Zoho's OAuth flow and retrieve the accesstoken from the response. The token endpoint lives at https://accounts.zoho.{DC}/oauth/user/info, where {DC} is your data-centre suffix (e.g., com, eu, in). Store the tokenexpires_at value so you know when to refresh. [1]
Step 2. Ensure your Desk organisation ID is available.
Every Zoho Desk API call requires an orgId header. If you haven't stored it yet, call the organisations list endpoint and read the id field from the first item in the returned data array. Persist this value so you don't need to rediscover it on every request. [2][8]
Step 3. Refresh the token proactively if it is near expiry.
To avoid mid-request 401 errors, check whether the current time is within 120 seconds of tokenexpiresat. If so, exchange the stored refreshtoken for a new access token before proceeding, and update your stored credentials with the fresh accesstoken and new expiry. [5]
Step 4. Call the Get User Details endpoint.
Issue an HTTP GET request to:
GET /api/v1/helpcenter/{helpcenter_id}/users/{user_id}
Replace {helpcenterid} with your Help Center's identifier and {userid} with the ID of the user whose details you want. Pass your access token in the Authorization: Bearer <token> header, and include the orgId header obtained in Step 2. Any additional query parameters can be supplied via the p dictionary. [7]
A minimal Python example:
def get_details_of_user(self, helpcenter_id: str, user_id: str, p: dict = None):
return self.c.request(
"GET",
f"/api/v1/helpcenter/{helpcenter_id}/users/{user_id}",
p,
None
)
Step 5. Parse and display the response.
The response will contain the user's profile fields. When presenting this data to end users, display key fields — such as name, email, and status — in a clear, readable format. Skip empty values and avoid exposing internal IDs directly in user-facing output. [3]
---
Common pitfalls
- Missing or stale
orgId: If thedeskorgidis not stored or is an empty string, the API call will fail. Always verify the org ID is populated before making requests, and trigger the auto-discovery flow if it is absent. [2][8]
- Expired access token: Tokens typically expire after 3,600 seconds. If you skip the proactive refresh check, you risk a
401mid-request. Build the 120-second skew buffer into your token validation logic. [5]
- Data-centre mismatch: The OAuth user info URL and API domain both depend on your Zoho data centre. Using the wrong DC suffix (e.g.,
cominstead ofeu) will result in authentication failures. Confirm yourZOHO_DCconfiguration matches the region where your Desk account is hosted. [1]
- Field name variations: User info fields such as
orgid,organizationid, andZGIDcan differ depending on the data centre. Always implement fallback lookups rather than assuming a single field name will be present. [1]
---
What to check
- Confirm the Help Center ID is correct — verify it matches the Help Center visible in your Zoho Desk portal settings, not a generic portal or department ID.
- Verify the access token scope — ensure the OAuth token was granted the necessary Desk scopes to read Help Center user data before making the call. [1][2]
- Validate the API response structure — confirm the returned object contains the expected user fields and that no error key is present before passing the data downstream. [7]