400 Bad Request on PUT /api/v2/users/{userId}/skills for bulk proficiency updates

The endpoint docs are thin on the ground for bulk updates. I’m trying to sync agent skill proficiencies from our internal HRIS system via the CXone Admin API. Sending individual PUT requests to /api/v2/users/{userId}/skills works fine for single agents, but the payload structure is opaque when it comes to the proficiency field.

Here’s the JSON body I’m sending:

{
 "skills": [
 {
 "id": "8a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d",
 "proficiency": 85
 }
 ]
}

I get a 400 Bad Request with this response:

{
 "message": "Validation failed for object 'SkillUpdateRequest'. Error messages: proficiency must be between 0 and 100.",
 "code": "validation.error"
}

The value is clearly in range. I’ve checked the timezone offsets, the auth token has admin:skill:center:update scope, and the user ID is valid. Is the API expecting a percentage string like "0.85" or an integer? The schema definition in Swagger doesn’t specify the type clearly, just “number”.

Also, there doesn’t seem to be a true bulk endpoint that accepts an array of user IDs. I’m currently looping through 500 agents and hitting rate limits. Is there a hidden batch endpoint or a better way to handle this without hitting the API wall? I’ve tried POST /api/v2/users/bulk but that only handles creation and basic profile fields, not skill proficiencies.