Running a methodical test against the predictive routing configuration endpoints. Tokyo org on v11.3.0. The admin UI shows green when pushing bulk skill-queue mappings, but the backend starts throwing 429 Too Many Requests after exactly 47 concurrent POSTs to /api/v2/routing/queues/{queueId}/skills. Burst limit seems way lower than the documented sustained rate.
Setup is pretty straightforward. Using the Python SDK v2.14.3 with a custom OAuth2 client. Script loops through a CSV of routing profile IDs and skill codes, fires off the PATCH requests to update agent assignments, then hits the queue skill endpoint. Console logs show the 429s starting at 03:14 JST when the request queue depth hits 47. Rate limit headers return X-RateLimit-Remaining: 0 and Retry-After: 15.
Apologies for the basic question, but the docs only mention org-wide limits for analytics, not routing configuration endpoints. Tried staggering the requests with a 2-second delay between batches. Still hits the wall at 47. The incomplete trace below cuts off before the stack trace, but the pattern repeats every single time.
2024-05-12 03:14:22 INFO - POST /api/v2/routing/queues/a1b2c3d4-5678-90ab-cdef-1234567890ab/skills
2024-05-12 03:14:22 DEBUG - Request headers: Authorization: Bearer eyJ..., Content-Type: application/json
2024-05-12 03:14:23 ERROR - 429 Client Error: Too Many Requests for url: https://api.mypurecloud.com/api/v2/routing/queues/.../skills
2024-05-12 03:14:23 WARNING - Retry-After: 15
Admin panel just spins doing jack all. Tried clearing cache, same behavior. Tested with a clean sandbox org and the threshold stays locked at 47. Burst limit appears to be per-client ID rather than per-org. You’ll see the exact same cutoff if you run the load test twice.
Wait, the retry-after header actually says 12 on the third attempt. Not 15. Logs might be caching or the SDK is overriding the header. The script won’t proceed past batch four without manual intervention.
Endpoint: /api/v2/routing/profiles/{routingProfileId}
SDK: genesys-cloud v2.14.3
Org: Tokyo (v11.3.0)
Client scope: routing:queue:write routing:profile:write
Checking the raw response body now. It’s just returning a generic throttling JSON without the specific limit metadata.