Kaizen #16 - Python SDK

Kaizen #16 - Python SDK

Hello everyone!
Welcome back to another week of Kaizen!
This week, we will discuss the Python SDK.

What is the Python SDK for Zoho CRM?

Python SDK allows you to create client Python applications that you can integrate with Zoho CRM, effortlessly. It serves as a wrapper for the REST APIs, thus making it easier to use the services of Zoho CRM.

Here is a sample of how the SDK acts as a middle ware between Zoho CRM and a client Python Application.




What can you do with the Python SDK?
  • Exchange data between Zoho CRM and the client application where the CRM entities are modelled as classes.
  • Authenticate your application easily every time you sync data between Zoho CRM and your application, as the SDK takes care of generating the access/refresh tokens automatically.

Environment Setup
How to Start using the Python SDK?

Follow the below steps:
  • Step-1: Register your application (Self Client or Web-based client)
  • Step-2: Install the SDK
  • Step-3: Import the SDK in your project
  • Step-4: Initialize the SDK
    4.a. Choose the token persistence method
    4.b. Setup the configuration dictionary
    4.c. Generate the tokens
  • Step-5: Connect to Zoho CRM through the available methods
Let us now discuss these steps in detail.

Step-1: Register your application
All the Zoho CRM APIs are authenticated by the OAuth2.0 standards. It is mandatory to authenticate your application with Zoho.
You can register your application either as a Self Client (single user app) or a web-based app (multiple users app).

1.a. Self Client
  • Go to https://api-console.zoho.com.
  • Click ADD CLIENT.
  • Choose the Client Type as Self Client, and click CREATE.
  • You will receive a client ID and a client secret upon successful registration.

1.b. Web-based Client
  • Go to https://api-console.zoho.com.
  • Click ADD CLIENT.
  • Choose the client as Web based and click CREATE NOW.
  • Specify the client name, homepage URL of your application's UI, and a redirect URI to which you want to redirect the users after they grant consent to your application.
  • Click CREATE.
  • Your client ID and client secret will be displayed.
Step-2: Install the SDK

You can install the Python SDK through pip. Pip is a tool for dependency management in Python.

To install the SDK, run the below command in your Python IDE.

pip install zcrmsdk

This command installs the Python and creates a package named zcrmsdk in the installation directory of python (Example: '/Library/Python/2.7/site-packages').

Note
You must also have the Python requests installed. Run the command pip install requests to install them.

Step-3: Import the SDK in your project

Use the below statement in your IDE to import the downloaded SDK in your code.

import zcrmsdk

You can also set an alias for the imported SDK module. Run the below command to import the SDK in a custom name.


import zcrmsdk as your_custom_name

Note that you must use this name while referencing to any class in the SDK.

Example:

import zcrmsdk as my_zoho_sdk
my_zoho_sdk.ZCRMRestClient.initialize(config)

Step-4: Initialize the SDK 

Initializing the SDK involves the following steps.

  • Step 4.a - Choosing the token persistence method
  • Step 4.b - Setting up the configuration dictionary
  • Step 4.c - Generating the tokens

4.a. Token Persistence
Your application should retain tokens (grant, access, and refresh tokens) to automate the process of data sync between your python application and Zoho CRM.

You can persist (store) the tokens in three ways.
  1. MySQL Persistence (default)
  2. File Persistence
  3. Custom DB Persistence

4.a.1. MySQL Persistence

When you want to store the tokens in the MySQL DB, run the below command to install the necessary package.

pip install mysql-connector

In this case, you must include the following keys in the configuration dictionary (discussed in the next section), along with other mandatory keys.

"mysql_username": "root",
"mysql_password": "*****",
"mysql_port":" port_number"

Note
When you use MySQL persistence, ensure that
  • MySQL runs in the same machine serving at the mentioned port (The default port is 3306.)
  • There is a database named zohooauth.
  • There is a table name oauthtokens with the columns useridentifier (varchar(100)), accesstoken (varchar(100)), refreshtoken (varchar(100)) and expirytime (bigint).

