This guide will be removed on April 29, 2022. Please use our new, easier-to-use Toast technical documentation site. All updated content is on the new site.

Rate limit types and priority

Toast APIs use the following rate limit types:

Global rate limit

This rate limit is applied to requests made across all Toast APIs collectively. For example, assuming a global rate limit of 20 requests/second, your API client can make a total of 20 requests per second, regardless of which API those requests are sent to. So, sending 15 requests to the orders API and 5 requests to the labor API in the same second is acceptable but sending 20 requests to the orders API and 20 requests to the labor API in the same second is not.

API rate limits

API rate limits are applied to requests made against individual APIs, for example, the orders API or the labor API. Toast APIs have a default API rate limit.

There are currently no custom rate limits for individual Toast APIs.

Endpoint rate limits

Endpoint rate limits apply to requests that are made to individual endpoints, such as requests to the /orders/{guid} endpoint of the orders API.

The global rate limit has the highest priority, followed by the API rate limit, and then the endpoint rate limit.

When a rate limit with a higher priority is reached, the client application is considered rate limited, even if rate limits with a lower priority have not been reached yet.

To better understand how rate limit priority works, consider the following example:

  • Global rate limit: 20 requests/second, 10,000 requests/15 minutes

  • Orders API rate limit: 10 requests/second

  • Time slice: 09:00:00 - 09:00:01

At 09:00:00, ClientA makes a request to the orders API service for RestaurantA. After this request is made, the requests remaining on each rate limit are:

  • Global requests remaining: 19 requests/second, 9,999 requests/15 minutes

  • Orders API requests remaining: 9 requests/second

Between 09:00:00 and 09:00:01, ClientA makes an additional 19 requests for RestaurantA to services other than the orders API. After these requests are made, the requests remaining on each rate limit are:

  • Global requests remaining: 0 requests/second, 9,980 requests/15 minutes

  • Orders API requests remaining: 9 requests/second

Because the global rate limit has the highest priority and its rate limit has been reached, the client application is rate limited, even though orders API requests are still available. ClientA can no longer make requests until the next time slice starts at 09:00:01.