POST /api/v2/recordings/screen/start returns {"code": "RECORDING_CLIENT_NOT_READY", "message": "Client agent is not reporting screen recording capability"} immediately after the flow executes the REST Proxy snippet.
Step one: the compliance team needs to capture the agent desktop session whenever a high-risk transaction flag flips, so the Studio flow is set up to trigger the recording via a REST Proxy snippet the moment the conversation.voice event hits the “Active” state with the custom attribute risk_level set to critical. The agent is running Agent Desktop build 24.2.1 on Chrome 118. Manual recordings work fine. Agent clicks the button, recording starts, no issues.
The GET /api/v2/users/{id}/recording/capabilities endpoint response shows {"screen": true, "audio": true}. User profile has the RECORDING_SCREEN capability enabled. Nothing missing there.
The Studio snippet action is configured with POST to /api/v2/recordings/screen/start. Body is {"conversation_id": "{{conversation.id}}"}. A debug action right before the proxy call confirms {{conversation.id}} resolves to a valid UUID format. Headers include the standard auth token.
Doing jack all to fix this. Attempts to add a delay action fail. Waited 5 seconds. Then 10 seconds. Still getting the RECORDING_CLIENT_NOT_READY error. The flow eventually hits the timeout threshold. Logs show the request goes out, response comes back 400. Mic stays hot on the call, but the screen capture never initiates.
Studio version is 10.2. The flow uses the default execution context. Tests with the x-gw-user-id header to force the agent ID yield identical results. The RECORDING_CLIENT_NOT_READY code suggests the websocket connection to the agent’s browser isn’t propagating the capability flag to the API gateway layer when invoked via flow. Manual invocation works, which points to a session state mismatch.
The expression builder logic for the risk check is {{conversation.custom_attributes.risk_level}} == "critical". This part works. The flow reaches the snippet. The snippet definition shows the URL as /api/v2/recordings/screen/start. Method POST. Content-Type application/json. The token is generated via the Generate Auth Token action. Token expiry is 600 seconds. Token is fresh. The error persists. Maybe the REST Proxy isn’t inheriting the tenant context? No, other APIs work. POST /api/v2/conversations/voice/{id}/participants works fine in the same flow. It’s isolated to the recording start endpoint. The RECORDING_CLIENT_NOT_READY error usually means the agent hasn’t loaded the recording module. But the agent is online. The capability check returns true. Contradiction. The API claims the client isn’t ready, but the capabilities endpoint says it is. Could be a race condition with the websocket heartbeat. The flow triggers instantly on Active. Agent might still be initializing the recording plugin. Tests with a waitFor action for the user.recording.ready event show the event doesn’t exist. Catalog search returns empty for user.recording.ready. Process halts.
Payload looks like this:
{
"conversation_id": "a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8"
}
Error repeats on every retry.