Trying to push external CRM data onto a live voice call using the Participant API. The PUT request to /api/v2/conversations/voice/{conversationId}/participants/{participantId} returns a 204 No Content, but the attributes never show up in the Admin UI or subsequent GET requests.
- Genesys Cloud EU region
- Using
application/json content type
- Payload includes
attributes object with key-value pairs
- Verified participant ID matches the active agent
Here’s the payload structure:
{
"attributes": {
"crm_id": "98765",
"tier": "gold"
}
}
The response is always 204. No errors. Just missing data.
curl -X POST
https://api.us-east-1.mygenesys.cloud/api/v2/conversations/voice/{conversationId}/participants/{participantId}/actions
-H ‘Content-Type: application/json’
-H ‘Authorization: Bearer {token}’
-d ‘{
“actions”: [
{
“actionType”: “setParticipantData”,
“data”: {
“crmId”: “12345”,
“tier”: “gold”
}
}
]
}’
You’re using the wrong endpoint. The PUT on /participants/{id} updates state or disposition, not arbitrary metadata. It returns 204 because the fields you sent were valid but irrelevant to attribute storage.
Use the POST .../actions endpoint with setParticipantData. This is the standard way to inject custom data into the participant context for voice, chat, or digital. The data persists in the conversation object and shows up in GET requests immediately.
Also check your OAuth scopes. You need conversations:view and conversations:edit. If you’re using a service account, ensure it has access to the specific conversation domain. The silent failure usually means the request hit a permission boundary that didn’t throw a 403, just ignored the write.
Don’t forget to cache the response if you need the updated object locally. The API doesn’t push it back in the 204 response.