CXone Admin API bulk-update agent skill proficiencies returning 422 Unprocessable Entity

Why does this setting keep failing when I try to push bulk skill updates from our migration script?

I am currently rebuilding our Five9 IVR routing logic in Genesys Cloud and CXone. In Five9, we had a straightforward endpoint to update agent skill levels in batch. I am trying to replicate this in CXone using the Admin API. I need to update the proficiency level for multiple agents across several skills simultaneously to match our new routing strategy.

I am using the PUT /api/v2/agents/skills endpoint (or the equivalent bulk endpoint if it exists, as the docs are a bit sparse on bulk operations for skills specifically). I am sending a JSON payload that looks like this:

[
 {
 "agentId": "550e8400-e29b-41d4-a716-446655440000",
 "skillId": "skill_123",
 "proficiency": 3
 },
 {
 "agentId": "550e8400-e29b-41d4-a716-446655440001",
 "skillId": "skill_123",
 "proficiency": 5
 }
]

The request returns a 422 Unprocessable Entity error. The error body is generic:

{
 "errors": [
 {
 "message": "Invalid input provided",
 "code": "invalid_input"
 }
 ]
}

I have verified that the agentId and skillId values exist and are valid. I can successfully update a single agent’s skill using the standard PUT /api/v2/agents/{agentId}/skills/{skillId} endpoint. The issue is strictly with the bulk operation. I am running this in a Node.js script using axios with application/json headers.

Is there a specific format required for bulk skill updates in CXone? Or is this endpoint read-only for bulk queries and I have to loop through individual requests? I need to update 500+ agents and looping sequentially is too slow for our nightly sync job. Any code examples or correct payload structures would be appreciated.