Rate Limits
Understanding and respecting API rate limits ensures reliable, high-performance integrations that scale with your prop firm’s growth.
Rate Limit Overview
The Tradovate API implements a two-tier rate limiting system:
- User-Level Limits: Applied per user (by user ID) across all endpoints
- Endpoint-Level Limits: Applied per IP address for specific endpoints
When an endpoint rate limit is exceeded, the user must wait the amount of seconds specified in the p-time before making another request of the same type.
Considerations
- Two-tier rate limiting: Both user-level limits (based on authentication) and endpoint-level limits apply simultaneously. Your requests must respect both.
- Sliding time window: Endpoint limits use a rolling 1-hour window, not a fixed hourly reset.
- Shared IP limits: Endpoint limits are tracked by IP address. If you’re behind a shared IP (corporate network, VPN, shared hosting), you may share limits with other clients.
- Back-off behavior: Repeated violations may extend the required wait time before you can retry.
- Request counting: Some endpoints count all requests toward the limit, while others only count failed requests. See the “Count Success” column in each table.
Rate Limits
User-Level Rate Limits
Endpoint-Level Rate Limits
Authentication Endpoints
User Management Endpoints
Trading Permission Endpoints
Account & Risk Management Endpoints
Subscription & Entitlement Endpoints
Admin Alert Endpoints
Contact Info Endpoints
Rate Limit Responses
User-Level Rate Limits Exceeded (429 Response)
For general rate limit violations, when a limit is reached, the server stops handling requests for a period of time and responds to each new request with a 429 status code.
HTTP Response
WebSocket Response
Handling 429 Responses
- Wait 1 hour before sending another request
- Cannot be resolved programmatically from third-party applications
Endpoint-Level Rate Limits Exceeded (Penalty Ticket)
For endpoint-level rate limit violations, the system may return a penalty ticket (p-ticket) returned in successful HTTP responses (200 OK), not as 429 errors. When you receive a penalty ticket, the request was not handled and the server has imposed a time penalty.
p-ticket: Encrypted penalty token tied to your IP address - must be included as an additional parameter in the request body’s JSON when retryingp-time: Penalty duration in seconds - wait this long before retrying the callp-captcha: Whether reCAPTCHA verification is required (optional field) - whentrue, the operation cannot be tried again from a third party application and users should be alerted that they should try the operation again in an hour
HTTP Response
WebSocket Response
Handling Penalty Tickets (P-Tickets)
When you receive a penalty ticket response:
- Check for
p-captcha: Iftrue, stop immediately and inform users to retry in 1 hour (cannot be resolved programmatically from third-party applications) - Wait
p-timeseconds: The client can retry the call inp-timeseconds - Retry with
p-ticket: Includep-ticketas an additional parameter in the request body’s JSON along with your original request data
p-captcha: true can occur is upon too many authentication requests with sent bad data (incorrect username or password).Authentication Failures: Multiple failed login attempts will trigger increasingly severe rate limits, potentially leading to reCAPTCHA requirements that cannot be bypassed programmatically.
Rate Limits Best Practices
Do’s ✅
- Check response bodies for penalty tickets - Even successful (200 OK) responses may contain
p-ticketfields - Wait the full
p-timeduration before retrying penalty ticket requests - Include
p-ticketin retry requests - Add it to the original request body when retrying - Check
p-captchafirst - Always verify this field before attempting retries - Cache responses appropriately to reduce API calls
- Use batch endpoints when available
- Prioritize critical requests (orders, risk management)
- Set up monitoring and alerting for rate limit usage
- Handle authentication failures gracefully - Track failed attempts to prevent lockouts
Don’ts ❌
- Don’t ignore penalty tickets - Always check response bodies for
p-ticketfields, even on successful responses - Don’t retry when
p-captcha: true- Stop immediately and inform users to wait 1 hour - Don’t retry before waiting
p-timeseconds - Respect the full penalty duration - Don’t forget to include
p-ticket- The retry request must include the penalty ticket - Don’t make unnecessary API calls - Cache when possible to avoid hitting limits
- Don’t exceed rate limits consistently - This may result in temporary blocks or reCAPTCHA requirements
- Don’t implement infinite retry loops - Set maximum retry attempts
- Don’t skip authentication rate limits - These are stricter and may trigger reCAPTCHA
Requesting Higher Limits
For high-volume integrations, you can request increased rate limits:
Eligibility Criteria
- Established partnership with proven integration
- Proper rate limit handling implemented
- Business justification for higher limits
- Technical review of integration architecture
Support
Need help with rate limiting?
- Partner Success Team - Rate limit increase requests
- Support Center - Troubleshooting guides

