Rate limits

Every API is rate limited, the token endpoint included. This page gives the numbers, the headers that tell you where you stand, and what to do when you are refused.

The limits

Policy What it counts Limit Window
burst Your calls to any product API 60 1 minute
daily Your calls to any product API 5,000 1 UTC day
broker_uploads Your uploads for one brokerage 500 1 UTC day
broker_daily Every integration's uploads for one brokerage, yours included 2,000 1 UTC day
token Exchanges at the token endpoint for your integration 10 1 minute
token_daily Exchanges at the token endpoint for your integration 1,000 1 UTC day
token_ip Exchanges at the token endpoint from one IP address 30 1 minute
unauthenticated Calls whose access token fails verification, from one IP address 60 1 minute

The headers

Every response carries two headers, defined by the latest IETF draft, draft-ietf-httpapi-ratelimit-headers-11.

RateLimit-Policy lists every limit that applies to the request, by name, with its quota q and its window w in seconds:

RateLimit-Policy: "burst";q=60;w=60, "daily";q=5000;w=86400

RateLimit says, for each of those limits, how many requests remain (r) and how many seconds remain until the window resets (t):

RateLimit: "burst";r=41;t=23, "daily";r=4870;t=51300

When you are refused

A refused request is answered 429 Too Many Requests.

{
  "status": 429,
  "reason": "rate_limited_burst",
  "message": "The burst limit of 60 requests per 60 seconds has been reached. Retry after 37 seconds.",
  "requestId": "2f4a5f8e-9d3c-4b6e-8f4a-0c5b1e7d2a90"
}