Genesys Cloud to AWS EventBridge: 403 SignatureDoesNotMatch on real-time event subscription

Hey team,

I’ve been trying to wire up our Genesys Cloud instance to AWS EventBridge to capture real-time interaction events. The goal is simple enough: get a webhook fired when a conversation starts so we can trigger some downstream logic in Lambda. I’ve got the EventBridge API destination and the Genesys Cloud webhook integration configured, but the handshake keeps failing.

I’m using the standard OAuth 2.0 client credentials flow to get the access token for the initial setup, but EventBridge seems to be rejecting the signature verification for the test event. Here’s the basic structure of the webhook I’m pushing to EventBridge:

POST https://api.eventbridge.aws.amazon.com/put-events
Content-Type: application/json

{
 "Entries": [
 {
 "Source": "genesys.cloud",
 "EventBusName": "default",
 "DetailType": "InteractionCreated",
 "Detail": "{\"conversationId\": \"12345\", \"type\": \"voice\"}",
 "Time": "2023-10-27T14:30:00Z"
 }
 ]
}

When I trigger a test event from the Genesys Cloud admin console, I get a 403 Forbidden back from AWS. The error message in the EventBridge console says SignatureDoesNotMatch. I’ve double-checked the IAM role attached to the EventBus and it has the events:PutEvents permission.

Is there a specific header or authentication method Genesys Cloud uses when posting to EventBridge that I need to account for? I’m not finding much in the docs about the exact signature algorithm expected by EventBridge for this specific integration.

Any code snippets or configuration examples for the EventBridge side would be appreciated. I’m pretty sure the issue is on the AWS side since the Genesys webhook shows a successful 200 response in the logs, but the event never lands in the bus.