Hi all,
I’m hitting a wall with the throttle endpoint. I’m following the documentation to the letter, but I keep getting a 400 error.
The docs explicitly state: “Throttle configurations must include a valid consumerGroupId and a rateLimitMatrix object with integer values for maxBacklog”.
I’m sending a PUT to the EventBridge subscription throttle configuration endpoint with this payload:
{
"consumerGroupId": "cg-12345",
"rateLimitMatrix": {
"maxBacklog": 5000,
"queueDepth": 200
},
"autoPauseThreshold": 0.8
}
This matches the schema exactly. maxBacklog is an integer. queueDepth is an integer. Yet the response payload just says “Invalid throttle payload structure”. Why does this not work?
- Go 1.21 client
- PUT request with
Content-Type: application/json
- Valid bearer token for the org
- Subscription ID exists and is active
The error log shows a schema violation on queueDepth even though it’s an integer. Format verification is definitely failing on that field.
I’ve built SSO bridges for years and this is the first time the docs have led me astray. Can someone explain why the format verification is failing?
Checking the Admin UI network traffic during a Throttle Configuration update reveals the actual payload structure because the documentation often omits the required wrapper object for the EventBridge subscription. Your Go struct is likely missing the proper nesting for the RateLimitMatrix or the JSON tags are misaligned with the API expectation. The ConsumerGroupId must be present at the root level of the request body and not passed as a query parameter. You’ll find the API rejects the payload if the MaxBacklog value isn’t explicitly typed as an integer within the matrix object. The Admin UI configuration screen shows the exact hierarchy needed. It’s also possible the endpoint requires a specific Throttle Configuration version header. You should verify the Content-Type is set correctly. The Admin UI shows the payload clearly when you save the settings. The RateLimitMatrix object requires the MaxBacklog field to be strictly defined. You’ll need to ensure the ConsumerGroupId matches the subscription context. The Admin UI validation logic enforces these rules strictly. You can inspect the Network tab to see the exact JSON being sent. Your Go code must marshal this structure correctly. Just check the network tab. Here is the corrected payload structure you need to send to resolve the 400 error.
{
"consumerGroupId": "your-group-id",
"rateLimitMatrix": {
"maxBacklog": 1000
}
}
2 Likes