Skip to content

Rate limits

API routes

Your integration can make 60 requests a minute across all /external/v1 routes by default. Every answer tells you where you stand:

Header Meaning
X-RateLimit-Limit Your limit per minute
X-RateLimit-Remaining What is left in this minute

Read these headers rather than assuming 60. A call that fails validation still counts. Over the limit you get a 429, and the count starts again at the next full minute.

If you need more, ask your Speakeasy contact.

Guest list imports

Guest list imports also have their own limits:

Limit Default
Import requests per minute 10
New entries per minute 1,000
Imports running at the same time 2

These answers also carry X-Guest-List-Import-RateLimit-Limit and X-Guest-List-Import-RateLimit-Remaining. Their 429 answers come with a Retry-After header in seconds. Wait that long, and then retry with the same Idempotency-Key.

Venue routes

The venue routes do not have a limit per key yet, and one may be added. Be gentle: sync answers have no paging and can be large, so call one route at a time, and leave a good gap between runs. A few times a day is plenty for most integrations.

Everywhere

A very high request rate from one address is blocked at our network edge for a time. That also answers 429, with this body:

{
  "statusCode": 429,
  "message": "Rate limit exceeded. Please try again later.",
  "error": "Limit exceeded"
}

Retrying

Wait before you retry, and wait longer each time. Add some randomness, so your workers do not all retry at the same moment. A 503 means a service we need is down for a moment, and the same advice applies.