Kaizen #120 - A Guide to API Calls in Zoho CRM Sandboxes

Kaizen #120 - A Guide to API Calls in Zoho CRM Sandboxes

Hello everyone!

Welcome back to another post in our Kaizen series. This week, we will discuss in detail about the sandbox environment in Zoho CRM, and how to make API calls to the sandbox orgs.

Environments in Zoho CRM

Zoho CRM empowers your business with robust developer tools. But what if you want to experiment without affecting your live data? Or if you want to try out a widget or a workflow before pushing them live to your customers? We have got you covered with our environment options.

Zoho CRM offers three environments:

Production - The production environment is your live CRM account, which you use for business operations. 
Developer - This environment acts as a playground for developers to build and test custom integrations and apps. Changes made here cannot be directly applied to the production account.
Sandbox - This is a secure testing ground where you can experiment without disrupting your live production environment. Tinker with settings, workflows, and features without disrupting your live data. Test, identify issues, and perfect your changes before deploying them to your production environment.

Creating a Sandbox:

CRM admins can create multiple sandboxes in one account for independent testing of different configurations. The number of sandboxes allowed depends on your CRM edition. You can create a sandbox from Setup > Data Administration > Sandbox. For more details on the available configurations and settings, refer here. Note that the sandbox environment is exclusive to the enterprise and above editions.


Once your sandbox accounts are set up, you can view them at CRM Setup > Data Administration > Sandbox.  Access the sandbox organization you want, and you can go about working in the sandbox in the same way you would work in the production setup.  You can make the necessary changes, utilize sandbox data for validation, and, once satisfied, deploy them to the production environment.

Making API calls in the Sandbox environment

  1. Register your application : Before you get started with authorization and make any calls using the Zoho CRM APIs, you need to register your application with Zoho CRM. Follow the steps explained in this document to register your application.
  2. Generate grant token : To use the Zoho CRM APIs, you must authenticate the application to make API calls on their behalf with an access token. The access token, in return, must be obtained from a grant token (authorization code). Choose the desired organization under the sandbox environment from the list displayed when generating the grant token. For more details on how to generate a grant token, please refer to this document.


  3. Generate Access Token and Refresh Token : OAuth2.0 requests are usually authenticated with an access token, which is passed as bearer token. Use your domain-specific Zoho Accounts URL https://accounts.zoho.{domain} to generate the tokens.


  4. Identifying token environment (optional) : With the access token in hand, you might wonder: Which environment does this token belong to? This can be determined using the Organization API using https://www.zohoapis.{domain} regardless of the token's environment. The type key in the API response contains information regarding the environment linked to the access token - production, developer, or sandbox. Please note that this functionality is supported only from Zoho CRM API version 6 onwards.


  5. Making API calls :  Now that you know the token's environment, use the sandbox-specific URL https://sandbox.zohoapis.{domain} for API calls to the sandbox environment. Please note that attempting calls using tokens generated for other environments will result in a DOMAIN_TOKEN_MISMATCH error.

Points to remember :

  • Generate the grant token for the corresponding sandbox organization to avoid the DOMAIN_TOKEN_MISMATCH error.
  • The accounts URL for generating tokens remains the same  for both sandbox and production environments - https://accounts.zoho.{domain} .
  • The Get Organization API response includes a type key, which contains information regarding the environment your access token is authorized for (production, developer, or sandbox).

Multiple Sandbox Accounts and API Calls

Each sandbox environment within your Zoho CRM account acts as a separate organization. To ensure your API calls land precisely where intended, follow these guidelines:
  • Separate Grant Tokens for Each Organization : You should generate separate grant token for each organization, whether within a sandbox environment or the production environment.
  • API Call URL for All Sandboxes: The API call URL remains consistent for all sandboxes: https://sandbox.zohoapis.{domain}. However, to target a specific sandbox organization, you must generate the grant token specifically for that organization.

Frequently Asked Questions

Q. How many sandboxes can I have in my Zoho CRM account?
A. The number of sandboxes you can have depends on your Zoho CRM edition. Please refer to this document to know the specific limits.

Q. Do sandbox API calls affect my production data?
A. No, API calls made from the sandbox environment are isolated from your production data.

Q. Do I need different account URLs for generating tokens in sandbox and production?
A. No. Use the same URL, https://accounts.zoho.{domain}, for both environments.

Q. Can I use the same access token for API calls in both the sandbox and production environments?
A. No, each organization in each environment requires its own access token.

Q. Is there a specific URL for making API calls from the sandbox environment?
A. Yes, use https://sandbox.zohoapis.{domain} for sandbox calls.

