Skip to main content

Overview

WebRun enforces rate limits to ensure fair usage and system stability. Rate limits are applied per user (API key owner), not per API key.
Rate limits are per user, not per API key. If you have multiple API keys, they all share the same rate limit.

Rate Limits by Endpoint


Rate Limit Details

Per-User Limits

All rate limits are tied to your user account, not individual API keys. This means:
  • Creating multiple API keys does not increase your rate limit
  • All requests from all your API keys count toward the same limit
  • Rate limits reset every minute
Example:

Per-Minute Window

Rate limits use a sliding window of 60 seconds:
  • At any given moment, you can make up to 10 requests
  • The window slides continuously (not fixed to clock minutes)
  • Requests older than 60 seconds ago don’t count toward your limit
Example Timeline:

Unlimited Endpoints

Some endpoints have no rate limits:
  • GET /task/:sessionId/:taskId - Poll as frequently as needed for task results
  • GET /v1/models - Retrieve model list anytime
  • GET /start/health - Monitor system health without restrictions
  • GET /start/active-sockets - Check active connections anytime
Use polling endpoints freely for monitoring long-running tasks without worrying about rate limits.

Rate Limit Headers

WebRun API responses include rate limit information in HTTP headers: Example Response Headers:
Example 429 Response Headers:

Handling 429 Errors

Error Response Format

When you exceed the rate limit, you’ll receive a 429 Too Many Requests response:
HTTP Headers:

Retry Strategy

Implement exponential backoff when handling rate limits:

Check Rate Limit Before Request

Proactively check remaining rate limit from headers:

Best Practices

1. Batch Operations

Instead of making many small requests, combine operations into fewer requests: Bad - Multiple requests:
Good - Use persistent sessions:

2. Use Polling Efficiently

Polling endpoints have no rate limit, so use them instead of creating new requests: Bad:
Good:

3. Implement Request Queuing

Queue requests to stay within rate limits:

4. Monitor Rate Limit Headers

Always check rate limit headers to avoid hitting limits:

5. Use WebSocket for Real-Time Updates

WebSocket connections don’t count toward rate limits: Bad - Polling via REST:
Good - WebSocket events:

Common Rate Limit Scenarios

Scenario 1: Batch Processing

Problem: Need to process 100 tasks Solution: Create sessions and spread requests over time

Scenario 2: Real-Time Monitoring

Problem: Need to monitor multiple sessions in real-time Solution: Use WebSocket instead of REST polling

Scenario 3: Burst Traffic

Problem: Occasional bursts of 20-30 requests Solution: Implement request queuing with automatic throttling

FAQ

Can I increase my rate limit?

Currently, rate limits are fixed at 10 requests per minute per user. Enterprise plans with higher rate limits may be available in the future.

Do WebSocket connections count toward rate limits?

No. WebSocket connections and messages do not count toward rate limits. Only REST API requests are rate limited.

What happens if I hit the rate limit?

You’ll receive a 429 Too Many Requests response with a Retry-After header indicating how long to wait before retrying.

Are rate limits shared across API keys?

Yes. Rate limits are per user, not per API key. All your API keys share the same rate limit.

Can I check my current rate limit usage?

Yes. Check the X-RateLimit-Remaining header in any API response to see how many requests you have left in the current window.

Do failed requests count toward the rate limit?

Yes. All requests count toward the rate limit, including those that fail with 4xx or 5xx errors.

Next Steps

Endpoints

Complete endpoint reference

Parameters

Parameter documentation

Response Formats

Response format reference

Error Handling

Error handling guide