POST /api/v2/recordings/voice/{id}/start 409 Conflict on active call

Trying to start a recording programmatically via the API instead of relying on the Architect flow. The goal is to trigger recording from a backend service when a specific condition is met.

I’m sending a POST to /api/v2/recordings/voice/{conversationId}/start with an empty body. The endpoint returns a 409 Conflict. The error payload says:

{
 "errors": [
 {
 "code": "409",
 "message": "Recording is already in progress for this conversation"
 }
 ]
}

This happens even if I haven’t started a recording manually or via . I checked the call status in the admin console and no recording is active. I tried waiting 5 seconds between requests, same result.

Also tried getting the recording status first via GET /api/v2/recordings/voice/{id} but that returns 404 if no recording exists.

Is there a race condition here? Or do I need to pass specific headers to override the lock? The docs don’t mention anything about pre-existing locks on new calls.

Here’s the curl I’m using:

curl -X POST "https://api.mypurecloud.com/api/v2/recordings/voice/abc-123/start" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: application/json"

The token is valid, I can fetch user details fine. Just stuck on this 409.