Retrieving service preferences in Zoho CRM is done through a single authenticated GET request to the /settings/service_preferences endpoint, which returns the current service configuration for your organisation.
Why this matters
When building integrations or automations on top of Zoho CRM, you often need to inspect how services are configured before making downstream decisions. The service preferences endpoint gives you a programmatic snapshot of those settings without navigating the UI. This is especially useful during onboarding audits, environment comparisons, or when debugging unexpected service behaviour. As independent expert support (not official Zoho support), Beam Help documents these patterns so your team can move faster.
Step-by-step
Step 1. Ensure your user has an active, authenticated Zoho CRM connection. Before any API call is made, the system checks the stored connection record and automatically refreshes the OAuth token if it is within 120 seconds of expiry — so you should never need to manually trigger a refresh mid-request. [7]
Step 2. If the access token does need refreshing, the OAuth layer exchanges the stored refresh token for a new one and updates both accesstoken and tokenexpiresat in the connection record. Confirm that accesstoken is present in the response before proceeding; if it is absent, the refresh has failed and the call should be aborted. [8]
Step 3. Instantiate your Zoho CRM API client using the authenticated connection. Pass the apidomain, the current accesstoken, and a token_refresher callback so that any mid-request expiry can be handled transparently without interrupting the call. [2]
Step 4. Call the service preferences endpoint by issuing a GET request to /settings/service_preferences using API version 6. In Python this looks like:
def get_service_preferences(self):
return self.c.request("GET", "/settings/service_preferences", version=6)
The method returns the full service preferences payload for your CRM organisation. [1]
Step 5. Parse the response body. The returned data reflects the current services configuration. Store or log the result as needed for your audit or integration logic. [1]
Common pitfalls
- Missing or expired token. If
accesstokenis not present after a refresh attempt, the API client will have no valid credentials and the request will fail with a 401. Always validate that the token refresh returned a properaccesstokenkey before proceeding. [8]
- Wrong API version. The
getservicepreferencescall explicitly targets version 6 of the Zoho CRM API. Using a different version number may return a 404 or an unexpected response structure. [1]
- No connection record found. If the user has not completed the OAuth flow,
getzohoconnectionreturnsNoneand the API instance cannot be created. Handle this case by prompting the user to reconnect before attempting any settings retrieval. [2] [7]
- Domain mismatch. Zoho operates across multiple data centres (e.g.,
.com,.eu,.in). Theapi_domainstored in the connection record must match the data centre where the CRM organisation is hosted, otherwise requests will be routed incorrectly. [2]
What to check
- Token validity: Confirm that
accesstokenis present andtokenexpires_atis in the future before the request is dispatched. [7] - API version: Verify that your client is explicitly passing
version=6when calling/settings/service_preferences. [1] - Connection record integrity: Check that
apidomainandrefreshtokenare both populated in the stored connection; a missingrefresh_tokenwill prevent recovery from any token expiry. [7] [8]