CXone Admin API bulk update agent skills returning 400

Just noticed that my Faraday patch request to the CXone Admin API for bulk updating agent skill proficiencies is failing. I am trying to update multiple agents’ skills in a single call to optimize the webhook processing pipeline. The endpoint is /api/v2/admin/users/skills. Here is the JSON payload I am sending:

{
 "skillAssignments": [
 {
 "userId": "12345",
 "skill": "support_tier_2",
 "proficiency": 90
 },
 {
 "userId": "12346",
 "skill": "support_tier_2",
 "proficiency": 85
 }
 ]
}

The response I get back is consistently a 400 Bad Request. The error body is minimal, just {"errors":[{"message":"Invalid input"}]}. I have verified that the user IDs exist and the skill name is correct. I am using OAuth2 client credentials for authentication. Is the skillAssignments array structure incorrect? I checked the Swagger docs but they are vague on the exact nesting for bulk operations. Should I be using a different endpoint or is there a specific format for the proficiency field?

You might want to double-check the official CXone Admin API reference documentation. The endpoint /api/v2/admin/users/skills isn’t designed for bulk operations.

Instead, use PUT /api/v2/users/{userId}/skills for updating skills individually. There isn’t a single call to assign skills to multiple agents. Be mindful of API rate limits when looping through users.

# Individual update example using the CXone REST API
skill_assignment = {
 "skillId": "skill_id_here",
 "proficiency": 90
}
# Iterate through users; no bulk endpoint exists
3 Likes