4.a.2. File Persistence
If you want to store the tokens in a file, you can create a file named zcrm_oauthtokens.pkl and provide the absolute path of the directory containing this file in the below key of the configuration array.

"token_persistence_path": "path_to_the_folder_containing_the pkl_file"

If you do not create this file, the SDK itself creates this file in the path you have specified, and persists the tokens there.
Note: This method is recommended only for self client apps.

4.a.3. Custom DB Persistence
To use custom DB persistence, you must
  • Implement AbstractBaseClass (AbstractZohoOAuthPersistence from OAuthClient.py), and write a custom implementation of the following functions:
    get_oauthtokens(user_email)
    save_oauthtokens(oauthtokens)
    delete_oauthtokens(user_email)
Include the following keys in the configuration dictionary, along with other mandatory keys.

"persistence_handler_class": "ClassName of the custom implementation",
"persistence_handler_path": "Absolute path of the module (.py file)"

4.b. Configuration dictionary
The below table contains the list of keys you must include in the configuration dictionary based on the type of persistence.

Mandatory keys

File Persistence
MySQL Persistence
Custom DB Persistence
client_id
client_id
client_id
client_secret
client_secret
client_secret
redirect_uri
redirect_uri
redirect_uri
token_persistence_path
mysql_username
persistence_handler_class
--
mysql_password
persistence_handler_path
--
mysql_port
--
currentUserEmail
currentUserEmail
currentUserEmail

Optional keys

File Persistence
MySQL Persistence
Custom DB Persistence
applicationLogFilePath
applicationLogFilePath
applicationLogFilePath
sandbox
sandbox
sandbox
access_type
access_type
access_type
accounts_url
accounts_url
accounts_url
apiBaseUrl
apiBaseUrl
apiBaseUrl
apiVersion
apiVersion
apiVersion

Where,
  • client_id, client_secret, and redirect_uri - Client details you received after registering your application. For self client apps, you can pass a dummy value for the redirect uri.
  • token_persistence_path - The path to store the OAuth tokens in the file. This key is mandatory if you want to use file persistence. If you include this key, this method takes precedence over other persistence methods.
  • mysql_username, mysql_password, mysql_port - The MySQL username, password, and the port, respectively.
  • persistence_handler_class - Name of the class of the custom implementation for persistence. This key is mandatory if you want to use custom persistence.
  • persistence_handler_path - Absolute path of the module (.py file). This key is mandatory if you want to use custom persistence.
  • applicationLogFilePath - The absolute path to log the exceptions during the usage of the SDK.
  • sandbox - Boolean key to make API calls to the sandbox environment. The value true makes API calls to the sandbox. Default value is false.
  • access_type - Must be set to offline as the SDK does not support online OAuth client, now.
  • accounts_url - The domain-specific accounts URL from which you generate the tokens.
  • apiBaseUrl - The domain-specific API URL from which you make API calls. For users from domains other than the US, this key is mandatory.
  • apiVersion - Represents the version of the CRM APIs. The value is v2.
  • currentUserEmail - The email ID of the current user. When you do not specify this value, the SDK throws an exception. This key is mandatory in the configuration dictionary for self-client apps.

For web-based apps, set the user Email ID in the current thread as an attribute.

threading.current_thread().setattr('current_user_email','user@email.com')

Below is a configuration dictionary with all the keys. 

config = {
"apiVersion":"v2",
"currentUserEmail":"email@gmail.com"
"sandbox":"False"
"applicationLogFilePath":"",
"client_id":"1000.3xxxxxxxxxxxxxxxxxxxxxxxxX0YW",
"client_secret":"29xxxxxxxxxxxxxxxxxxxxxxxxxxxxx7e32",
"redirect_uri":"https://www.abc.com",
"token_persistence_path":"/Users/Zoho/Desktop/PycharmProjects",//For File Persistence
"access_type":"offline",
//Use the below keys for MySQL DB persistence
"mysql_username":"",
"mysql_password":"",
"mysql_port":"3306",
//Use the below keys for custom DB persistence
"persistence_handler_class" : "Custom",
"persistence_handler_path": "/Users/Zoho/Desktop/PythonSDK/CustomPersistance.py"
}

