Conversations API PATCH for chat canned response returns 400 Bad Request

I’ve spent the last few hours trying to inject a canned response into an active chat interaction using the Conversations API. The goal is to trigger this from a custom desktop widget via the Client SDK, but the server keeps rejecting the request with a 400 Bad Request. The error message is pretty sparse, just saying Invalid request body without pointing to a specific field.

Here is the payload I’m sending to PATCH /api/v2/conversations/chat/{conversationId}:

{
 "action": "send-message",
 "message": {
 "type": "text",
 "text": "Here is the info you requested."
 }
}

I’ve verified the conversationId is valid by fetching the conversation details first. The user ID in the token matches the agent logged into the desktop. I also tried adding the userId field explicitly in the payload, thinking maybe the system needs to know who is sending it, but that just resulted in a 409 Conflict error about duplicate actions.

{
 "action": "send-message",
 "userId": "agent-id-123",
 "message": {
 "type": "text",
 "text": "Testing"
 }
}

Looking at the SDK docs, there isn’t a direct sendCannedResponse method in the conversation client, so I’m falling back to the raw HTTP call. I’ve checked the headers, and the Content-Type is definitely application/json. The OAuth token is fresh, obtained via the standard flow we use for other API calls.

Is there a specific schema requirement for the message object when sending via PATCH? Or is this action only available through the WebSocket stream events? I’m stuck on why the basic text message structure is failing.