Developer API Help

Release Notes

Number of API Requests

The Zoho CRM API is available in all editions of Zoho CRM. To use the API, you'll require the Zoho CRM Authentication Token from your CRM account. Please make sure that you have the permission to access the API service. If you do not have permission, please contact your CRM administrator.

API Limit

Zoho CRM Edition API Requests - Upper Limit
Free Edition 250 Requests / day / organization
Standard Edition Minimum - 1000 Requests/day

Maximum - 5000 Requests/day/Organization or 
                  250 Requests /User License whichever is lower
Professional Edition Minimum - 2000 Requests/day

Maximum - 10000 Requests/day/Organization or 
                  250 Requests /User License whichever is lower
Enterprise Edition Minimum - 3000 Requests/day

Maximum - 25000 Requests/day/Organization or 
                  500 Requests /User License whichever is lower

Important Notes:

  • For example, in Free Edition if you use the getRecords method, you can fetch a maximum of 200 records per request, in turn, a total of 50,000 records per day (250 x 200 = 50,000 records).
  • If you use the getSearchRecords or getCVRecords methods, you can send a maximum of 250 calls per day irrespective of your Zoho CRM edition. 

Released On: Jun 15, 2013

New Methods: Attach Files or Photos to Records using Developer API

We have introduced the following methods that help you attach files or photos to records:

  • uploadFile
  • downloadFile
  • deleteFile
  • uploadPhoto
  • downloadPhoto
  • deletePhoto

You can read the complete announcement in our Developer API Forums.
Refer our API Guide to learn more about these new methods.

Released On: 11 July, 2012

Authentication Token Introduced

We now support the Authentication Token in our Developer API Implementation.

This token is a permanent token and it will become invalid only if you choose to delete it.

Learn More about the Authentication Token in our API Guide.

Released On: March 05, 2012

New Methods Introduced

We have introduced the following methods in our Developer API:

  • getFields
  • getRelatedRecords
  • updateRelatedRecords
API Method Purpose
getFields

To fetch all details of fields available in a particular module.

getRelatedRecords

To fetch records related to another record (Primary record).  .

updateRelatedRecords

To update records related to another record.

You can read the complete announcement in our Developer API Forums. Refer our API Guide to learn more about these new methods.

Released On: 27 January, 2012

Only HTTPS Support from April 28, 2011:

At present, we are supporting both HTTP and HTTPS while implementing our developer API. In another 4 weeks time-frame, we are planning to support all API transactions only via HTTPS and permanently discontinue the HTTP protocol. This additional SSL, 256-bit security system will help you to protect third-party integration from security problems during data transfer.

After April 28, 2011, if you still continue to use the HTTP in your program, API requests will not be executed.Hence, I would like to strongly recommend our developer community to call Zoho CRM API with HTTPS requests only, at the earliest.

New Parameter called 'version' introduced

We have introduced a new parameter called version for Developer API methods. You can fetch values from the "Campaign Source" field with this parameter.
In a recent enhancement to the Campaigns module, the Campaign Source field was removed to support the campaign members feature. After this enhancement:

  • You can now associate multiple leads and contacts to a campaign.
  • You can save time by importing multiple leads/contacts instead of associating them one by one.
  • The Campaign Source field will not be available in the Leads and the Contacts module.

Learn more about this enhancement in our Transition Guide.

How do you use the version parameter in API requests?

You can use the version parameter in methods to fetch values from the Campaign Source field in your API implementation.
The "version" parameter with a value "1" will fetch responses from the "Campaign Source" field also.
The "version" parameter with a value "2" will fetch responses based on the current API implementation. Values from the "Campaign Source" field will not be fetched in this case.

This is not a mandatory parameter. Until October 30, 2011, all responses will be fetched based on the earlier implementation i.e prior to the enhancement. During this period, if you want to fetch responses based on the new implementation, you can use the version parameter in your requests with a value '2' i.e version=2.

Note:

  • This is not a mandatory parameter.
  • Until October 30, 2011, all responses will be fetched based on the earlier implementation i.e prior to the enhancement. During this period, if you want to fetch responses based on the new implementation, you can use the version parameter in your requests with a value '2' i.e version=2.
  • After October 30, 2011, we will discontinue support for version 1 and will support only version 2.

Here is an example on the usage of the "version" parameter.
We have also introduced a new API method called getRelatedRecords. You can fetch records (Leads, Contacts, etc) related to a record in another module.
For example, you can fetch Leads or Contacts related to a particular campaign.Learn More

Released On: April 17, 2011

GA Release of Zoho CRM Developer API and other changes

