Introducing Zoho CRM GraphQL APIs: Our Next Frontier!

Introducing Zoho CRM GraphQL APIs: Our Next Frontier!

Update 25th Sep 2024:
GraphQL APIs are now open across all DCs including IN DC for Enterprise, Zoho One Enterprise, CRM Plus and Ultimate edition orgs. Please note that GraphQL APIs are not available for Trial Edition of these editions.

Update 27th Aug 2024:
Opening up GraphQL APIs for more editions
We are delighted to inform you that GraphQL APIs are currently available across all DCs except IN DC for Enterprise, Zoho One Enterprise and CRM Plus edition orgs. Please note that GraphQL APIs are not available for Trial Edition of these editions. We estimate that GraphQL APIs will be open in IN DC within one month. If your org is in IN DC and you are eager to try out GraphQL APIs,  you can register for early access here: GraphQL Early Access Registration.

Update 26th Apr 2024:
Early access available for Enterprise, Zoho One Enterprise and CRM Plus editions.
To register for early access, please fill in this form: GraphQL Early Access Registration.
Hello Developers,

We are excited to announce the release of Zoho CRM GraphQL APIs as a part of Zoho CRM - Q1 2024 update!
Our GraphQL APIs are now available to all Zoho CRM Ultimate paid orgs across all DCs. You can refer to the help documentation on GraphQL APIs for details on everything GraphQL .

What are GraphQL APIs?

Let us use a sandwich shop analogy to explain the concept of GraphQL.
Imagine you're at a sandwich shop - Cafe Rest Stop. The menu is extensive, offering various sandwiches with different ingredients. You want a tuna sandwich, and you're not a fan of pickles. You ask the chef for a sandwich without pickles. However, you are informed that the pickles are already prepped and placed on the sandwiches, and they can not be removed. You're faced with a dilemma: either accept the tuna sandwich with pickles or choose a different sandwich altogether.
This scenario mirrors the traditional REST endpoint model. When you make a request to a REST API endpoint, you receive a predefined set of data in response, much like ordering a sandwich with fixed ingredients. If you need something slightly different, like excluding certain data fields or including additional ones, you're often out of luck unless the API specifically offers those customization options.

Now, let's imagine another sandwich shop - Cafe Graffiti.  Here, instead of ordering predefined sandwiches, you have the freedom to customize your sandwich exactly the way you want it. You start with a base sandwich, like tuna, and then you can specify your preferences for each ingredient. You can say "no pickles," "extra lettuce," or "add avocado," and the chef will tailor your sandwich accordingly.
This is analogous to GraphQL. With GraphQL, you have a single endpoint through which you can request exactly the data you need, no more and no less.  You specify the fields you want to retrieve, and you get back precisely that data in the format you requested. 
Excited to tap into the potential of Zoho CRM GraphQL APIs? Refer to the 'Getting Started' page in the help documentation, accessible through this link.

Here is how it works:

Our GraphQL APIs offer a comprehensive solution for accessing both data and metadata within your Zoho CRM org.  From retrieving metadata across various resources like modules, Users, KanbanView, Profiles and so on,  to supporting advanced querying capabilities that streamline the retrieval of records in different modules, our GraphQL APIs offer unparalleled flexibility. GraphQL empowers you to precisely request resources, it's field, and the relationships between different resources.
But that is not all. Zoho CRM GraphQL APIs allows  you to aggregate data from multiple dependent or independent entities in a single API call. Whether you're looking to minimize network round trips or ensure optimal bandwidth utilization, our GraphQL APIs have you covered.

Here's an example of a GraphQL query that fetches records of Accounts containing "Truhlar" in their name along with their associated contacts and owner details. It also retrieves metadata about the "Accounts" module, including information about relevant fields like "Account_Name," "Owner," and "Parent_Account.


