Rate Limits
Request quotas, burst limits, and how to handle 429 responses.
The UpHunt API enforces per-key rate limits to protect Upwork integrity and keep the platform responsive for everyone.
Limits by endpoint
| Endpoint | Limit | Notes |
|---|---|---|
POST /apply | 60/min, 1,000/day | One credit burned only on success. |
GET /status | 300/min | Poll freely — cheap and idempotent. |
GET /applied-jobs | 60/min | Cache results on your side where possible. |
POST /generate-proposal | 30/min, 500/day | High reasoning effort counts the same. |
GET /external/freelancers | 30/min | Cache for at least 5 minutes. |
Limits are per API key. If you run multiple environments (staging / production), generate a separate key per environment so their quotas don't share.
Response headers
Every response includes three headers you can use to pace yourself:
X-RateLimit-Limit— the ceiling for the current window.X-RateLimit-Remaining— requests left in the window.X-RateLimit-Reset— Unix seconds when the window rolls over.
When you hit 0 remaining, subsequent requests return 429 with a Retry-After header (seconds).
Handling 429
Blindly retrying on 429 will keep you rate-limited. Always respect Retry-After or back off exponentially with jitter.
Requesting higher limits
Shipping high-volume agency traffic? Contact support from the Dashboard — we can raise limits on a case-by-case basis for verified accounts.