Every tier has rate limits. They exist because infrastructure costs money and because some of you would poll the verdict endpoint every 50 milliseconds.
| Tier | Requests/min | Burst | WebSocket Streams | Webhook Endpoints |
|---|---|---|---|---|
| Tourist | 30 | 10 | 1 | 1 |
| Adequate | 120 | 30 | 5 | 5 |
| Business | 600 | 100 | 25 | 25 |
| Enterprise | Custom | Custom | Unlimited | Unlimited |
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1739808060
X-RateLimit-Tier: adequate
X-RateLimit-Patience: diminishing When you hit the rate limit, the engine returns a 429 with a Retry-After header. The response body message escalates:
| Violation # | Response Message |
|---|---|
| 1st | “Rate limit exceeded. Please wait.” |
| 2nd | “We discussed this.” |
| 3rd | “The engine is beginning to take this personally.” |
| 4th | “Your requests have been noted. In a file.” |
| 5th+ | “Congratulations. You’ve been added to a list.” |
After 10 violations within a rolling hour, your token is temporarily suspended for 15 minutes.