Guest API: 401 Unauthorized when posting typing indicators to /api/v2/conversations/messaging/typing

We are hitting a wall trying to implement typing indicators for our custom agent desktop using the Genesys Cloud Web Messaging Guest API. The goal is simple: when an agent starts typing, we want to send a signal to the guest widget so they see the “typing” animation.

We have the conversation ID and the participant ID from the active conversation object. We are constructing a POST request to /api/v2/conversations/messaging/typing. The documentation says we need an OAuth token with conversations:messaging:write scope. We are using the same token that successfully creates messages via /api/v2/conversations/messaging/messages.

Here is the payload we are sending:

{
 "conversationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
 "participantId": "p9q8r7s6-t5u4-3210-wxyz-9876543210ab",
 "text": "Agent is typing..."
}

The response we get back is consistently a 401 Unauthorized.

We’ve checked the following:

  • The token is not expired. We regenerate it every 55 minutes.
  • The scope conversations:messaging:write is definitely present in the token claims.
  • The participant ID matches the agent’s participant ID in the conversation, not the guest’s. We thought maybe we needed the guest ID, but that doesn’t make sense for an agent-initiated event.
  • We tried sending the request from Postman with the same token and got the same 401.

Is this endpoint actually supported for agent-side typing indicators? Or is this strictly for guest widgets to notify the platform? The docs are a bit vague on who can call this. We are using the .NET SDK for other parts of the app, but for this specific call, we are using raw HTTP via HttpClient to avoid any SDK abstraction issues.

We are in the US/Pacific timezone, but that shouldn’t matter. The conversation is active and in the “open” state. We can send text messages fine. Just the typing indicator fails with auth error.

You’re hitting a 401 because the Guest API endpoints require a specific guest token, not your standard platform client OAuth token. The /api/v2/conversations/messaging/typing endpoint expects the guest_token in the header, not Authorization: Bearer.

Here is how you need to structure that request. Note the header change:

POST /api/v2/conversations/messaging/typing
Content-Type: application/json
guest_token: <your_guest_token_here>

{
 "conversationId": "conv-123",
 "participantId": "part-456"
}

If you are using the PureCloudPlatformClientV2 SDK, don’t try to call this endpoint directly with the platform client. It will fail auth. Instead, use the messaging SDK’s sendTypingIndicator method which handles the token switching internally.

Also, check your guest token expiration. These tokens are short-lived. If your agent session is long, the token might expire mid-typing, causing silent failures. You’ll need to refresh the guest token via the guest API before it expires, usually around 5-10 minutes.

One more thing. Make sure the participant ID you are sending is actually the agent’s participant ID, not the guest’s. Sending the wrong ID does nothing.