Now that you have created and registered your app with Zoho, you must authenticate it. 
Pass the configuration dictionary in the method ZCRMRestClient.initialize(config) and authenticate your app.

4.c. Generating the tokens

As the V2 Zoho CRM APIs follow the OAuth2.0 protocol, it is mandatory to authorize the OAuth2.0 app before using the SDK functions with an access token.
You can generate an access token from a grant token.
You can generate the grant token in two ways based on the type of client.

For Self Client Applications
  1. Log in to Zoho and go to Zoho Developer Console.
  2. Select your Self Client.
  3. Provide the necessary scopes separated by commas, along with the scope aaaserver.profile.READ.
  4. Select the Time Duration from the drop-down. This is the time the grant token is valid for.
  5. Provide a description for the scopes. Click GENERATE.
  6. Copy the grant token.

For Web-based Applications

It is the responsibility of your client app to generate the grant token for the users trying to login.
Your Application's UI must have the Login with Zoho option to open the grant token URL of Zoho, which would prompt for the user's OAuth2.0 authorization.
Upon the successful login of the user, the grant token will be sent as a parameter to your registered redirect URL.

Generating an access token from the grant token
Use the below code snippet in your main class.

zcrmsdk.ZCRMRestClient.initialize(config)
oauth_client = zcrmsdk.ZohoOAuth.get_client_instance()
grant_token = "paste_grant_token_here"
oauth_tokens = oauth_client.generate_access_token(grant_token)

Note
  • The code snippet to generate the access token from the grant token is valid only once per grant token. If the grant token expires before you generate the access token, you must generate a new grant token only.
  • Generating access and refresh tokens is a one-time process. After the tokens are generated the first time, the SDK persists them based on the keys defined in the configuration dictionary, and refreshes the access token as and when required.

Step-5: Connect to Zoho CRM through the available methods

The below image shows the sample code to get the current user details. You can find the code for this sample in the attachment.


The below image contains the response to the above code.



We hope you found this post useful. Stay tuned for more!

