CXone Admin API bulk update for agent skills returns 400

Trying to batch update agent skill proficiencies in CXone. I’ve got a list of 50 agents and need to bump their proficiency on a specific skill ID.

The docs say I can hit /api/v2/admin/users/skills with a POST. I’m sending an array of objects like this:

[
 {
 "userId": "12345",
 "skills": [
 {
 "skillId": "skill_abc",
 "proficiency": 3
 }
 ]
 }
]

But I keep hitting a 400 Bad Request. The error body just says Invalid input with no details on which field is broken.

If I curl a single agent using PUT /api/v2/admin/users/{userId}/skills it works fine. But the bulk endpoint refuses the payload. Is the structure different for the POST? I’ve tried wrapping the array in a users key but that just gives a 422.

Anyone got the exact payload shape that works for the bulk endpoint?