429 on bulk user updates via REST API

No idea why this is happening, my python script hits 429 too many requests after 10 concurrent PATCH calls to /api/v2/users/{id}. the retry logic with exponential backoff should handle it but the rate limit header x-ratelimit-remaining drops to zero instantly. is there a specific jitter implementation required for the genesyscloud provider context or am i missing a header?

response = session.patch(url, json=payload, headers=headers)
if response.status_code == 429:
 wait_time = min(64, 2 ** attempt + random.uniform(0, 1))
 time.sleep(wait_time)

This is actually a known issue… 429 Too Many Requests: Rate limit exceeded for tenant scope. The problem isn’t your jitter logic; it’s that PATCH /api/v2/users shares a global rate limit with other identity operations, and concurrent connections exhaust the bucket faster than your backoff can recover. In my Kafka Connect source tasks, I avoid parallel REST calls entirely for bulk identity updates. Instead, I batch the changes and use the bulk API endpoint which handles throttling internally. Switch your Python script to POST /api/v2/users/bulk-update. Here is the payload structure:

{
 "operations": [
 {
 "id": "user-id-1",
 "method": "PATCH",
 "body": { "firstName": "Updated" }
 }
 ]
}

This respects the underlying connection pooling limits much better. Also, ensure your OAuth token has user:write scope. If you must stick to individual patches, serialize them strictly. Parallelism kills the rate limit counter here. Check your x-ratelimit-reset header to see when the bucket refills, usually 60 seconds for this scope. Don’t fight the rate limiter; work with the bulk endpoints or serialize the requests.