Trying to understand why POST /api/v2/conversations/voice/{conversationId}/participants/{participantId}/disconnect returns 403 Forbidden despite valid scopes. I am using the Python SDK with genesyscloud.conversations_participants.disconnect_participant(conversation_id, participant_id). The token has conversation:write but the API demands conversation:control. Is there a specific scope mismatch or a JSON payload requirement I am missing?
It depends, but generally…
Status 403 indicates a missing scope. The conversation:write scope is insufficient for participant control. You must add conversation:control to your OAuth token configuration.
"scopes": ["conversation:control", "conversation:write"]
Verify the token payload contains this new scope before retrying the request.