Usage limits and quotas
Stay organized with collections
Save and categorize content based on your preferences.
Limits and quotas protect the Google infrastructure from an automated process
that uses the Reseller API in an inappropriate way. Excessive requests from
an API might result from a harmless typo, or might result from an inefficiently
designed system that makes needless API calls. Regardless of the cause,
blocking traffic from a specific source when it reaches a certain level is
necessary for the overall health of the Google Workspace system. It ensures that
one developer's actions can not negatively impact the larger community.
API request failures
In the unlikely event that your API request fails, your application receives an
HTTP status code response. A status code of 403
has error
information about incorrect input and an HTTP status code of 503
has error information indicating which API quotas have been exceeded. These
responses let your custom application detect these errors and take appropriate
action.
Time-based errors
For all errors that are time based (maximum of N things for N seconds per
thread), especially the 503
status code errors, we recommend that
your code catch the exception and by using
an
exponential backoff
algorithm, wait for a small delay before retrying the failed call. A
Reseller API example for one thread
is to wait 5 seconds and retry the failed call. If the request is successful,
repeat this pattern for the other threads. If the second request isn't
successful, your application should scale back on the frequency of the request
until a call is successful. For example, increase the initial 5 second delay
to 10 seconds and retry your failed call again. Also, decide on a retry limit.
For example retry a request 5 to 7 times with different delay times before
your application returns an error to the user.
Limits
API limit categories |
Limits |
Subscription purchaseOrderId |
This property accepts up to 80 plain text characters. |
Subscription maxResults |
The maxResults query string can be 1 - 100 results.
The default is 20 results.
|
Transfer Token (customerAuthToken ) |
A customer's transfer token is valid for 30 days after it's generated.
|
Maximum number of users for a customer |
Depending on your contract, the maximum number of users can either be
50,000 or the maximum defined in your reseller
contract.
|
Unauthorized requests |
Google doesn't allow unauthorized requests to the Reseller API.
A request is considered unauthorized if no authorization token is provided. For more
information, see
Learn about authentication & authorization.
|
Other types of limits
Other types of limits |
Limitations and guidelines |
Data format |
The data format is in the JavaScript Object Notation
JSON.
JSON is a common internet format that provides a method of
representing arbitrary data structures. JSON is a
text format that is completely language-independent but uses conventions
that are familiar to programmers of the C-family of languages, including
C, C++, C#, Java, JavaScript, Perl, and Python.
|
Time format |
All date times are in the Epoch converter
in milliseconds. This format applies to the values for the subscription
creation time, a plan's commitment start and end times, and a 30 day free
trial's end time.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-28 UTC.
[null,null,["Last updated 2025-08-28 UTC."],[],[],null,["# Usage limits and quotas\n\n\u003cbr /\u003e\n\nLimits and quotas protect the Google infrastructure from an automated process\nthat uses the Reseller API in an inappropriate way. Excessive requests from\nan API might result from a harmless typo, or might result from an inefficiently\ndesigned system that makes needless API calls. Regardless of the cause,\nblocking traffic from a specific source when it reaches a certain level is\nnecessary for the overall health of the Google Workspace system. It ensures that\none developer's actions can not negatively impact the larger community.\n\nAPI request failures\n--------------------\n\nIn the unlikely event that your API request fails, your application receives an\nHTTP status code response. A status code of `403` has error\ninformation about incorrect input and an HTTP status code of `503`\nhas error information indicating which API quotas have been exceeded. These\nresponses let your custom application detect these errors and take appropriate\naction.\n\nTime-based errors\n-----------------\n\nFor all errors that are time based (maximum of N things for N seconds per\nthread), especially the `503` status code errors, we recommend that\nyour code catch the exception and by using\nan\n[exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff)\nalgorithm, wait for a small delay before retrying the failed call. A\nReseller API example for one thread\nis to wait 5 seconds and retry the failed call. If the request is successful,\nrepeat this pattern for the other threads. If the second request isn't\nsuccessful, your application should scale back on the frequency of the request\nuntil a call is successful. For example, increase the initial 5 second delay\nto 10 seconds and retry your failed call again. Also, decide on a retry limit.\nFor example retry a request 5 to 7 times with different delay times before\nyour application returns an error to the user.\n\nLimits\n------\n\n| API limit categories | Limits |\n|----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Subscription `purchaseOrderId` | This property accepts up to 80 plain text characters. |\n| Subscription `maxResults` | The `maxResults` query string can be 1 - 100 results. The default is 20 results. |\n| Transfer Token (`customerAuthToken`) | A customer's transfer token is valid for 30 days after it's generated. |\n| Maximum number of users for a customer | Depending on your contract, the maximum number of users can either be 50,000 or the maximum defined in your reseller contract. |\n| Unauthorized requests | Google doesn't allow unauthorized requests to the Reseller API. A request is considered unauthorized if no authorization token is provided. For more information, see [Learn about authentication \\& authorization](/workspace/guides/auth-overview). |\n\nOther types of limits\n---------------------\n\n| Other types of limits | Limitations and guidelines |\n|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data format | The data format is in the JavaScript Object Notation [JSON](https://wikipedia.org/wiki/JSON). \u003cbr /\u003e \u003cbr /\u003e JSON is a common internet format that provides a method of representing arbitrary data structures. JSON is a text format that is completely language-independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, and Python. |\n| Time format | All date times are in the [Epoch converter](https://www.epochconverter.com/) in milliseconds. This format applies to the values for the subscription creation time, a plan's commitment start and end times, and a 30 day free trial's end time. |"]]