Architect API 429s when simulating script updates via JMeter

HTTP/1.1 429 Too Many Requests
Retry-After: 1
Content-Type: application/json
{
 "message": "Rate limit exceeded.",
 "code": "too_many_requests"
}

Running JMeter 5.6.2 from Asia/Singapore. Trying to validate the throughput limits for the Agent Scripting API endpoints. The goal is to see how many script updates the system can handle before throttling kicks in, specifically for /api/v2/architect/scripts.

The test plan uses a simple thread group with 20 concurrent users. Each thread performs a PUT request to update a specific script’s text content. The payload is small, just a few hundred bytes of JSON. I have disabled all caching and cookies. The endpoint is https://api.mypurecloud.com/api/v2/architect/scripts/{scriptId}.

The issue is that I am hitting 429 errors almost immediately, even at this low concurrency. I am not seeing the X-Rate-Limit-Remaining header in the responses, which makes it hard to understand the exact limit being hit. Is there a specific rate limit for script updates that is separate from the general API limits?

I have checked the Genesys Cloud documentation, but it is not clear about the specific limits for the Architect Scripting API. The general API limit is 1000 requests per second per organization, but I am nowhere near that. I am also not seeing any 429s when testing other endpoints like /api/v2/users.

Could someone clarify the rate limiting behavior for script updates? Also, are there any best practices for batching script updates to avoid hitting these limits? I am trying to build a robust load testing framework, so understanding these limits is crucial.

Here is the JMeter thread group configuration:

  • Thread Count: 20
  • Ramp-Up Period: 0
  • Loop Count: 100

The request body is a simple JSON object with the script text. I am using the same script ID for all threads to simulate concurrent updates to the same resource. I am also using a constant throughput timer to limit the overall request rate to 10 requests per second, but I am still seeing 429s.

Any insights or debugging steps would be appreciated. I am stuck on this and need to move forward with the load testing.