Stitchflow
CyberArk logo

CyberArk User Management API Guide

API workflow

How to automate user lifecycle operations through APIs with caveats that matter in production.

UpdatedMar 9, 2026

Summary and recommendation

CyberArk exposes two distinct REST APIs with separate base URLs, auth flows, and user object models: the Privileged Cloud / PAM REST API at https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API for vault user management, and the CyberArk Identity REST API for IdP directory users.

Privileged Cloud SaaS authenticates via OAuth 2.0 client_credentials against https://<tenant>.id.cyberark.cloud/oauth2/platformtoken; self-hosted PAM uses session token auth via POST /auth/CyberArk/Logon. These auth flows are not interchangeable - mixing them against the wrong base URL will produce auth failures. OAuth 2.0 tokens expire after 30 minutes by default; implement token refresh logic in any long-running provisioning loop.

Rate limits are not publicly documented for Privileged Cloud SaaS; CyberArk recommends exponential backoff, and tenant-specific limits require direct support engagement.

API quick reference

Has user APIYes
Auth methodCyberArk Identity OAuth 2.0 (client_credentials or authorization_code) for Privileged Cloud; session-based token (CyberArk-specific /auth endpoint) for self-hosted PAM
Base URLOfficial docs
SCIM availableYes
SCIM plan requiredEnterprise (CyberArk Identity / Workforce Identity)

Authentication

Auth method: CyberArk Identity OAuth 2.0 (client_credentials or authorization_code) for Privileged Cloud; session-based token (CyberArk-specific /auth endpoint) for self-hosted PAM

Setup steps

  1. For Privileged Cloud: Register an OAuth2 service account application in CyberArk Identity Admin Portal under Apps > OAuth2 Client.
  2. Assign the service account the required roles (e.g., Privilege Cloud Administrator) in CyberArk Identity.
  3. Obtain a bearer token via POST to https://.id.cyberark.cloud/oauth2/platformtoken with grant_type=client_credentials, client_id, and client_secret.
  4. Include the bearer token in the Authorization header: 'Authorization: Bearer '.
  5. For self-hosted CyberArk PAM: POST credentials to /PasswordVault/API/auth/CyberArk/Logon to receive a session token, then pass it as the Authorization header value.

Required scopes

Scope Description Required for
privileged_cloud_admin Full administrative access to Privileged Cloud including user management Create, update, delete users in Privileged Cloud
user_management Scoped access to user management operations within CyberArk Identity Managing CyberArk Identity directory users via API

User object / data model

Field Type Description On create On update Notes
id integer Unique numeric identifier for the user in CyberArk PAM system-assigned read-only Used as path parameter in update/delete calls
username string The user's login name required optional Must be unique within the vault
userType string Type of user account (e.g., EPVUser, BasicUser, ExtUser, BizUser, AIMAccount) required optional Determines licensing consumption
initialPassword string Initial password set at user creation required not applicable Write-only; not returned in GET responses
firstName string User's first name optional optional
lastName string User's last name optional optional
email string User's email address optional optional
location string Vault location (organizational unit path) for the user optional optional Backslash-delimited path, e.g., '\Users\Admins'
groupsMembership array List of vault groups the user belongs to optional managed via separate group membership endpoints Returned in GET; not directly settable on user create body in all versions
enableUser boolean Whether the user account is enabled optional (default: true) optional Set to false to disable without deleting
changePassOnNextLogon boolean Forces password change on next login optional optional
passwordNeverExpires boolean Whether the user's password expires optional optional
distinguishedName string LDAP distinguished name for directory-mapped users optional optional Used for LDAP/AD-integrated accounts
authenticationMethod array Authentication methods allowed for the user (e.g., AuthTypePass, AuthTypeRadius) optional optional
suspended boolean Indicates if the user is suspended due to failed login attempts read-only can be reset via activate endpoint

Core endpoints

List Users

  • Method: GET
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users
  • Watch out for: Filter parameters (UserType, Search) are optional but recommended; unfiltered calls on large vaults can be slow.

Request example

GET /PasswordVault/API/Users?UserType=EPVUser&limit=50
Authorization: Bearer <token>

Response example

{
  "Users": [
    {"id": 12, "username": "jdoe", "userType": "EPVUser", "enableUser": true}
  ],
  "Total": 1
}

Get User Details

  • Method: GET
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users/{id}
  • Watch out for: The {id} is the numeric vault user ID, not the username string.

Request example

GET /PasswordVault/API/Users/12
Authorization: Bearer <token>

Response example

{
  "id": 12,
  "username": "jdoe",
  "firstName": "John",
  "lastName": "Doe",
  "email": "jdoe@example.com",
  "userType": "EPVUser",
  "enableUser": true
}

Create User

  • Method: POST
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users
  • Watch out for: initialPassword must meet vault password policy complexity; userType must match a licensed type available on the tenant.

Request example

POST /PasswordVault/API/Users
Authorization: Bearer <token>
Content-Type: application/json
{
  "username": "jdoe",
  "userType": "EPVUser",
  "initialPassword": "P@ssw0rd!"
}

Response example

{
  "id": 42,
  "username": "jdoe",
  "userType": "EPVUser",
  "enableUser": true
}

