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.