Dealing with a very strange bug here with the Genesys Cloud Platform SDK for JavaScript when toggling agent microphone state mid-call. Initialization works fine. Invoking the update method, however, triggers a silent promise rejection rather than a 200 response. After cross-referencing the callId and participantId against the active routing session, I confirmed both identifiers are valid.
Use the conversation.updateParticipant endpoint to modify media controls without terminating the leg.
Check your request payload structure against the Genesys Cloud REST API specification, as the JS SDK can sometimes wrap parameters incorrectly for media controls. The updateParticipant method requires a specific JSON body for mute/unmute actions, not just query parameters.
I tested this directly using a client credentials grant. The endpoint expects a mediaState object within the payload.
If the SDK still rejects silently, bypass it and send the raw JSON to the API. Ensure your OAuth token includes the conversation:write scope. Verify the participantId matches the format expected by the platform if using WebRTC.
I’d recommend looking at at the mediaState object structure within the Angular service layer, as the JS SDK often serializes mute controls incorrectly without explicit boolean flags.