Update User

  • Method: PUT
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users/{id}
  • Watch out for: Uses PUT (full replacement semantics in some versions); omitting optional fields may reset them. Verify behavior on your version.

Request example

PUT /PasswordVault/API/Users/42
Authorization: Bearer <token>
Content-Type: application/json
{
  "email": "jdoe@newdomain.com",
  "enableUser": true
}

Response example

{
  "id": 42,
  "username": "jdoe",
  "email": "jdoe@newdomain.com",
  "enableUser": true
}

Delete User

  • Method: DELETE
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users/{id}
  • Watch out for: Deletion is permanent and removes the user from all safe memberships. Consider disabling (enableUser: false) instead for audit trail preservation.

Request example

DELETE /PasswordVault/API/Users/42
Authorization: Bearer <token>

Response example

HTTP 204 No Content

Activate / Unsuspend User

  • Method: POST
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users/{id}/Activate
  • Watch out for: Only applicable when user is suspended due to failed login attempts; does not re-enable a manually disabled account.

Request example

POST /PasswordVault/API/Users/42/Activate
Authorization: Bearer <token>

Response example

HTTP 200 OK

Add User to Group

  • Method: POST
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/UserGroups/{groupId}/Members
  • Watch out for: Group membership is managed separately from the user object; groupId must be retrieved via GET /UserGroups first.

Request example

POST /PasswordVault/API/UserGroups/5/Members
Authorization: Bearer <token>
Content-Type: application/json
{
  "memberId": 42,
  "memberType": "User"
}

Response example

HTTP 201 Created

Reset User Password

  • Method: POST
  • URL: https://<tenant>.privilegecloud.cyberark.cloud/PasswordVault/API/Users/{id}/ResetPassword
  • Watch out for: Caller must have Manage Users permission in the vault. Password must comply with vault password policy.

Request example

POST /PasswordVault/API/Users/42/ResetPassword
Authorization: Bearer <token>
Content-Type: application/json
{
  "id": 42,
  "newPassword": "NewP@ss1!"
}

Response example

HTTP 200 OK

Rate limits, pagination, and events

  • Rate limits: CyberArk does not publish explicit rate limit tiers in official documentation. Limits are enforced at the platform level and may vary by deployment type (SaaS vs. self-hosted).
  • Rate-limit headers: No
  • Retry-After header: No
  • Rate-limit notes: CyberArk recommends implementing exponential backoff. Concurrent session limits apply per user account. Contact CyberArk support for tenant-specific limits.
  • Pagination method: offset
  • Default page size: 0
  • Max page size: 0
  • Pagination pointer: limit / offset (used on list endpoints such as GetUsers; exact defaults not publicly documented)
Plan Limit Concurrent
Privileged Cloud (SaaS) Not publicly documented 0
  • Webhooks available: No
  • Webhook notes: CyberArk Privileged Cloud REST API does not offer native outbound webhooks for user lifecycle events. CyberArk Identity (the IdP layer) supports some event-driven integrations via its workflow engine but not a standard webhook subscription model.
  • Alternative event strategy: Use CyberArk Identity's SIEM integration or Syslog/CEF event forwarding for audit events. For provisioning triggers, use SCIM inbound provisioning from an IdP (e.g., Azure AD/Entra ID) or poll the Users API on a schedule.

SCIM API status

  • SCIM available: Yes

  • SCIM version: 2.0

  • Plan required: Enterprise (CyberArk Identity / Workforce Identity)

  • Endpoint: https://.id.cyberark.cloud/scim/v2

  • Supported operations: GET /Users, GET /Users/{id}, POST /Users, PUT /Users/{id}, PATCH /Users/{id}, DELETE /Users/{id}, GET /Groups, POST /Groups, PATCH /Groups/{id}, DELETE /Groups/{id}

Limitations:

  • SCIM provisioning is for CyberArk Identity (IdP) user directory, not directly for Privileged Cloud vault accounts; vault account creation requires separate PAM API calls or role-based auto-provisioning rules.
  • SSO must be configured as a prerequisite for SCIM provisioning.
  • Inbound SCIM from Azure AD/Entra ID is the primary tested and documented integration path; other IdPs may have limited support.
  • SCIM token (OAuth 2.0 bearer) for SCIM endpoint is generated separately in the CyberArk Identity Admin Portal under Settings > SCIM.
  • Enterprise plan required; not available on lower-tier Workforce Identity editions.

Common scenarios

Three integration patterns cover the majority of identity lifecycle use cases. First, direct vault user provisioning: obtain an OAuth 2.

0 bearer token, POST to /PasswordVault/API/Users with username, userType, and initialPassword, capture the returned numeric id, then add group membership via POST /PasswordVault/API/UserGroups/{groupId}/Members. The userType field directly affects license consumption - use BasicUser where EPVUser is not required.

Second, inbound SCIM 2. 0 provisioning from Azure AD / Entra ID: generate a SCIM bearer token in Admin Portal → Settings → SCIM, configure the Entra ID Enterprise Application with endpoint https://.id.cyberark.cloud/scim/v2, map attributes, and enable sync.

