Open Messaging API rejecting structured quick reply payload

POST /api/v2/conversations/messaging/contacts/{contactId}/messages returns 400 Bad Request. The error message says Invalid message type for channel. Here is the JSON body we are sending via the Node SDK:

{
 "content": {
 "quickReplies": [
 {
 "title": "Option 1",
 "value": "opt1"
 }
 ]
 }
}

The contact is active and the channel is web. The API docs say this structure is valid for web messaging. Are we missing a required field in the content object?