We are very happy to announce the GA release of API for Zoho CRM service. Our API is available in XML and JSON formats, which helps the developer community to build applications using their favorite programming language. Now we are ready with robust and much better API methods to cater to the needs of real-time deployments. Your valuable contribution towards identifying bugs, coming up with new business scenarios and publishing examples really helped us to come up with a better API for our CRM system. In addition to the GA release, we are also making some major changes in our existing API implementation that allows us to fulfill the future needs of our developer community. Some of these changes include, deprecation of search methods, new response format, restriction of API requests and new API methods for implementing additional CRM business logic. We sincerely believe, these changes will greatly help us to provide a better experience to the developer community and take Zoho CRM developer platform to the next level.

Important Changes

  • Deprecation of existing search methods - getAllSearchRecords and getMySearchRecords
  • Implementation of new response format for all the methods
  • Restriction of API requests based on the Zoho CRM edition
  • Introduction of new methods for Search, Lead Conversion and Delete functions

Deprecation of API

Keeping the future community growth, better developer service and optimization of the high performance-intensive operations in view, we are phasing out the following API methods:

  • getAllSearchRecords
  • getMySearchRecords
API Method Purpose
getAllSearchRecords Used to fetch all data with respect to the search word specified irrespective of the ownership.
getMySearchRecords Used to fetch data owned by the login name with respect to the search word specified in the request.
getAllRecords Name has been changed to getRecords
getEntityRecord Name has been changed to getRecordById

Of late, we are encountering a huge amount of resource utilization while implementing the getAllSearchRecords and getMySearchRecords than expected. To overcome this kind of situation, we are introducing new search methods, getSearchRecords and getSearchRecordsByPDC , which serves the similar purpose. We have optimized these new methods for better performance.

End of Life: Jan 21, 2010

Note:

  • From Jan 21, 2010 (12.00 AM PST) these methods will be nonfunctional and if you still use them, system will throw the following error message in your application:
    <response> Unable to process your request. Please verify whether you have entered proper method name, parameter and parameter values
    </response>

Important Note:

Before end of life, you are strongly recommended to update your application with the new search methods - getSearchRecords or getSearchRecordsByPDC . For any help or clarification, please mail us at: support@zohocrm.com

For more details about the deprecated methods, please refer our API Guide

New Response Format

At present, XML format for the API response is <fieldlabel value="LEADID"> Field Value </ fieldlabel >, which contains about 26 characters (including space) in the opening and closing tags. In our new implementation, we have shortened the tag size by changing the XML tags to <FL val="LEADID"> Field Value </FL> - total 8 characters, which saves about 18 bytes per field. This will greatly help us to optimize the utilization of bandwidth.
Till Jan 21, 2010, by default, you will get the response in the old format. If you want to get the response in the new format, you must pass the extra argument with newFormat=1 or 2 in API request to fetch data from Zoho CRM.

Important Note:

Please note, you must use the newFormat=1 parameter XML data to insert or update records.

Parameter Purpose
newFormat=1 To exclude fields with "null" values while fetching data from your CRM account.
newFormat=2 To include fields with "null" values while fetching data from your CRM account.

Old Format:

<response uri="/crm/private/xml/Leads/getAllRecords">
<result>
<Leads>
<row no="1"> <fieldlabel value="LEADID">1111111111<fieldlabel>
<fieldlabel value="SMOWNERID">222222222</fieldlabel>
<fieldlabel value="Lead Owner">soori</fieldlabel>
<fieldlabel value="Company">NiveSoft</fieldlabel>
<fieldlabel value="First Name">Mutha</fieldlabel>
<fieldlabel value="Last Name">Raja</fieldlabel>
<fieldlabel value="Designation">null</fieldlabel>
<fieldlabel value="Email">null</fieldlabel>
<fieldlabel value="Phone">3434343</fieldlabel>
<fieldlabel value="Fax">null</fieldlabel>
<fieldlabel value="Mobile">null</fieldlabel>
<fieldlabel value="Website">null</fieldlabel>
<fieldlabel value="Lead Source">null</fieldlabel>
<fieldlabel value="Lead Status">null</fieldlabel>
<fieldlabel value="Industry">null</fieldlabel>
<fieldlabel value="No of Employees">0</fieldlabel>
<fieldlabel value="Annual Revenue">0.0</fieldlabel>
<fieldlabel value="Rating">null</fieldlabel>
<fieldlabel value="CAMPAIGNID">null</fieldlabel>
<fieldlabel value="Campaign Source">null</fieldlabel>
<fieldlabel value="SMCREATORID">22222222</fieldlabel>
<fieldlabel value="Created By">jkbmahesh</fieldlabel>
<fieldlabel value="MODIFIEDBY">22222222</fieldlabel>
<fieldlabel value="Modified By">jkbmahesh</fieldlabel>
<fieldlabel value="Created Time">2009-02-22 18:20:38</fieldlabel>
<fieldlabel value="Modified Time">2009-10-05 16:01:32</fieldlabel>
<fieldlabel value="Street">null</fieldlabel>
<fieldlabel value="City">null</fieldlabel>
<fieldlabel value="State">null</fieldlabel>
<fieldlabel value="Zip Code">null</fieldlabel>
<fieldlabel value="Country">null</fieldlabel>
<fieldlabel value="Description">null</fieldlabel>
<fieldlabel value="Skype ID">null</fieldlabel>
<fieldlabel value="Email Opt Out">false</fieldlabel>
<fieldlabel value="Salutation">null</fieldlabel>
<fieldlabel value="rrr">null</fieldlabel>
<fieldlabel value="int field">null</fieldlabel>
<fieldlabel value="Currency (Round Up)">null</fieldlabel>
<fieldlabel value="Auto Num">1</fieldlabel>

