PATCH /api/v2/conversations/{id}/participants/{id}/attributes returning 400 Bad Request

Trying to inject dynamic metadata into active voice legs for the real-time dashboard. The nightly batch job handles this fine via bulk updates, but the live stream needs immediate participant_attributes updates via PATCH /api/v2/conversations/{conversationId}/participants/{participantId}/attributes.

The payload looks standard:

{ "key": "campaign_override", "value": "promo_x", "type": "STRING" }

Hitting a 400 Bad Request with message Attribute key is not allowed. Checked the org settings and campaign_override isn’t in the blocked list. Tried PUT instead of PATCH to replace the whole object, same result. The SDK ConversationsApi.updateConversationParticipantAttributes throws the same validation error.

Is there a specific regex pattern or reserved prefix I’m missing for mid-call updates? The docs are vague on runtime constraints vs static config. Running this from the Manila cluster, latency isn’t the issue, just the schema validation.