Updating participant attributes via /conversations/voice/conversations/{id}/participants/{id} returns 409 Conflict in n8n

Can anyone clarify why updating participant attributes on a live voice call fails with a 409 Conflict in my self-hosted n8n pipeline? I’m using the Client Credentials flow to grab a token, then hitting PATCH /api/v2/conversations/voice/conversations/{{conversationId}}/participants/{{participantId}} with a payload containing custom attributes. The request body looks like this:

{
 "attributes": {
 "external_ref": "ORD-1234",
 "priority": "high"
 }
}

The error response says "error_description": "Conflict" but doesn’t specify which field is clashing. I’ve verified the conversation is active and the participant ID is correct.

My workflow handles the OAuth token refresh automatically, so auth isn’t the issue. I suspect this might be related to the division ID scope not matching the conversation’s division, or perhaps the attributes object needs a specific structure I’m missing. I’ve tried adding the divisionId query parameter, but it didn’t help. Has anyone successfully patched participant attributes mid-call using the REST API, or is this endpoint strictly for routing changes?

it depends, but generally you’re hitting a version mismatch. deno’s fetch makes it easy to check res.headers.get('etag') and pass it back in the if-match header on the patch. without that, gc rejects the update to prevent race conditions.