Recording API: Programmatically starting/stopping recordings via REST

Hey folks,

I’m trying to build a sidecar service that can programmatically start and stop call recordings in Genesys Cloud based on some external trigger. We’re not using the standard auto-record rules because we need to pause recordings during certain compliance holds.

I’ve been poking at the Recording API, specifically looking at /api/v2/recording/recordings. I tried sending a PUT request to toggle the state, but I keep hitting a 405 Method Not Allowed. The docs are a bit sparse on the exact payload shape for manual control.

Here’s the curl I’m testing with:

curl -X PUT "https://api.mypurecloud.com/api/v2/recording/recordings" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: application/json" \
 -d '{
 "recording": {
 "id": "abc-123",
 "state": "stopped"
 }
 }'

Is there a specific endpoint for manual recording control that I’m missing? Or is this just not supported via the REST API and I need to look at the Architect Data Actions instead? Would appreciate any pointers on the correct method.

Are you hitting the specific call ID endpoint? The base /recordings path is read-only for listings. You need to target the instance directly.

curl -X PUT "https://api.mypurecloud.com/api/v2/recording/recordings/{recordingId}" \
 -H "Authorization: Bearer $TOKEN" \
 -d '{"state": "stopped"}'

Make sure the scope includes recording:write.