We’re trying to push custom metadata to an active voice interaction from our external CRM backend. The goal is simple: update a participant attribute so the supervisor dashboard reflects real-time status changes without waiting for the call to wrap. I’ve got the interaction ID and participant ID from the webhook payload, so the identification part seems solid.
I’m hitting the Conversations API endpoint to patch the attributes. The docs say this is supported for voice, but I keep getting a 400 Bad Request. The error response is vague, just saying “Invalid input” without pointing to a specific field. I’ve checked the token permissions, and the service account has the necessary scope for conversations:modify. Here’s the request payload I’m sending:
PATCH /api/v2/conversations/voice/{conversationId}/participants/{participantId}
Content-Type: application/json
Authorization: Bearer {token}
{
"attributes": {
"custom_status": "escalated",
"crm_record_id": "12345"
}
}
The conversation is definitely active, and I’ve verified the participant ID matches the one in the active leg. I’ve tried removing the CRM field to isolate the issue, but even with just custom_status, it fails. Is there a specific format requirement for the attributes object during a live call? Or is this endpoint actually restricted for voice interactions despite the documentation suggesting otherwise? I’ve also checked the audit logs, but nothing shows up there, which makes debugging this a pain. Any ideas on what I’m missing?