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.