POST /api/v2/conversations/cobrowse returns 400 Bad Request with invalid_action

Docs state: “To initiate a co-browse session, send a POST request to the /api/v2/conversations/cobrowse endpoint with a valid conversation ID and agent ID.”

I’m trying to kick off a cobrowse session programmatically via the API rather than through the standard agent UI trigger. The flow is straightforward. I have an active voice conversation. I have the conversation ID. I have the agent ID.

The request looks like this:

POST /api/v2/conversations/cobrowse
Authorization: Bearer <valid_token>
Content-Type: application/json

{
 "conversationId": "conv-12345-abcde",
 "agentId": "agent-98765-fghij",
 "action": "initiate"
}

The response is HTTP 400. The error payload is:

{
 "message": "Invalid action specified for conversation type",
 "code": "invalid_action",
 "status": "Bad Request"
}

I’ve checked the token permissions. It has cobrowse:read and cobrowse:write. The conversation exists. The agent is logged in and active. I even tried swapping the action to start just in case, but that throws a 404.

Is there a specific prerequisite status the voice conversation needs to be in before cobrowse can attach? The docs don’t mention any state requirements. Just “send a POST request”.

I’m using the Python SDK for the token generation part, but hitting the REST endpoint directly for this call. The token is fresh. Less than 30 seconds old.

This feels like a mismatch between the conversation type and the allowed actions. But cobrowse is listed as a supported channel for voice conversations in the product guide.

Any ideas what’s missing? I’ve been staring at this for two hours. The JSON structure matches the example in the swagger doc exactly.