POST /api/v2/conversations/webmessaging/messages returns 400 when sending quick reply cards

We are building a custom agent desktop widget using the .NET SDK and need to send structured messages to web chat customers. Specifically, we want to send a quick reply card with predefined options. The documentation for the Open Messaging API shows the payload structure, but we keep hitting a wall.

Here is the endpoint we are hitting:
POST /api/v2/conversations/webmessaging/messages/{conversationId}

And here is the JSON payload we are sending in the request body:

{
“message”: {
“text”: “How can I help you today?”,
“contentType”: “text/plain”
},
“items”: [
{
“type”: “card”,
“content”: {
“title”: “Account Inquiry”,
“quickReplies”: [
{
“label”: “Balance”,
“payload”: “query_balance”
},
{
“label”: “Billing”,
“payload”: “query_billing”
}
]
}
}
]
}

The response we get back is always a 400 Bad Request. The error message in the response body is vague:

{
“message”: “Invalid message format”,
“errors”:
}

We have verified the conversationId is correct and the agent has the necessary permissions. The simple text messages work fine when we omit the “items” array. But as soon as we add the card structure, it fails.

We are using the Genesys Cloud C# SDK. The code looks like this:

var request = new PostWebmessagingConversationMessagesRequest
{
Message = new WebmessagingMessage
{
Text = “How can I help you today?”,
ContentType = “text/plain”
},
Items = new List
{
new WebmessagingItem
{
Type = “card”,
Content = new WebmessagingCardContent
{
Title = “Account Inquiry”,
QuickReplies = new List
{
new WebmessagingQuickReply { Label = “Balance”, Payload = “query_balance” },
new WebmessagingQuickReply { Label = “Billing”, Payload = “query_billing” }
}
}
}
}
};

var response = await client.ConversationsApi.PostWebmessagingConversationMessagesAsync(conversationId, request);

We are stuck on this. The SDK models seem to match the JSON structure in the docs. But the API rejects it. We are not sure if the issue is with the nesting of the content object or if quick replies are not supported via this endpoint for agents. We need to send these cards from the agent side, not from a bot flow. Any insight on what we are missing? We’ve tried changing the contentType to application/json but that just makes it worse. The error stays the same.