CXone Admin API: Bulk update agent skills via REST

Hey folks,

Trying to update skill proficiencies for a batch of agents using the CXone Admin API. The single agent endpoint works fine, but I can’t find a bulk endpoint. Looping through PUT /api/v2/users/{userId}/skills is killing our performance.

Here’s what I’ve tried:

  • Checked the Swagger docs for a batch endpoint. Nothing.
  • Tried sending an array in the body of a single PUT. Got a 400 Bad Request.
  • Rate limiting is hitting us hard at ~10 req/sec.

Is there a hidden batch endpoint or a recommended pattern for this? Feels like I’m missing something obvious.

# No bulk endpoint exists. Use async jobs for scale.
from genesyscloud import platform_client_v2

def bulk_update_skills(user_ids, skills_payload):
 job = platform_client.v2_users.create_user_update_job(
 body={
 "users": [{"id": uid, "skills": skills_payload} for uid in user_ids],
 "type": "user_update"
 }
 )
 # Poll job.status until 'completed' or 'failed'
 return job.id

The Genesys Cloud Admin API simply doesn’t support bulk skill updates via a single PUT request. You’ll get a 400 if you try to shove an array in there. The standard pattern is to use the async job framework. It handles the rate limiting and batching on the server side. You submit a job with the list of user IDs and the skill payload, then poll the job status endpoint. It’s not as fast as a direct bulk call, but it won’t crash your script with 429 errors. Just make sure you check the job logs for any individual user failures.