Cheers!

    Access your files securely from anywhere









                          Zoho Developer Community




                                                • Desk Community Learning Series


                                                • Digest


                                                • Functions


                                                • Meetups


                                                • Kbase


                                                • Resources


                                                • Glossary


                                                • Desk Marketplace


                                                • MVP Corner


                                                • Word of the Day


                                                • Ask the Experts





                                                          Manage your brands on social media



                                                                Zoho TeamInbox Resources



                                                                    Zoho CRM Plus Resources

                                                                      Zoho Books Resources


                                                                        Zoho Subscriptions Resources

                                                                          Zoho Projects Resources


                                                                            Zoho Sprints Resources


                                                                              Qntrl Resources


                                                                                Zoho Creator Resources



                                                                                    Zoho CRM Resources

                                                                                    • CRM Community Learning Series

                                                                                      CRM Community Learning Series


                                                                                    • Kaizen

                                                                                      Kaizen

                                                                                    • Functions

                                                                                      Functions

                                                                                    • Meetups

                                                                                      Meetups

                                                                                    • Kbase

                                                                                      Kbase

                                                                                    • Resources

                                                                                      Resources

                                                                                    • Digest

                                                                                      Digest

                                                                                    • CRM Marketplace

                                                                                      CRM Marketplace

                                                                                    • MVP Corner

                                                                                      MVP Corner







                                                                                        Design. Discuss. Deliver.

                                                                                        Create visually engaging stories with Zoho Show.

                                                                                        Get Started Now


                                                                                          Zoho Show Resources

                                                                                            Zoho Writer

                                                                                            Get Started. Write Away!

                                                                                            Writer is a powerful online word processor, designed for collaborative work.

                                                                                              Zoho CRM コンテンツ






                                                                                                Nederlandse Hulpbronnen


                                                                                                    ご検討中の方




                                                                                                          • Recent Topics

                                                                                                          • Zoho CRM IP Addresses to Whitelist

                                                                                                            We were told to whitelist IP addresses from Zoho CRM.  (CRM, not Zoho Mail.) What is the current list of IP Addresses to whitelist for outbound mail? Is there a website where these IP addresses are published and updated?  Everything I could find is over
                                                                                                          • Color of Text Box Changes

                                                                                                            Sometimes I find the color of text boxes changed to a different color. This seems to happen when I reopen the same slide deck later. In the image that I am attaching, you see that the colors of the whole "virus," the "irology" part of "virology," and
                                                                                                          • The difference between Zoho Marketing Automation and Zoho Campaigns

                                                                                                            Greetings Marketers! This post aims to differentiate between Zoho Marketing Automation and Zoho Campaigns. By the time you get to the end of the post, you will be able to choose a product that objectively suits you. What is Zoho Marketing Automation?
                                                                                                          • How to use Rollup Summary in a Formula Field?

                                                                                                            I created a Rollup Summary (Decimal) field in my module, and it shows values correctly. When I try to reference it in a Formula Field (e.g. ${Deals.Partners_Requested} - ${Deals.Partners_Paid}), I get the error that the field can’t be found. Is it possible
                                                                                                          • Zoho Mail Android app update - View emails shared via Permalink on the app.

                                                                                                            Hello everyone! In the latest version(v2.8.2) of the Zoho Mail Android app update, we have brought in support to access the emails shared via permalink within the app. Earlier, when you click the permalink of an email, you'll be redirected to a mobile
                                                                                                          • Let us view and export the full price books data from CRM

                                                                                                            I quote out of CRM, some of my clients have specialised pricing for specific products - therefore we use Price Books to manage these special prices. I can only see the breakdown of the products listed in the price book and the specialised pricing for
                                                                                                          • Weekly Tips: Manage External Images in Zoho Mail

                                                                                                            When you receive emails every day, whether from clients, newsletters, or services, many of them contain external images that automatically load when you open the message. While this can make emails look more engaging, it can also impact your privacy and
                                                                                                          • How to display Motivator components in Zoho CRM home page ?

                                                                                                            Hello, I created KPI's, games and so but I want to be able to see my KPI's and my tasks at the same time. Is this possible to display Motivator components in Zoho CRM home page ? Has someone any idea ? Thanks for your help.
                                                                                                          • Introducing Record Summary: smarter insights at your fingertips

                                                                                                            Hello everyone, We’re excited to introduce the Record Summary feature. This powerful addition makes use of Zia to simplify how you interact with your CRM data, providing a seamless, consolidated view of critical record information. Scrolling through the
                                                                                                          • Account in Quick View Filter

                                                                                                            I have a report that I often run against a specific Account. Every time, I have to go into the edit menu and change the Advanced Filter. I would prefer to use the Quick View Filter, but it does not allow me to use the one and only field that makes any
                                                                                                          • Insert Cookie Policy in Zoho Sites

                                                                                                            Hello, i need to insert a banner on my site because i'm in Italy so i have to respect EU laws for Cookie Policy and Privacy Policy. I see that i need to insert a code in <head> section of my site to show a banner/popup with cookie info. How i can do this? Thank you Luca
                                                                                                          • Unable to confirm Super Admin assignment — confirmation button not working

                                                                                                            I’m trying to change the roles within my organization. I am currently a super admin and would like to add another user as a super admin. When I attempt to confirm the action, a screen appears asking for my password to verify my identity. However, when
                                                                                                          • Delegates should be able to delete expenses

                                                                                                            I understand the data integrity of this request. It would be nice if there was a toggle switch in the Policy setting that would allow a delegate to delete expenses from their managers account. Some managers here never touch their expense reports, and
                                                                                                          • Let's Talk Recruit: Meet Zia, your all-in-one AI assistant (Part-2)

                                                                                                            Welcome back to Let’s Talk Recruit series. In Part 1, we introduced Zia and how AI is reshaping the way recruiters work. This time, we’re taking a closer look at how far Zia has come and how each update continues to simplify your everyday tasks. When
                                                                                                          • Function #9: Copy attachments of Sales Order to Purchase Order on conversion

                                                                                                            This week, we have written a custom function that automatically copies the attachments uploaded for a sales order to the corresponding purchase order after you convert it. Here's how to configure it in your Zoho Books organization. Custom Function: Hit
                                                                                                          • DKIM Now Mandatory - Changes to Zoho Forms Email Policies

                                                                                                            Hello Zoho Forms Users, This post is to inform you about an important update regarding the authentication of all email domains in your Zoho Forms account. This year, we are doubling down on our commitment to deliver a secure, seamless, and empowering
                                                                                                          • stock

                                                                                                            bom/bse : stock details or price =STOCK(C14;"price") not showing issue is #N/A! kindly resolve this problem
                                                                                                          • Kaizen #8 - Handling Recurrence and Participants in the Events Module via API

                                                                                                            Hello everyone! We are back this week with an exciting post—Handling recurrence and participants in the Events module through API. First things first—What is the Events module? "Events" is a part of the Activities module in Zoho CRM.  An event is an activity that happens at a given place and time. You can find Events on the user's Zoho CRM's home page, Activities home page, Calendar, and in other related records. What are the types of Events? Events are of two types—Recurring and non-recurring events.
                                                                                                          • Marketer’s Space - Get Holiday-Ready with Zoho Campaigns

                                                                                                            Hello marketers, Welcome back to another post in Marketer’s Space! Q4 is packed with opportunities to connect with your audience - from Halloween, Black Friday, and Cyber Monday, to Thanksgiving, Christmas, and New Year. In this post, we’ll look at how
                                                                                                          • Personalized demo

                                                                                                            can I know more about the personalized demo we are construction company and
                                                                                                          • User Filter not selecting All Items

                                                                                                            We are encountering 2 issues when using the user filter. When users are trying to search using the filter option, the OK button is grayed out. Users have to unselect or make a change before it filters properly. 2. When filtering and the OK button works,
                                                                                                          • Can I collect email addresses in a form??

                                                                                                            Can I add new subscribers to my email list (hosted in FloDesk) when they check a box and add their email address on a Zoho form?
                                                                                                          • Zoho CRM Android app updates: Kiosk and multiple file upload support for subforms

                                                                                                            Hello everyone, We've rolled out new enhancements to the Zoho CRM Android app to bring better mobile CRM experience and efficiency. Let's take a quick look at what's new: Kiosk Multiple file uploads for subforms Kiosk Kiosk is a no-code tool in Zoho CRM
                                                                                                          • Alerts for mentions in comments

                                                                                                            We are testing the use of Writer internally and found that when a user is mentioned in a comment, there is no email alert for the mention. Is this something that's configurable, and if so, where can we enable this option?
                                                                                                          • Subform Disabled Fields Should Remain Disabled on Edit/View

                                                                                                            Currently, when we disable a subform field using on user input or on add new row, it works perfectly during the initial data entry. However, when the record is saved and reopened for viewing or editing, these disabled fields become editable again. This
                                                                                                          • Is it really true that I can't set the default 'deposit to' account in 2025?

                                                                                                            I've been using Books for 7 years and the default account has never been a problem. I usually manually reconcile invoices and have never had a thought about which account. It has always been my account. However, I recently noticed that for the past 4
                                                                                                          • Standard Payment Term is not pulled from account to quotation

                                                                                                            Hey Team There seems to be something off. I do have "Net 30" as my default payment term in Zoho Books for my customers. If, from the customer overview or quote section, I create a new Quotation, the payment terms field stays blank and doesn't get the
                                                                                                          • OAuth integration issues

                                                                                                            I'm experiencing persistent OAuth errors when trying to connect Make with Zoho API. I've tried multiple approaches but keep encountering the following issues: First error: 'Invalid Redirect Uri - Redirect URI passed does not match with the one configured'
                                                                                                          • Zoho Mail Android app update: Manage folders

                                                                                                            Hello everyone! In the latest version(v2.9) of the Zoho Mail Android app update, we have brought in support for an option to manage folders. You can now create, edit, and delete folders from within the mobile app. You can also manage folders for the POP
                                                                                                          • Shortcut to fill a range of cells

                                                                                                            Good evening: I'm writing because I haven't been able to find a feature that allows you to select a range of cells, type in one of them, and then use a key combination to type in all of them. In Excel, the keyboard shortcut is Ctrl+Enter. I haven't found
                                                                                                          • Get Zoho Mail API working (including DRE Connector, Oauth Token, ZUID, ZOID & ACCOUNT_ID)

                                                                                                            Disclaimer: I’m not a professional coder! Do you need to use Zoho Mail API? Me too. It lets you do all sorts of things — like reading the complete header of an email, or forwarding an email with its attachments — which is what I wanted to do. But setting
                                                                                                          • Revenue Deferrals

                                                                                                            Does ZOHO books and subscriptions handle Revenue Deferrals?   
                                                                                                          • Can I make a website open inside Zoho whenever I log in?

                                                                                                            Hi Zoho Team, Every day, I check a few websites for updates, for example, Rojgar--result, where I see the latest government job results and notifications. I was wondering if there’s any option in Zoho to make a website like that open inside Zoho whenever
                                                                                                          • Zoho Analytics & SQL Server - Live connect

                                                                                                            Below are the steps I did Created a fresh database and table in my own virtual server Created a new data source connection with live connect I was able to select the tables and created the data source successfully I am getting the error when I try to
                                                                                                          • Kaizen #214 - Workflow APIs - Part 2

                                                                                                            Welcome back to another week of Kaizen! Last week, we discussed how Zylker Cloud Services used the Workflow APIs to discover and audit all the automations in their CRM, listing every workflow, checking triggers, and understanding their automation limits.
                                                                                                          • Playback and Management Enhancements for Zoho Quartz Recordings

                                                                                                            Hello Zoho Team, We hope you're all doing well. We would like to submit a feature request related to Zoho Quartz, the tool used to record and share browser sessions with Zoho Support. 🎯 Current Functionality As of now, Zoho Quartz allows users to record
                                                                                                          • Zoho CRM Community Digest - September P1 | 2025

                                                                                                            Hello Everyone! September's Here! Before we jump into product updates, and community highlights, here's a quick spotlight! Zoho has launched a Professional Sales Rep Certification course on Coursera, tailored for sales professionals to strengthen their
                                                                                                          • Upload my theme.

                                                                                                            Hello. I would like to upload my own theme, this one: https://themeforest.net/item/panagea-travel-and-tours-listings-template/21957086 Is it compatible and where I upload it? If not I will hire a developer, what do I have to ask when I search for one?
                                                                                                          • Explore the Redesigned Quotes Module in Zoho Billing

                                                                                                            Dear users, We’re excited to introduce a refreshed look for the Quotes details page in Zoho Billing! This update brings you a more efficient user interface experience without changing your existing workflow. We've enhanced layouts with organized tabs,
                                                                                                          • Product Updates in Zoho Workplace applications | September 2025

                                                                                                            Hello Workplace Community, Let’s take a look at the new features and enhancements that went live across all Workplace applications this September. Zoho Mail Attach email as EML file in Compose Effortlessly attach emails as EML file in Compose by simply
                                                                                                          • Next Page