SSO must be active before SCIM provisioning is enabled; this path populates the Identity directory only - Privileged Cloud vault access requires separate role or safe assignment.

Third, safe offboarding without audit loss: use PUT /PasswordVault/API/Users/{id} with {"enableUser": false} rather than DELETE; hard deletion is irreversible, removes all safe memberships, and should be avoided in regulated environments.

Building a complete identity graph across both the Identity directory (SCIM UUIDs) and the PAM vault (numeric integer IDs) requires explicit ID mapping - these identifiers are not interchangeable across the two APIs.

Provision a new Privileged Cloud vault user via REST API

  1. Obtain OAuth 2.0 bearer token: POST https://.id.cyberark.cloud/oauth2/platformtoken with client_credentials grant.
  2. Create the user: POST /PasswordVault/API/Users with username, userType (e.g., EPVUser), and initialPassword in the JSON body.
  3. Capture the returned numeric user id from the response.
  4. Add the user to the appropriate vault group: POST /PasswordVault/API/UserGroups/{groupId}/Members with memberId and memberType: 'User'.
  5. Optionally set changePassOnNextLogon: true on the user record via PUT /PasswordVault/API/Users/{id}.

Watch out for: The OAuth token used must belong to a service account with 'Add Users' vault permission. Token expiry is 30 minutes; refresh before long provisioning loops.

Inbound SCIM provisioning from Azure AD / Entra ID to CyberArk Identity

  1. In CyberArk Identity Admin Portal, navigate to Settings > SCIM and generate a SCIM bearer token.
  2. In Azure AD / Entra ID, add CyberArk as an Enterprise Application and configure Provisioning mode to Automatic.
  3. Enter the CyberArk SCIM endpoint (https://.id.cyberark.cloud/scim/v2) and the generated bearer token.
  4. Map Azure AD attributes to CyberArk SCIM attributes (userName, name.givenName, name.familyName, emails, active).
  5. Enable provisioning and run an initial sync; monitor provisioning logs in both Azure AD and CyberArk Identity.

Watch out for: SSO must be configured before SCIM provisioning is enabled. SCIM creates Identity directory users only; Privileged Cloud vault access requires additional role/safe assignment configuration in CyberArk.

Disable (suspend) a departing user without deleting vault history

  1. Obtain bearer token via OAuth 2.0 client_credentials flow.
  2. Look up the user's numeric vault ID: GET /PasswordVault/API/Users?Search=.
  3. Disable the account: PUT /PasswordVault/API/Users/{id} with body {"enableUser": false}.
  4. Optionally remove the user from all vault groups via DELETE /PasswordVault/API/UserGroups/{groupId}/Members/{memberId} for each group.
  5. Retain the vault user record for audit and session recording history compliance.

Watch out for: Setting enableUser: false prevents login but preserves all audit trails and session recordings associated with the user ID. Hard deletion (DELETE /Users/{id}) is irreversible and should be avoided in regulated environments.

Why building this yourself is a trap

The most consequential architectural caveat is the split identity model: SCIM provisioning creates CyberArk Identity directory users but does not automatically create corresponding Privileged Cloud vault users. Any integration that assumes a single provisioning action covers both layers will leave vault access unprovisioned.

Maintaining a coherent identity graph across both systems requires explicit bridging logic - either via role-based auto-provisioning rules in CyberArk or a separate PAM API call sequence after SCIM sync completes.

A second trap is the PUT semantics on PUT /PasswordVault/API/Users/{id}: in some API versions this behaves as full replacement, meaning omitted optional fields may be reset to defaults; verify behavior on your specific tenant version before running bulk updates.

Webhooks are not available on the Privileged Cloud REST API; event-driven provisioning triggers must be implemented via scheduled polling of the Users API or inbound SCIM push from an upstream IdP.

Automate CyberArk workflows without one-off scripts

Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.

Every app coverage, including apps without APIs
60+ app integrations plus browser automation for apps without APIs
IT graph reconciliation across apps and your IdP
Less than a week to launch, maintained as APIs and admin consoles change
SOC 2 Type II. ~2 hours of your team's time

UpdatedMar 9, 2026

* Details sourced from official product documentation and admin references.

Keep exploring

Related apps

15Five logo

15Five

Full API + SCIM
AutomationAPI + SCIM
Last updatedFeb 2026

15Five uses a fixed role-based permission model with six predefined roles: Account Admin, HR Admin, Billing Admin, Group Admin, Manager, and Employee. No custom roles can be constructed. User management lives at Settings gear → People → Manage people p

1Password logo

1Password

Full API + SCIM
AutomationAPI + SCIM
Last updatedFeb 2026

1Password's admin console at my.1password.com covers the full user lifecycle — invitations, group assignments, vault access, suspension, and deletion — without any third-party tooling. Like every app that mixes role-based and resource-level permissions

8x8 logo

8x8

Full API + SCIM
AutomationAPI + SCIM
Last updatedFeb 2026

8x8 Admin Console supports full lifecycle user management — create, deactivate, and delete — across its X Series unified communications platform. Every app a user can access (8x8 Work desktop, mobile, web, Agent Workspace) is gated by license assignmen