400 Bad Request on POST /api/v2/conversations/cobrowse/sessions with valid access token

I’m trying to kick off a cobrowse session programmatically from our Kotlin Android app using the Genesys Cloud Conversations API. We’ve got the Web Messaging SDK running for the chat part, but now we need to trigger a cobrowse session directly via the API when a specific intent is matched.

I’m hitting POST /api/v2/conversations/cobrowse/sessions with a Bearer token that works fine for other endpoints. The request body looks like this:

{
 "conversationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
 "initiator": {
 "id": "agent-user-id-123"
 },
 "target": {
 "id": "customer-user-id-456"
 }
}

The response comes back immediately with a 400 Bad Request and this payload:

{
 "errors": [
 {
 "message": "Target user does not have an active conversation or is not in the correct state for cobrowse",
 "code": "invalid_request"
 }
 ]
}

The conversationId is definitely active. I can see it in the UI and fetch its details via GET /api/v2/conversations/webmessaging/{id} without issues. The agent and customer IDs are pulled directly from the conversation participants list.

I’ve checked the API docs for cobrowse/sessions and it mentions that the target needs to be ‘ready’, but there’s no clear definition of what that state looks like in the response objects. Is there a specific participant status I need to check before making this call? Or am I missing a required header or query param?

Using genesys-cloud-client-java v3.2.1 in the backend service that makes this call, but I’m also testing with curl to rule out SDK issues. The behavior is the same.