Bulk update agent skill proficiencies via CXone Admin API

We need to update skill proficiencies for a large group of agents. Doing this manually in the UI is not an option. The Admin API docs show PUT /api/v2/users/{userId}/skills but that’s for a single user. We’ve got 2,000 agents to update. Calling the endpoint 2,000 times will hit rate limits and take forever. I checked for a bulk endpoint under /api/v2/bulk/ or /api/v2/admin/ but didn’t find anything that handles skill proficiency in bulk. The only bulk endpoints I see are for users or routing, not skills specifically.

I tried a workaround using a script with a REST Proxy action. The idea is to loop through a list of users and call the skill endpoint. Here is the I used:

REST_PROXY("PUT", "/api/v2/users/" + user.id + "/skills", 
 {"skills": [{"id": "skill_123", "proficiency": 80}]}, 
 {"Authorization": "Bearer " + token})

The script works for single users. When I run it in a loop, I get 429 Too Many Requests after about 50 iterations. I added a delay action between calls but it’s still too slow for our needs. We need this to run daily.

Is there a hidden bulk endpoint? Maybe something undocumented? Or is there a better way to batch these requests? I looked at the PATCH /api/v2/users endpoint but it doesn’t seem to support skill updates. The payload for user update is strict. Any attempt to add skills to the body results in a 400 Bad Request.

We’re using the standard OAuth token. The token is valid for the duration of the script. I verified the token has the admin:skill:center:write scope. Permissions aren’t the issue. The volume is.

If there is no bulk endpoint, what is the recommended pattern for this? Should we be using a different API? Maybe the Analytics API? No, that’s read-only.

I’m stuck on this. The single-user endpoint is the only one that works. The rate limiting is a hard stop. We need a solution that can handle thousands of updates in a reasonable time. Any code examples or API tricks would help. Just point me in the right direction. I’ll handle the rest.