Open Messaging API 400 on Quick Replies

Trying to send a structured message with quick replies via the Open Messaging API. The POST to /api/v2/external/omnichannel/messages keeps returning a 400 Bad Request.

Here’s the payload I’m sending:

{
 "type": "quick_reply",
 "quick_replies": [
 { "label": "Option 1", "value": "opt1" }
 ]
}

The docs say this is valid but the response body is empty.

You’re hitting the wrong endpoint for direct messaging. /api/v2/external/omnichannel/messages is for inbound webhooks or specific integration scenarios, not for sending outbound messages as a bot or agent. You’ll need to use the Conversations API instead.

Try this payload structure against /api/v2/conversations/messages/{conversationId}/messages:

{
 "type": "application/vnd.nice.cxm.message+json",
 "text": "Pick an option:",
 "quickReplies": [
 {
 "label": "Option 1",
 "value": "opt1"
 }
 ]
}

The key difference is the type field. It has to be the full MIME type, not just quick_reply. Also, check your OAuth token scopes. You need conversation:message:write and conversation:write. If you’re still getting a 400, enable debug logging on the channel and check the raw request trace. The error usually hides in the media type mismatch.