Hello everyone!
Welcome back to another post in the Kaizen series!
This week, we will discuss different client types available in Zoho API Console, and when to use each.
 
When you register an app in Zoho API Console, you typically choose a client type based on how your application interacts with Zoho services. 
Let us discuss the available client types and how authorization is handled for each.
Available client types
- Server-based
 
- Client-based
 
- Self client
 
- Non-browser-based
 
- Mobile-based
1. Server-based
If you have a web-based application that runs on a dedicated HTTP server and interacts with Zoho services by calling Zoho APIs via that server, you must register your app with this client type. 
This client type is for applications that redirect the users to another URL on a web browser to authorize themselves, where they give consent to your application to use their data.
In other words, you must use this client type when you have a front-end web UI and require user intervention before your app can access user data via the dedicated server.
Consider that you are developing a web-based custom application. Users authorize that app via browser to allow their Zoho CRM data to be accessed and used by that application. 
  During the registration process in Zoho API Console, you would choose the "Web-based" client type. 
OAuth 2.0 would be used for user authentication, allowing your app to securely access and interact with Zoho CRM data on behalf of the users.
Here is a gist of what happens:
- Users visit your website where you have the Login with Zoho button.
 
- When a user clicks it, that user will be redirected to accounts.zoho.com with the details of your app such as client ID, scope, redirect uri, access type as the URL parameters.
 
- Your app must make an API call to Zoho Accounts with the client ID, scope,  redirect uri, and access type. Users are shown the data that your application wants to use.
 
- When users give their consent, Zoho redirects them back to your app.This will be the "Redirect URL" you give while registering your app.
 
