Sending canned response in chat via API returns 400

Trying to inject a canned response into an active chat session using PUT /api/v2/conversations/chats/{conversationId}/participants/{participantId}. The body looks valid:

{"message": {"text": "Here is the info you requested."}, "type": "canned"}

Getting a 400 Bad Request with invalidMessage. The docs say type should be canned but nothing works.

You’re hitting the 400 because the message object in that specific participant endpoint expects a ConversationParticipantEvent structure, not just a raw text payload. The type: "canned" flag is actually for internal analytics tagging, not for forcing the system to pull from the canned response library. If you want to actually send a pre-approved canned response, you need to use the dedicated message endpoint instead.

Try hitting POST /api/v2/conversations/chats/{conversationId}/messages with this payload:

{
 "type": "text",
 "to": {
 "id": "{participantId}"
 },
 "text": "Here is the info you requested.",
 "cannedResponseId": "{your-canned-response-id}"
}

You’ll need to fetch the cannedResponseId from your org’s canned responses list first. Using the participant endpoint to push messages is really meant for status updates or presence changes, not for injecting chat content. It’s a common mix-up since the docs group them under the same conversation hierarchy. Make sure your OAuth token has the conversation:chat:send scope or you’ll get a 403 instead.