Problem: We are trying to push typing indicators and read receipts to Genesys Cloud using the Web Messaging Guest API. The Python script builds a simple JSON payload and hits /api/v2/conversations/messaging/typing with a POST request. Here is what we are sending: {"conversationId": "abc-123", "guestId": "xyz-789", "state": "typing"}. The authentication token comes from a standard 2 client credentials flow, and the headers look fine. We’ve verified the conversation exists and the guest token is active. The request goes out, but the response comes back as a 400 Bad Request with a message saying Invalid typing state. We tried changing the state to stopped and read, but it keeps failing on the same endpoint. The rate limiter isn’t even triggering since we only fire one call every few seconds.
The Python SDK doesn’t have a dedicated method for this, so we are using requests.post() directly. We checked the raw response headers and the correlation ID matches our outbound call, but the payload structure seems off. Is there a specific timestamp format or extra field the Guest API expects that isn’t in the public docs? We keep guessing at the JSON schema. Not sure if we are missing a header or just formatting the body wrong. The logs are pretty useless here. The server just keeps rejecting the payload.