Dealing with a very strange bug here with the WFM scheduling API.
- Context:
- Environment: Genesys Cloud US1 region
- Tool: JMeter 5.6
- Scenario: Simulating 50 concurrent requests to update agent schedules via
/api/v2/wfm/scheduling/schedules - Duration: Errors start appearing after 3 minutes of steady load
- Rate: 10 requests per second per user thread group
- Issue:
- Receiving HTTP 429 Too Many Requests errors consistently.
- The response body contains a
Retry-Afterheader but the value is inconsistent, sometimes 1s, sometimes 5s. - The request payload includes valid JSON with shift details, skills, and availability blocks.
- No 400 Bad Request errors, so the payload structure is correct.
- JMeter Config:
- Thread Group: 50 threads, ramp-up 10s, loop count 100
- HTTP Request Defaults: Target URL
https://api.mypurecloud.com/api/v2/wfm/scheduling/schedules/{scheduleId} - Headers:
Content-Type: application/json,Authorization: Bearer <token> - Token Management: Using a separate thread group to refresh OAuth tokens every 50 minutes.
- Observations:
- The 429s occur even when the total request rate is below the documented limit of 100 requests per minute for WFM APIs.
- The errors are not distributed evenly across all threads; some threads succeed while others fail immediately.
- Adding a constant timer of 1000ms between requests reduces the error rate but does not eliminate it.
- Checking the WFM dashboard shows no unusual spikes in usage or errors from our tenant.
- Question:
- Is there a hidden rate limit for schedule updates that is lower than the general API limit?
- Are there specific headers or parameters needed to handle bulk schedule updates without hitting 429s?
- How should we adjust the JMeter script to respect the WFM API rate limits more accurately?
- Any advice on handling the inconsistent
Retry-Aftervalues in the load test script? - Additional Info:
- We have tried increasing the
Retry-Afterwait time in the script, but the 429s still occur. - The same script works fine with lower concurrency (10 threads) without any 429 errors.
- We are using the latest version of the Genesys Cloud API client libraries.