[role="xpack"] [[security-api-change-password]] === Change passwords API ++++ Change passwords ++++ Changes the passwords of users in the native realm and built-in users. [[security-api-change-password-request]] ==== {api-request-title} `POST /_security/user/_password` + `POST /_security/user//_password` [[security-api-change-password-prereqs]] ==== {api-prereq-title} * Every user can change their own password. Users with the `manage_security` privilege can change passwords of other users. [[security-api-change-password-desc]] ==== {api-description-title} You can use the <> to update everything but a user's `username` and `password`. This API changes a user's password. For more information about the native realm, see <> and <>. [[security-api-change-password-path-params]] ==== {api-path-parms-title} `username`:: (Optional, string) The user whose password you want to change. If you do not specify this parameter, the password is changed for the current user. [[security-api-change-password-request-body]] ==== {api-request-body-title} `password` :: (string) The new password value. Passwords must be at least 6 characters long. + One of `password` or `password_hash` is required. `password_hash` :: (string) A _hash_ of the new password value. This must be produced using the same hashing algorithm as has been configured for password storage. For more details, see the explanation of the `xpack.security.authc.password_hashing.algorithm` setting in <>. + Using this parameter allows the client to pre-hash the password for performance and/or confidentiality reasons. + The `password` parameter and the `password_hash` parameter cannot be used in the same request. [[security-api-change-password-example]] ==== {api-examples-title} The following example updates the password for the `jacknich` user: [source,console] -------------------------------------------------- POST /_security/user/jacknich/_password { "password" : "new-test-password" } -------------------------------------------------- // TEST[setup:jacknich_user] A successful call returns an empty JSON structure. [source,console-result] -------------------------------------------------- {} --------------------------------------------------