These per-signer limits are separate from the existing Cloudflare IP-based
limits, which remain unchanged.
How Rate Limits Work
Each signer has an order bucket and a cancel bucket:Refill and Burst Capacity
Tokens refill continuously at the rate assigned to the current tier. Burst capacity is the maximum number of tokens a bucket can hold. A full bucket can spend up to that capacity immediately; after the burst is consumed, new tokens become available at the refill rate. Calculate the duration of a full burst as:Batch Requests
Under live enforcement, a batch is admitted only when the bucket contains enough tokens for every entry. Otherwise, the entire request is rejected and no entries are processed. This all-or-nothing rule applies to the rate-limit check; an admitted batch retains its normal per-order response behavior. A batch whose token cost exceeds the tier’s burst capacity can never be admitted as one request. Split it into smaller batches.Cancel All and Cancel Market Orders
The number of orders that will be canceled is not known whenDELETE /cancel-all or DELETE /cancel-market-orders begins. Each request
first consumes one cancel token. After the cancellation result is known, the
bucket is debited one additional token for every order successfully canceled.
For tiers that allow a negative cancel balance, this second debit can put the
bucket into debt. Future cancel requests remain blocked until the bucket has
enough tokens for the next request. Other tiers floor the post-cancel balance at
zero regardless of debit size.
Volume Tiers
Buckets are scoped to the signer address. Tier eligibility follows the cumulative trading volume of the maker wallet, even when it differs from the signer address. The volume window is currently 30 days, and tier assignments refresh every three hours.
Tier thresholds, the volume window, and rate limits may change as the system is
tuned. Polymarket will provide advance notice of significant changes.
Response Headers
Responses include the following headers when the limiter successfully evaluates a covered request:
The following headers appear only in specific cases:
Poly-RateLimit-Reset is not the time when the bucket will be completely full.
On a 429 response for a request whose token cost fits within burst capacity,
it indicates when enough tokens are expected for the attempted request. On an
admitted request, it may be the current timestamp.
Poly-RateLimit-Remaining can be negative after DELETE /cancel-all or
DELETE /cancel-market-orders for tiers that allow a negative cancel balance.
Before sending a large batch, compare its token cost with the remaining balance.
Handle 429 Responses
After live enforcement begins, a request that requires more tokens than the applicable bucket contains returns429 Too Many Requests.
For a request whose token cost is within the tier’s burst capacity,
Retry-After gives the minimum delay before retrying. You do not need to wait
for the bucket to refill completely. If the request costs more than the burst
capacity, split it into smaller requests instead of retrying it unchanged.