Open Messaging API: Sending Cards via REST Proxy in Studio

I’m trying to send a structured card message from a CXone script using the REST Proxy action. The goal is to trigger a quick-reply card based on a user’s selection in the flow.

I’m using the standard POST to /api/v2/conversations/{conversationId}/participants/{participantId}/messages.

Here is the JSON payload I’m sending:

{
 "type": "card",
 "card": {
 "title": "Select an option",
 "subTitle": "Choose one",
 "actions": [
 {
 "type": "quickReply",
 "label": "Option A",
 "value": "opt_a"
 },
 {
 "type": "quickReply",
 "label": "Option B",
 "value": "opt_b"
 }
 ]
 }
}

The API call returns a 200 OK. No errors in the execution log. The message ID is generated.

However, the guest client receives a plain text message instead of the card UI. It looks like the card data is being stripped or ignored by the client rendering engine. If I send a plain text message with the same structure, it works fine.

I’ve checked the messageId and it exists in the conversation history. The type field is definitely card.

Is there a specific header or parameter required for card types? Or is the type value different for -initiated messages? I’ve tried structured as the type but that just fails with 400 Bad Request.

The participant is on the Web Messaging channel. I’m using the internal OAuth token for the REST Proxy auth.