Q. How do I find if the token is generated for the sandbox or any other environment?
A. In order to find whether a token is generated for a sandbox or other environment, kindly use the Organization API which will return the type for which the token is generated.  Please note that this support is available from V6 only.

Q. What does the "DOMAIN_TOKEN_MISMATCH" error indicate during API calls in the sandbox environment?
A. This error occurs when using tokens from a different environment or domain in your API calls. For example, you will get this error if you attempt to use an access token generated for the production environment in the sandbox environment

Q. Do I need to register my application differently for the sandbox environment?
A. No, you use the same application registration process for both sandbox and Production environments. However, you need to generate separate grant tokens for each environment.

Q. Do I need to use different client IDs and client secrets for the sandbox environment compared to production?
A. No, you can use the same client ID and client secret for both environments. However, you'll need to generate separate access tokens for each org.

We hope that you found this post useful. Let us know your thoughts in the comment section or reach out to us at support@zohocrm.com.

Stay tuned for more insights in our upcoming Kaizen posts!

Happy Coding!




    • 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

    • 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":
    • 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
    • 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
    • "Is Zoho CRM customer" vs "Is linked with Zoho CRM"

      Recently while building a Flow, I was setting up a Decision action following a Zoho Invoice Fetch record action. There were 2 choices that I had not seen as something I could manually action in Zoho Invoice: "Is Zoho CRM customer" and "Is linked with
    • Two currencies

      More and more I am finding that internattional payments' fees are unpredictable. I would like, on my invoices that are in a foreign currency (eg. USD$ or EUR€) for there to be a GBP£ TOTAL display alongside the invoice's currency total. This would make
    • Automatic Matching from Bank Statements / Feeds

      Is it possible to have transactions from a feed or bank statement automatically match when certain criteria are met? My use case, which is pretty broadly applicable, is e-commerce transactions for merchant services accounts (clearing accounts). In these
    • Generate leads from instagram

      hello i have question. If connect instagram using zoho social, it is possible to get lead from instagram? example if someone send me direct message or comment on my post and then they generate to lead
    • Zoho PDF editor has a lot of issues.

      Zoho PDF editor needs a lot of work. It hangs and glitches a lot. Deletes annotations and clearings randomly.
    • Where is the desktop app for Zoho Projects???

      As a project manager, I need a desktop app for the projects I manage. Yes, there's the web app, which is AWESOME for cross browser and platform compatibility... but I need a real desktop app for Projects that allow me to enter offline information where
    • How to Automate Monthly PDF Reports with Filters in Zoho Creator

      Hi everyone, I’m trying to build an automated monthly reporting process in Zoho Creator and would appreciate suggestions or best practices from anyone who has done something similar. What I’m trying to do: I have a form called New_Customer with fields
    • Feedback: Streamlining Note Management in Zoho Notebook

      Dear Team/Support, I would like to share some feedback regarding the note management system that could help improve usability and accessibility for users like myself. Notebook 1 (screenshot attached): Currently, the system does not allow selecting and
    • showing Limit exceeded

      Good afternoon...trust you're good. I've been having issues working with but it's not responding. it's showing Limit exceeded, sorry it seems like too many people are working on the sheet right now please try again later. meanwhile no one is working on
    • Converting Sales Order to Invoice via API; Problem with decimal places tax

      We are having problems converting a Sales Order to an Invoice via API Call. The cause of the issue is, that the Tax value in a Sales Order is sometimes calculated with up to 16 decimal places (e.g. 0.8730000000000001). The max decimal places allowed in
    • Sorting columns in Zoho Projects

      Hi, In project management best practice, sorting columns (ascending, descending) is an important tool. Sorting dates to see the order of tasks starting, sorting on priority or even on planned hours is a must for an efficient project control. Currently,
    • Business Continuity - Disaster Recovery

      I know about the Zoho CRM backup .zip files, however, this doesn't include any of the infrastructure with like custom fields or custom modules. I am curious on what everyone has in place for a true backup or what your plan is if your Zoho instance were
    • 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
    • Upload API

      I'm trying to use the Upload API to upload some images and attach them to comments (https://desk.zoho.com/DeskAPIDocument#Uploads#Uploads_Uploadfile) - however I can only ever get a 401 or bad request back. I'm using an OAuth token with the Desk.tickets.ALL
    • Losing description after merging tickets

      Hello, We merge tickets when they are about the same topic from the same client. It happens sometimes. We recently noticed that after the merger only the description from the master ticket is left in a thread. And the slave-ticket description is erased.
    • Next Page