Limits
Transaction sizes, submission rates and connection limits.
Submission rate
Your API key has a configured send rate in each region. A transaction or bundle uses one submission; queries do not count. A separate bundle-rate limit may apply.
For rate_limited, use per_second and retry_after_ms when
included. Slow down and wait before retrying instead of opening more connections.
Request sizes
| Request | Limit |
|---|---|
| Legacy or v0 transaction | 1,232 wire bytes |
| v1 transaction | 4,096 wire bytes |
| Bundle | 1 to 4 transactions, each within its transaction limit |
| JSON-RPC request | 65,536 body bytes; one request, not a batch |
Use base64 for transactions above 1,232 bytes. Binary and QUIC formats have their own HTTP, QUIC and IPC reference pages.
too_large reports the allowed limit and the submitted size
when known. For a bundle, index identifies the affected transaction.
Connections
Reuse connections rather than creating one per submission.
| Hosted connection | Limit in each region |
|---|---|
| HTTP/HTTPS from one source IPv4 address | 256 open connections combined |
| QUIC using one API key | 32 open connections |
The local agent does not apply the hosted HTTP per-IP limit.
Timeouts
Finish writing request bodies within two seconds. If a request times out or disconnects, its outcome may be unknown: check the transaction's signature before replacing it.
Busy regions
For overloaded or a temporary not_ready,
wait and retry while the transaction is valid, or choose another region.
Declared tips
Contact support to enable declared tips and arrange payment.
The request's tip is a positive integer in lamports; use a safe integer in JavaScript.