Open Messaging API rejecting structured card payload with 400 Bad Request

I’m trying to send a structured quick reply card from our custom agent desktop using the Open Messaging API. The goal is to push a survey link to the customer via the guest widget. I have the conversation ID and the participant ID ready.

The code looks like this:

const payload = {
 "text": "Please rate your experience",
 "quickReplies": [
 {
 "label": "Good",
 "action": {
 "type": "postback",
 "payload": "rating_good"
 }
 },
 {
 "label": "Bad",
 "action": {
 "type": "postback",
 "payload": "rating_bad"
 }
 }
 ]
};

await sdkClient.conversationsMessagesApi.postConversationsMessages({
 conversationId: conversationId,
 body: payload
});

The API returns a 400 Bad Request. The error message says “Invalid message type”. I’m confused because the documentation says quick replies are supported. I have checked the token and it has the right scopes. The conversation is active and the participant is a guest. I tried sending a plain text message first and that worked fine.

Is the JSON structure wrong? I’m following the example from the docs but it keeps failing. Any ideas on what I’m missing?