{
    Records {
        Accounts(where: { Account_Name: { like: "%Truhlar%" } }) {
            _data {
                id {
                    value
                }
                Account_Name {
                    value
                }
                Parent_Account {
                    id {
                        value
                    }
                    Account_Name {
                        value
                    }
                }
                Contacts__r {
                    _data {
                        id {
                            value
                        }
                        Full_Name {
                            value
                        }
                        Email {
                            value
                        }
                        Owner {
                            id {
                                value
                            }
                            first_name {
                                value
                            }
                            email {
                                value
                            }
                            last_name {
                                value
                            }
                            zuid {
                                value
                            }
                        }
                    }
                }
                Owner {
                    id {
                        value
                    }
                    email {
                        value
                    }
                    zuid {
                        value
                    }
                    last_name {
                        value
                    }
                    first_name {
                        value
                    }
                }
            }
        }
    }
    Meta {
        Modules(filter: { api_name: "Accounts" }) {
            _data {
                id
                api_name
                module_name
                visibility
                fields(filter: { api_names: ["Account_Name", "Owner", "Parent_Account"] }) {
                    _data {
                        id
                        api_name
                        display_label
                        data_type
                    }
                }
            }
        }
    }
}


Similar to our Rest APIs, Zoho CRM GraphQL API calls are also associated with credits. Each API call may consume up to 10 credits, with additional credits required for specific resource types. In addition to that, we have query complexity based on the workload a query exerts on CRM servers and depth. Please refer to the Credits, Complexity, and Depth page on our help document for details.
We hope you are excited to try out Zoho CRM GraphQL APIs. As always, your suggestions and requests are most welcome. We will work on fulfilling them as promptly as we can.


Thank you,

