Xero API Limits
Xero API Limits
The Xero API has usage limitations that may be encountered while using the CData SSIS Components for Xero. Note that all of these apply on a per-application and per-organization basis. An application may exceed these limits if it is querying multiple organizations as long as it obeys the limits within each organization.
Concurrent Limit
At most 5 API calls from the application may be active against the same organization at once. Typically this limit is not an issue because the component will automatically retry the current request if this occurs.
Per-Minute Limit
At most 60 API calls per minute may be made from the application to the same organization. This limit is also not an issue as Xero reports a recommended delay time that the component will use to avoid hitting the limit again.
Uncertified Connectors Limit
Uncertified OAuth applications are limited to 25 connections. There is no limit on connections for certified apps.
Per-Day Limit
At most 5000 API calls per day may be made from the application to the same organization. Hitting this limit is rare but can happen with certain tables (such as history tables and some reports) or certain settings (such as AutoExpandDetails) are used, as they require the component to make a single API call for each invoice/contact/etc. that is read.
If this limit is hit frequently then the first step should be avoiding the
tables or settings that trigger it. It is also possible to convert the queries
into versions which read fewer rows at one time. This is usually done by
replacing simple selects with subqueries that pick out small groups of rows,
and then using multiple versions of these queries at different times:
/* Retrieves history for about 1/16 of the invoices */ SELECT * FROM HistoryInvoices WHERE InvoiceId IN ( SELECT InvoiceId FROM Invoices WHERE InvoiceId LIKE '0%' )
The RetryDailyLimit option is also available but its use is strongly discouraged, as in the worst cases the delays that Xero suggests can span several hours during which the component will be unavailable. It is typically better to restructure how you request data to fit within the limits than to ignore the limits and execute queries that take multiple hours to run.
Optimized Filters and High Volume Thresholds
The Xero API defines a list of optimized filters for certain tables and views. If any query filter not included in this list is applied to any such table or view, and the number of records available in that table or view exceeds a certain value (what Xero calls a "high volume threshold"), the Xero API will block the query.
To avoid the rejection of your queries by the Xero API, if the the number of records in your table or view exceed the high volume threshold, make sure to use filters from the list of optimized filters.
Note that the high volume threshold, as well as the exact list of optimized filters, is subject to change as Xero updates its API.
See the pages for individual Tables and Views for their full list of optimized filters.