Guest API message creation returns 400 despite valid auth token

The dashboard connector keeps dropping packets right after the guest initialization. I’m trying to bypass the standard Messenger widget and hit the POST /api/v2/conversations/messaging/guests endpoint directly to feed raw message payloads into our analytics pipeline. The guest creation works fine, but the subsequent push to POST /api/v2/conversations/messaging/messages fails with a 400 Bad Request. The error payload returns "error":"invalid_message_format" even though the JSON matches the v2 spec exactly. I’ve been running this through a Node.js script that grabs a client_credentials token and pipes it into the Authorization header. The guest response gives back a valid id and externalContactId. I’m passing that externalContactId into the message body along with the conversationId pulled from the initial guest response. Here’s the exact payload: {"externalContactId":"guest-9f8a7b6c-1234-5678-90ab-cdef12345678","conversationId":"conv-1a2b3c4d-5678-90ab-cdef-1234567890ab","type":"text","text":"Test payload for analytics aggregation"}. The platform rejects it immediately. I’ve tried adding "from":{"id":"system"} but that just shifts the error to "error":"invalid_sender_identity". The Manila team’s aggregation workers depend on this raw stream to calculate first-response intervals, so the token refresh logic isn’t the issue here. The dateFrom and dateTo parameters aren’t even involved in this endpoint. What am I missing on the message structure? The docs mention a channelId requirement but don’t specify which one to use for pure API-driven guests. I’ve been testing this against the messaging channel type. The response headers show x-correlation-id but nothing useful in the body. I’m stuck on the payload schema.