Zoho CRM API Team



    • Sticky Posts

    • Kaizen #197: Frequently Asked Questions on GraphQL APIs

      🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Celebrating 200 posts of Kaizen! Share your ideas for the milestone post

      Hello Developers, We launched the Kaizen series in 2019 to share helpful content to support your Zoho CRM development journey. Staying true to its spirit—Kaizen Series: Continuous Improvement for Developer Experience—we've shared everything from FAQs
    • Kaizen #193: Creating different fields in Zoho CRM through API

      🎊 Nearing 200th Kaizen Post – We want to hear from you! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Client Script | Update - Introducing Commands in Client Script!

      Have you ever wished you could trigger Client Script from contexts other than just the supported pages and events? Have you ever wanted to leverage the advantage of Client Script at your finger tip? Discover the power of Client Script - Commands! Commands
    • Recent Topics

    • WIDGET in related record list ZOHO CRM; how to get and put data to subform custom fields?

      he need: Read and write two custom subform line-item fields on Quotes: Segment_wyceny (picklist/text) and W_pakiecie (number). Write works; read does not return these fields via SDK. Environment Zoho CRM Widget Zoho Embedded App SDK v1.2 Module: Quotes
    • Recurring Supervisor Rule Reminders for Open/In-Progress Tickets

      Hello Zoho Support Team, I would like to suggest a potential improvement regarding reminders for tickets and activities in Zoho Desk. Currently, it is possible to set reminders only once. In the Supervisor Rules section, it is possible to configure reminders
    • Connecting Portals from different Zoho apps

      Hi, I note that Zoho has functionality for customer portals for several of the Zoho apps, like CRM, Projects, Desk etc. Is there any way to connect these portals?  It would be great if we could give our customers access to a portal in which they could
    • Billing Management: #5 Usage Billing

      After understanding the nuances of Advance Billing and Retainers, we will explore one of the booming billing models. Long ago, villagers drew water from a shared well in a small village. The well was a lifeline for the entire community. Ravi, the well
    • Function #10: Update item prices automatically based on the last transaction created

      In businesses, item prices are not always fixed and can fluctuate due to various factors. If you find yourself manually adjusting the item rates every time they change, we have the ideal time-saving solution for you. In today's post, we bring you custom
    • Inventory Adjustments

      Hi, How to transfer the material from one head to another ? Like materials purchased for manufacturing the laptop need to transfer from consumption inventory (Quantity of raw materials reduced) to destination inventory ( Quantity of Laptop increased)
    • Zoho CRM Community Digest - Aug 2025 | Part 1

      Hey everyone! The first half of August went by, and we have a few announcements and some good noteworthy discussions. So, let's take a look at them! Product Updates: Introducing Connected Records feature: Zoho CRM’s Next-Gen UI now includes Connected
    • Please make it easier to Pause syncing

      right now it takes 3 clicks to get there. sounds silly, but can you make it just 2 clicks to get it done instead? thats how dropbox does it, 2 clicks to pause instead of 3.
    • How to create a Zoho CRM report with 2 child modules

      Hi all, Is it possible to create a Zoho CRM report or chart with 2 child modules? After I add the first child module, the + button only adds another parent module. It won't let me add multiple child modules at once. We don't have Zoho Analytics and would
    • Create static subforms in Zoho CRM: streamline data entry with pre-defined values

      Last modified on (9 July, 2025): This feature was available in early access and is currently being rolled out to customers in phases. Currently available for users in the the AU, CA, and SA DCs. It will be enabled for the remaining DCs in the next couple
    • SalesIQとPageSenseの利用について

      初めての投稿で場違いだったらすいません。 弊社ではSalesIQを運用しているのですが、追加でPageSenseの導入もしたいと現場からの声があります。 両サービスともクッキー同意バナーが必要なサービスなのですが 弊社では同意無しに情報はとりませんという方針なので 2つ入れると2つバナーを出す必要がでてきます・・・ 両サービスを運用されてる方があれば運用状況とか教えてほしいです。 PageSenseについては詳細まで機能を理解してないなかでの質問です。
    • How to integrate Zoho Forms with Zoho CRM on Standard Plan

      Hello Zoho Support Team, I am using the Standard Zoho Forms plan (USD 30/user) and I would like to integrate Zoho Forms with Zoho CRM so that certain fields in my forms can be automatically prefilled using data from Deals in CRM. Specifically, I want
    • CRM : Function to add user name to text field

      I have a lookup field in a module that is linked to the CRM users so we can assign a Project Lead to the customer. Sadly Zoho Marketing Automation doesn't sync Lookup fields so I need to extract information from the lookup to text fields: Lookup field
    • Export PDF File Name

      Is it possible to change the default Zoho .pdf naming scheme for inventory items like quotations? Would like to use the the Subject as the default quote name. Is this possible?
    • How to change the from address from 'no reply' for an email template in CRM

      Hi, We have our CRM set up with the from field as sales@XXX. I have just created a series of email templates and sent a test and they are sending from noreply@zoho I have tried searching for how to change the email template but don't have the options
    • Zoho CRM Client Script - SetCriteria in lookup Field

      Hello All One More Zoho CRM Client Script Tips & Trick. Now you can Set the Criteria on Your lookup in zoho CRM, It Comes With a Create Page, Edit Page, and Details Page (Standard). Example:- We have a Room Module that includes Room Name, Status, Campus,
    • Kaizen #71 - Client Script ZDKs for Detail (Canvas) Page

      Hello everyone! Welcome back to another interesting Kaizen post. In this post, we can discuss Client Script ZDKs support for Detail (Canvas) Page. What is Detail (Canvas) Page? A Detail(Canvas) Page allows you to customize the record detail page to your
    • how to use validation rules in subform

      Is it possible to use validation rules for subforms? I tried the following code: entityMap = crmAPIRequest.toMap().get("record"); sum = 0; direct_billing = entityMap.get("direct_billing_details"); response = Map(); for each i in direct_billing { if(i.get("type")
    • Add Custom Reports To Dashboard or Home Tab

      Hi there, I think it would be great to be able to add our custom reports to the Home Tab or Dashboards. Thanks! Chad
    • Rich-text fields in Zoho CRM

      Hello everyone, We're thrilled to announce an important enhancement that will significantly enhance the readability and formatting capabilities of your information: rich text options for multi-line fields. With this update, you can now enjoy a more versatile
    • Create Lead Button in Zoho CRM Dashboard

      Right now to create Leads in the CRM our team is going into the Lead module, selecting the "Create Lead" button, then building out the lead. Is there anyway to add the "Create Lead" button or some sort of short cut to the Zoho CRM Dashboard to cut out
    • Zoho Reports Duplicating Entries

      I have a custom costing tab with a table where we entre invoices. These are under a Heading (PO Subject) and notes added in the form with different line items. In the reports, I have organised the report to group per PO Subject, with the total of the
    • Validation Rule Not Working for Mandatory Field in Zoho Blueprint

      As a Zoho user, we created a validation rule for a specific field. However, we noticed that when we made the same field mandatory within a Blueprint, the validation rule we defined did not work. When we reported this issue to Zoho Support, they stated
    • Notes Issues

      Been having issues with Notes in the CRM. Yesterday it wasn't showing the notes, but it got resolved after a few minutes., Now I have been having a hard time saving notes the whole day. Notes can't be saved by the save button. it's grayed out or not grayed
    • Export from Contacts module to Products module in Zoho CRM

      Good afternoon, I would like to send a number of contact info from the Contacts module into the customized module (tickets to an event) in one operation. I have selected several contacts in the Contact module (people who I have labelled as people I want
    • Zoho Commerce

      Hi, I have zoho one and use Zoho Books. I am very interested in Zoho Commerce , especially with how all is integrated but have a question. I do not want my store to show prices for customers that are not log in. Is there a way to hide the prices if not
    • Can’t receive emailI c

      I have generated a basic for but when I submit it I don’t get a email, I’ve been in the settings and tested me email, all appears correct, can you please help me
    • Data Capture for Historical Activity (Especially One Lead Downloading Variois reports without Overwriting the info)

      Is there a better way in Zoho CRM to capture and archive a lead’s historical activity—specifically whenever they download reports—so that the data is stored without being overwritten?”
    • Client Script - Updating Field Value in Detail Page of a Lead

      Hello, I'm trying to use Client Script To enrich some data of the Lead when one of my User fill the "City" field in the detail page of the Lead. This is my Script: log (value); var response = ZDK.Apps.CRM.Functions.execute("getInfoCitta", { "nomeCitta":
    • Auto shapes in Zoho sheet.

      Does Zoho sheet supports inserting auto shapes (rectangle, circle...). I did not see any option to do so.  If its not supported currently, is there any plans on bring in this features. Any timelines ?
    • I Can't Clone Webinar that I Co-Organize

      How do i get our account admin to give me permission to clone our webinars? I am a co-organizer
    • I want to Make the due date of the project appears automatically

      hello everyone I want to know if the zoho projects app can add automatically the END DATE of the project I added the duration, start after dates of each tasks in the project template & the starting date of the project itself and the end date of it doesn't
    • Introducing Profile Summary: Faster Candidate Insights with Zia

      We’re excited to launch Profile Summary, a powerful new feature in Zoho Recruit that transforms how you review candidate profiles. What used to take minutes of resume scanning can now be assessed in seconds—thanks to Zia. A Quick Example Say you’re hiring
    • How to get the call recording external ID via desk API

      I have enabled phonbridge integration with Zoom Call. I am trying to access the call recording in Zoom by calling Zoom API. I have built a Desk workflow to trigger on a new call, to call a custom function. when calling the API, the response doesn't contain
    • Can't View Project Names in Mobile App

      I can't view project names on PO's in the app, nor can I add that as a viewable PDF field in inventory on the computer. I've attached screenshots showing that in the mobile version whether you are on the PO, editing the PO, or viewing the PO line items,
    • How do you print a refund check to customer?

      Maybe this is a dumb question, but how does anyone print a refund check to a customer? We cant find anywhere to either just print a check and pick a customer, or where to do so from a credit note.
    • Notebook

      I have purchased the monthly pro subscription of Notebook. But it does not support my XP-Pen to write something in it. So it is not useful to me. Hence I am requesting you to help me to discontinue this subscription.
    • Domain Mapping & Image Publishing Issues on Zoho Sites

      Hello, I am facing two issues with my Zoho Sites account: 1. Images not visible after publishing. 2. Domain mapping error: "Domain already exists". I am a paid customer. Please connect me with Live Chat Support or Zoho Assist so I can show my issue
    • Prevent duplicate with custom fields?

      I was wondering something about custom field/custom modules in Zoho Desk. For some reason you can make a custom field mandatory but not unique? For example, if I create a custom module to manage equipment and renewal and make a field serial number no
    • Round robin

      Hi, I'm trying to set up a round robin to automatically distribute tickets between agents in my team but only those tickets that are not otherwise distributed by other workflows or direct assignments. Is that possible and if so which criteria should I
    • Next Page