We’re hitting a wall trying to push structured messages (specifically quick reply buttons) via the Open Messaging API. The goal is to send a follow-up card to a guest who was previously in a web chat session, but we’re getting a 400 Bad Request when we include the quickReplies array in the payload.
Here’s the JSON body we’re sending to /api/v2/conversations/messaging/conversations/{conversationId}/messages:
{
"to": [
{
"id": "guest-uuid-12345",
"type": "guest"
}
],
"content": {
"text": "How can we help you today?",
"quickReplies": [
{
"title": "Support",
"action": {
"type": "send-text",
"payload": "I need support"
}
},
{
"title": "Sales",
"action": {
"type": "send-text",
"payload": "I need sales"
}
}
]
}
}
The error response is pretty generic:
{
"errors": [
{
"message": "Invalid content structure",
"code": "invalid_request"
}
]
}
I’ve verified the OAuth token is valid and has the messaging:write scope. If I strip out the quickReplies array and just send plain text, the message goes through fine. It seems like the API doesn’t like the nested action object or maybe the type field inside it.
I’m using the Node.js Platform SDK (genesys-cloud/genesyscloud-nodejs), but I’ve also tested this directly with curl to rule out SDK serialization issues. Same result.
Is there a specific schema version I need to target? Or is the quickReplies structure different for proactive messages versus real-time session messages? The docs are a bit vague on this distinction. Any pointers on the correct payload shape would be appreciated.