- The redirect URL will have the authorization code(grant token) as one of the parameters, along with the location(user's domain).
 
- Your app must then make API calls from your web server to Zoho Accounts to generate access and refresh tokens with the generated grant token.
 
- You must store these tokens in your DB to access that user's data in Zoho CRM. While making API calls, you must send this access token in the header.
 
- Your app must also have the logic to regenerate access tokens from refresh tokens when the access token expires.
 
Note that your app must take care of storing user's details like email, organization ID, and tokens.
The following image shows the protocol flow.
When you use our SDK, all you have to do is, generate the grant token and initialize the SDK with the client details and this token. The SDK takes care of access token generation, refreshing it, and token storage.
2. Client-based applications
This client type is for applications that do not have a server and run exclusively on a web browser.
This is also called the Implicit flow as your app makes API calls to Zoho only when users are using your app.
This type of application loads data dynamically on the webpage, and accesses Zoho CRM data by making API calls via Javascript.
Consider the same example where there is a Login with Zoho button on your webpage.
Here is a gist of what happens when a user clicks it.
- Your app redirects the user to Zoho Accounts.
 
- Your app makes the authorization request with the client ID, redirect uri, scope, and response type as token.
 
- The user is shown the data that your webpage would use. 
 
- When the user gives consent, Zoho Accounts sends the access token to the redirect uri as a parameter, along with the expiry time and the location of user's data in Zoho's accounts server.
 
- You can include the "email" in your scope parameter in the access token request to get user's information. The response will have a parameter called id_token that will be in the header.payload.signature format. You need to decrypt the payload section of the parameter using the base-64 decryption algorithm to get user information.
 
- Your app must then make API calls to Zoho with this access token to fetch data.
 
- When the access token expires, your app must take care of regeneration and storage.
 

As the API calls are made from your domain to a different domain(zohoapis.com), for security reasons, the browser will throw the CORS error. So, your domain will be registered while registering your app, and Zoho will know to allow the API calls made from that domain.
 
As the tokens are available on the browser itself, we recommend handling them with care.
When you use our client-side JS SDK, it automatically generates a new access token upon expiry.
 
3. Self Client Applications
When your application does not have a redirect URL or a UI, but performs only a backend job, and does not need user intervention, then you must choose this client type.
A self client is often used when the application and Zoho services are operated by the same entity, and you want to enable secure communication between them. For example, you have an internal reporting tool and integrate it with Zoho Analytics. In this case, both the tool and Zoho Analytics are operated by the same entity. 
Similarly, consider that you have a legacy product management system and want to perform data sync between Zoho CRM and the system, then you must use the self client.
Here is a gist of what happens.
- You register your app as self client in Zoho API Console.
 
- You will get the client details such as ID and secret. 
 
- You provide the scopes required for your app to access CRM data.
 
- You will receive the grant token.
 
- Your app must then make API calls to Zoho Accounts to generate access and refresh tokens.
 
- Your app can then use this access token to make API calls to Zoho CRM and use data.
 
You can refer to our older  Kaizen post on this topic for more details.
 Note that self client apps can also use any of our server-side SDKs. As already said, the SDK takes care of access and refresh token generation, refreshing the access token, and token storage.
 
4. Non-browser applications
This client type is for devices that do not have a user agent such a web browser. A TV, for instance.
Let us consider an example involving a smart TV application that integrates with Zoho ShowTime. In this scenario, the smart TV application acts as a non-browser client.
Here is how authentication is handled:
- You must register your smart TV app in Zoho API Console with the type "Non-browser application".
 
- Users install a dedicated Zoho ShowTime application on their smart TVs.
 
- When users launch the Zoho ShowTime application on their smart TV, they are prompted to authenticate with their Zoho ShowTime account.
 
- When they successfully authenticate, Zoho Accounts sends the grant token to your app, along with the user-code, device-code and verification URL,The user must go to this verification URL on a browser and enter the user-code to grant permission to the app.
 
- Meanwhile, your app must poll the accounts server using the grant token to check if the token has been received.
 
- When the user enters the user code, Zoho Accounts sends the access token to your app.
 
- Your app can then use the access token to make API calls to Zoho. Your app must take care of token storage and renewals.
 
Here is the protocol flow. For more details, refer to this doc. 
5. Mobile-based applications
You must use this client type when you have developed an app exclusively for mobile devices. The protocol flow is similar to server-based application where a browser session is required for the users to authenticate.
Similar to server-side apps, mobile apps also need to handle redirection, token generation and storage.
If you use any of our Mobile SDKs, the SDK itself handles token generation and storage.
 
We hope you found this post useful. Let us know your thoughts in the Comment section or write to us at support@zohocrm.com.
 
Cheers!
- Recent Topics
- Getting error while while deleting from Activities Object- I am trying hit this endpoint: - DELETE https://www.zohoapis.in/crm/v2.1/Activities?ids=725820000001141076%2C725820000001143056 HTTP/1.1 But getting the below error: - {"code":"INVALID_REQUEST_METHOD","details":{},"message":"The http request method type 
- Unveiling Zoho CRM's New User Interface - The NextGen UI- Hello Everyone, Last Wednesday, May 14th,2025, we announced the public release of Zoho CRM For Everyone, our most significant update yet. This release brings a modernized CRM experience with a redesigned user interface, new capabilities for cross-functional 
- Product Updates in Zoho Workplace applications | April 2025- Hello Workplace Community, Let’s take a look at the new features and enhancements that went live across all Workplace applications this April. Zoho Mail Filters for incoming emails in Shared Mailbox Simplify the management of incoming emails in your Shared 
- Deluge script for purchase receive- Trying to create purchase receives.... receive.put("purchaseorder_id",poId); // purchase order associated ... receive.put("line_items",itemList); result = zoho.books.createRecord("purchasereceives", orgId, receive); info result;...... {"code":9,"message":"Purchase 
- Renew an expired subscription- Hey Zoho officer, My subscription was expired yesterday, but I did not notice until just now. How can I renew the subscription even it is expired? The website is really important for our publicity. So I hope I can still review the domain and website. Thanks! 
- How to normalize CRM module when integrating with Survey?- This question is about the problem with many-to-many relationships and Survey. One of the things our organization does is track people in our program and their jobs. We get new information from the people three times annually through Zoho Surveys. Survey 
- ZOHO CRM reverting contacts details- Hi! Anyone else had a problem where +- at 20:00 NZT email addresses and company details reverted back to the ones that was previous changed? We had about +- 30 odd notification come through last night and had to go and change all back manually. 
- Announcing Zoho Community Developer Bootcamps in India – Extensions- Hey everyone! We're back with another line-up of Zoho Community Developer Bootcamps in India! Following the success of the first leg of bootcamps on Extensions, we're now ready with the second leg. These bootcamps focus on empowering developers of all 
- ZOHO Sheet View for Activities- Hello I am beginning to look at importing previous events into activities as utilizing events as timeslips for engagements, we have added fields such as duration, billable, etc. However to use Events on a regular basis would require the ability to use 
- Invalid URL error when embedded sending url into iframe for my website when using in another region- Hi team, My site is currently working on integrating your signature feature as part of the system functionality, it's working great but recently there's been a problem like this: After successfully creating the document, i will embed a sending url into 
- Custom Serial numbers in Inventory tied to customers- Hello, We have both software and hardware serial numbers that we need to track for active customers in the field. We do not know the serial numbers for the software until the customer buys it as its not a stock item but something we order and deploy for 
- Issue with inventory and shopify- Hello! We're having some issues with Inventory not synchronizing all our products with our shopify store. We've tried multiple times to synchronize them. We have multiple locations and it seems to just be getting a part of the inventory. When we sell 
- Automatic Pick LIst- The pick should have the feature to send you to the FIFO location and tell you from wich bin you should get the product. Depending on FIFO LIFO or what we choose 
- Picker users- Hi FOr bin location we are starting to use Android app. The users are allowed to chance the asignee, but they are the Asigneed persons. We should have the avility to choose or setup these fields. 
- Zoho Inventory MobileApp compatible with barcode scanners such as Zebra- Hi, Although the Zoho Inventory App is working with a scanner mode taken directly through the cell phone which I do not consider it as efficient, I would like to know when are you planning an update on the app so it can be compatible with bar code scanners 
- More Payment Gateways For South Africa- Hello, please add more payment gateways that cater for South Africa to the Zoho ecosystem. Yoco - pay now with card (integrated but there is a problem) Others to consider Payflex.co.za - pay now with card or pay later using credit from payflex Float.co.za 
- Sync Zoho Docs and Google Drive- Sync Zoho Docs and Google Drive -  how can I do it? 
- Is it possible to link a CRM field or Zoho User to a ticket auto assign function.- Dear Support, I have a unique situation at our company. So I know it might be able to link a ticket to the client account owner from the CRM. However, is it also possible to link an email field, username or other field in the CRM to a new ticket created 
- Drill Down - Pivot Table- Is there anyway to have drill down options in pivot tables like in the chart function? 
- Allow Zoho form to send to one of our ogranizations groups- All emails from the form submission are being held for moderation. I have permissions set to organization members, and I think I have the forms setup in our DMARC 
- Kanban view - which modules support this view?- Recently (a few days ago), we started exploring Zoho Recruit and like to use Kanban view to visualise the data in different modules. I just found out from emailing Zoho Support that they need to enable Kanban view for different modules (why?). Which modules 
- Email notification for followers- Is there a way to enable email notification for followers of a support ticket? ie: Ticket #123 is owned by Agent#1, Agent#2 adds themselves as a follower. Whenever ticket #123 receives an email from the customer, Agent#1 receives an email. Agent#2 would 
- Remove the dot menu and + sign on sub form- If I don't want the user to be able to add more entries on a subform, am I able to remove the dot menu and the + sign? 
- Writing Checks to Employees for Reimbursable Expenses- I couldn't find a way to write a check through books or expense to an employee for reimbursable expenses. The expense created an entry in the system with a debit (expense) credit (liability). I entered a bill and used the liability account so it would 
- Peppol Malaysia API- Hi Zoho Books, my country Malaysia will going to implement "Peppol" (E-Invoicing), starting 1 Jul 2025 for all businesses. The government intends to provide API for accounting app. The workflow involves creating an invoice from accounting app, triggers 
- Error "The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required"- Hi, I'm trying to send an email via the SMTP server using C# code but getting the following error: "The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required" I know the username 
- Free webinar! The Zoho Sign Masterclass: The basics, latest features, and mobile apps- Hi, Are you new to Zoho Sign or looking to brush up on its capabilities? This webinar will help you master Zoho Sign from the ground up, covering everything from the basics to the latest features. Whether you're an individual managing personal documents, 
- Home and Reports Tabs Not Loading- Hello, I've been trying to view the home and report tabs since yesterday but the same issue persists. While the Home view appears, the data will not load (see screenshot). The Report view does not load at all. Clicking the tab elicits no response; the 
- Introducing the Zoho CRM Lead Magnet plugin for Wordpress- In this digital era, websites are the most important source of leads. That means your CRM system should be well integrated with your website to contextually capture each and every visitor to turn them into a lead. Introducing the Zoho CRM Lead Magnet plugin for WordPress.  The plugin lets you to: Create webforms using Zoho CRM forms/ Contact form 7 plugin Embed them in your website hosted using Wordpress Automatically capture leads into Zoho CRM with zero attenuation. Not only is the integration 
- Team Modules in Zoho CRM: Empower Every Team, Break Silos and Boost Collaboration- Hello Everyone, The ultimate goal of every business is to achieve customer delight—and achieving customer delight cannot happen with the effort of a single person or team. At Zoho CRM, we believe that it’s a shared mission that spans across your entire 
- Trying to integrate gmail but google keeps blocking Zoho access for integration??- hi i am trying to integrate a gmail account so can track/access business emails this way. I have followed the instructions but after selecting my email account it gets re-routed to this message (screengrab below) Can anyone advise a way around this or 
- Zoho Projects - Give Project access to developer (external)- We have a client using Zoho Projects and would like to invite several external users and assign the Projects because the Project tasks are outsourced to other companies. What is the best way to give access to external Users and is there any limitations 
- Introducing the Germany Tax Edition !- Whether you're operating within Germany, trading outside the country, or dealing with customers within or outside the EU, our new Germany Tax Edition makes navigating the complexities of VAT management a cakewalk. Our Germany tax edition allows you to 
- Centralized Organization Information Management in Zoho One- Dear Zoho One Support, I'm writing to propose a feature that would significantly improve the user experience and streamline data management within Zoho One. Current Challenge: Currently, managing organization information across various Zoho One apps requires 
- Including attachments with estimates- How can attachments be included when an estimate is sent/emailed and when downloaded as a .pdf? Generally speaking, attachments should be included as part of an estimate package. Ultimately, this is also true for work orders and invoices. 
- Add Hebrew Support for Calendar Language in Zoho Forms- Dear Zoho Forms Team, Greetings! We are using Zoho Forms extensively and appreciate its versatility and ease of use. However, we’ve noticed that the Calendar Language settings currently do not include Hebrew as an option. We would like to request the 
- Company centric layout- Hey everyone, I want to have an "account-centric" Zoho, where the main part is the "Account" and other parts like "Contacts", "Deals", "Projects" are linked to this "Account". Tricky part is, that I have different layouts for different departments, and 
- CRM HAS BEEN SOOO SLOW For Days 05/15/25- I have fantastic Wifi speed and have zero issues with other websites, apps, or programs. It takes an excruciatingly amount of time to simply load a record, open an email, compose an email, draft a new template, etc. Am I in a subset/region of subscribers 
- Announcing Zoho Community Developer Bootcamps in India – Catalyst by Zoho- Hey everyone! Following the success of the first set of bootcamps on SalesIQ Zobot and Extensions last year, we're ready for the next set of bootcamps—this one dedicated to Catalyst by Zoho! These bootcamps are aimed to empower developers to build, scale, 
- Introducing the Zoho Show Windows app- Hello everyone! We’re excited to announce the launch of the Zoho Show app for Windows! You can now create, access, collaborate on, and deliver presentations right from your desktop. The Windows app brings you all the powerful features you’re familiar 
- Next Page