DFO Guest API WebSocket disconnects on message send

Building a custom chat UI using the DFO Guest API instead of the standard widget. The WebSocket connection establishes fine via wss://guest.{org}.purecloud.com/guest/v1, but sending a message payload results in an immediate close frame 1006. The JSON body matches the spec exactly. What am I missing?