Can anyone clarify the expected behavior when hitting the OAuth token refresh endpoint under heavy concurrent load? We are running a stress test using JMeter to simulate 200 agents logging in simultaneously via the WebRTC softphone. The test hits /v2/oauth/token with grant_type=refresh_token. After about 50 seconds, the success rate drops sharply. Most requests return a 401 Unauthorized error with the message invalid_grant: The refresh token has been revoked or expired. This happens even though the refresh tokens were issued less than 10 minutes ago and are well within the standard lifetime.
The environment is Genesys Cloud US East, and we are using the standard REST API v2 endpoints. The JMeter script is configured to handle token rotation automatically, but the 401 errors seem to cascade. Once one agent gets a 401, the subsequent requests from the same thread group also fail. We checked the logs and see no corresponding 429 Too Many Requests errors, which suggests this is not a simple rate-limiting issue. The load pattern is a ramp-up over 30 seconds to 200 users, holding for 5 minutes. The issue is reproducible every time we exceed 150 concurrent refresh requests.
We are unsure if this is a platform-side revocation policy triggered by suspicious activity or a bug in the token validation service. The tokens are generated using a service account with full oauth:token:read and oauth:token:write scopes. We have verified that the client ID and secret are correct. The error occurs consistently across different regions, so it is not isolated to our network. We need to understand if there is a hard limit on concurrent token refresh operations per client ID.
Any insights into the backend rate limits for /v2/oauth/token would be appreciated. We are trying to model the capacity for a large BPO client. If there is a known limit, what is the recommended workaround? Should we implement a token caching strategy on the client side to reduce the refresh frequency? We want to avoid hitting these limits during peak hours. Please share any documentation or experience with similar load patterns.