Pterodactyl implements rate limiting to protect the Panel from abuse and ensure fair resource usage. Different endpoints have different rate limits.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pterodactyl/panel/llms.txt
Use this file to discover all available pages before exploring further.
API Rate Limits
Client API
The Client API has a default rate limit of 256 requests per minute per user or IP address. Configuration: Set via environment variable:config/http.php:
Application API
The Application API has a default rate limit of 256 requests per minute per API key or IP address. Configuration: Set via environment variable:config/http.php:
Authentication Endpoints
Authentication endpoints have stricter rate limits to prevent brute force attacks:Login & Two-Factor
- 10 requests per minute for login and checkpoint endpoints
- Applied to the client IP address
Password Reset
- 2 requests per minute for password reset requests
- Prevents email spam and abuse
Resource-Specific Throttling
Certain resource-intensive operations have additional throttling beyond the standard API limits:Backup Creation
Backups are throttled to prevent excessive resource usage: Default Configuration:Server Resources
Individual server operations are throttled to prevent rapid-fire actions:- Databases: Rate limited per server
- Backups: Rate limited per server
- File Pull: Rate limited per server
- Allocations: Rate limited per server
- Schedules: Rate limited per server
- Subusers: Rate limited per server
- Websocket: Rate limited per server
Rate Limit Tracking
Rate limits are tracked by:- Authenticated Users: Tracked by user UUID
- Unauthenticated Requests: Tracked by IP address
app/Providers/RouteServiceProvider.php):
Rate Limit Headers
API responses include rate limit information in the headers:X-RateLimit-Limit: Maximum requests allowed in the time windowX-RateLimit-Remaining: Requests remaining in current windowRetry-After: Seconds until the rate limit resets (only when limit exceeded)
Rate Limit Response
When you exceed the rate limit, you’ll receive a429 Too Many Requests response:
SFTP Authentication
SFTP authentication has its own throttling mechanism to prevent brute force attacks:- Failed authentication attempts are tracked per server
- Throttle key:
sftp.{server_id}:{request_ip} - When throttled, returns seconds until available
Best Practices
1. Implement Retry Logic
2. Monitor Rate Limit Headers
3. Batch Requests
When possible, use endpoints that support includes to reduce the number of requests:4. Cache Responses
Cache API responses when the data doesn’t change frequently:5. Use Pagination Wisely
Don’t request all resources at once. Use pagination:Adjusting Rate Limits
For high-traffic installations, you can increase rate limits: Environment Variables:config/backups.php):
Historical Context
Version 1.12.1 (March 2026):- Default Client API rate limit increased from 128 to 256 requests per minute
- Change made to reduce “Too Many Requests” errors for legitimate users
- Client API rate limit increased from 240 to 720 requests per minute (later adjusted)
Troubleshooting
Consistently Hitting Rate Limits
- Review your code for unnecessary API calls
- Implement caching for frequently accessed data
- Use includes to fetch related resources in single requests
- Consider increasing limits if running a high-traffic installation
Rate Limits Not Working
- Verify cache driver is properly configured (Redis recommended)
- Check that environment variables are set correctly
- Clear configuration cache:
php artisan config:clear - Verify rate limiter middleware is applied to routes