</row>
<row no="2">
...
</row>
</Leads>

</result>
</response>

In this example, all fields are fetched in spite of the "null" values in the record. If you have 150 fields in a module, we have to fetch data for all the fields, which require unnecessary bandwidth utilization. New format:

<response uri="/crm/private/xml/Leads/getAllRecords">
<result>
<Leads>
<row no="1">
< FL val ="LEADID">1111111111</ FL >
<FL val="SMOWNERID">1111122222</FL>
<FL val="Lead Owner">soori</FL>
<FL val="Company">NiveSoft</FL>
<FL val="First Name">Mutha</FL>
<FL val="Last Name">Raja</FL>
<FL val="Email"></FL>
<FL val="Phone">3434343</FL>
<FL val="No of Employees">0</FL>
<FL val="Annual Revenue">0.0</FL>
<FL val="SMCREATORID">22222222</FL>
<FL val="Created By">jkbmahesh</FL>
<FL val="MODIFIEDBY">22222222</FL>
<FL val="Modified By">jkbmahesh</FL>
<FL val="Created Time">2009-02-22 18:20:38</FL>
<FL val="Modified Time">2009-10-05 16:01:32</FL>
<FL val="Email Opt Out">false</FL>
<FL val="Auto Num">1</FL>
</row>
<row no="2">
....
</row>
</Leads>
</result>
</response>

In this example, we are not fetching the fields containing " Null " values by passing the newFormat=1 parameter. Key Points:

  • XML tag has been changed from <fieldlable value=""> field value </fieldlable> to <FL val=""> field value <FL>
  • You can stop fetching records with "null" values by passing the newFormat=1 in API request. If you want to fetch data for all the fields (including null values), use the newFormat=2 parameter.

New Response Format - Available from Oct 22, 2009

EOL of Old Response Format - Jan 21, 2010

Number of API Requests

For a better performance and developer service, we will be limiting the number of API requests as given below:

Zoho CRM Edition API Requests - Upper Limit
Free Edition - 3 users free 250 calls/day/organization
Professional Edition - USD 12/user/month

250 calls/day/user license OR
Max: 5000 calls/day/org, Min: 1000 calls/day/org

Standard Edition - USD 20/user/month

250 calls/day/user license OR
Max: 10000 calls/day/org, Min: 2000 calls/day/org

Enterprise Edition - USD 35/user/month 500 calls/day/user license OR
Max: 25000 calls/day/org, Min: 3000 calls/day/org

For example, in Free Edition, if you are using the getSearchRecords method, you can fetch a maximum of 200 records per request, in turn, a total of 50,000 records per day (250 x 200 = 50,000 records).

Note:

  • If you are using the getSearchRecords or getCVRecords methods, you can send a maximum of 250 calls per day irrespective of your Zoho CRM edition.

Important Note:

The above restrictions are applicable for all our existing and new users. In future, we are planning to notify the CRM administrator (Primary Contact of the Zoho CRM account) if your organization exceeds the above mentioned limit. In addition, we will also provide API Statistics for better assessment of your integration requirements.

Implementation Date: Jan 21, 2010


From Jan 21, 2010 (12.00 AM PST), you can request API calls as per your Zoho CRM Edition. In case, your application requires more than upper limit, your additional API requests will not be processed. To avoid data transfer issues, please assess your API requirements well in advance. If you need any help, please contact our Support at support@zohocrm.com or call us: +1 888 900 9646

New API Methods

We are really excited to introduce the following new methods for the benefit of growing developer community:

  • getSearchRecords
  • getSearchRecordsByPDC
  • deleteRecords
  • convertLead
API Method Purpose
getSearchRecords

To fetch all users data specified in the API request.

getSearchRecordsByPDC

To search the values based on the default pre-defined columns of Zoho CRM entities.

deleteRecords

To delete a record by passing its ID.

convertLead To convert lead to account, contact and potential.

We are confident, the above methods will be very useful in implementation of search functions and allows you to develop additional business logic through our API. These methods will be made available for all editions immediately.

Available From: Oct 22, 2009

For more information on new API methods, please refer our API Guide

Other Changes

In addition, we are incorporating the following minor changes:

  • Fetch a maximum of 200 records per API request
  • New Response format is applicable to all API methods (existing as well as new methods)
  • Fetch records with the specified fields using the selectColumns parameter
  • We have also updated API Guide and launched official Developer Forums

Top