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.