---
type: api
title: Activate a user profile
description: Create or update a user profile on behalf of another user.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/operation/operation-security-activate-user-profile
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/operation/operation-security-activate-user-profile
products:
  - Elasticsearch
---

# Activate a user profile

Availability: 8.2+

## Paths

- `POST` `/_security/profile/_activate`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/authentication#bearerauth)

## Description

Create or update a user profile on behalf of another user.

NOTE: The user profile feature is designed only for use by Kibana and Elastic's Observability, Enterprise Search, and Elastic Security solutions.
Individual users and external applications should not call this API directly.
The calling application must have either an `access_token` or a combination of `username` and `password` for the user that the profile document is intended for.
Elastic reserves the right to change or remove this feature in future releases without prior notice.

This API creates or updates a profile document for end users with information that is extracted from the user's authentication object including `username`, `full_name,` `roles`, and the authentication realm.
For example, in the JWT `access_token` case, the profile user's `username` is extracted from the JWT token claim pointed to by the `claims.principal` setting of the JWT realm that authenticated the token.

When updating a profile document, the API enables the document if it was disabled.
Any updates do not change existing content for either the `labels` or `data` fields.

## Required authorization

* Cluster privileges: `manage_user_profile`

## Request Body

`application/json`

- `access_token` (string) — optional
  The user's Elasticsearch access token or JWT.
Both `access` and `id` JWT token types are supported and they depend on the underlying JWT realm configuration.
If you specify the `access_token` grant type, this parameter is required.
It is not valid with other grant types.
- `grant_type` (enum GrantType) — required
  The type of grant.

Supported values include:
  - `password`: In this type of grant, you must supply the user ID and password for which you want to create the API key.
  - `access_token`: In this type of grant, you must supply an access token that was created by the Elasticsearch token service.
If you are activating a user profile, you can alternatively supply a JWT (either a JWT `access_token` or a JWT `id_token`).
  Values: `password`, `access_token`
- `password` (string) — optional
  The user's password.
If you specify the `password` grant type, this parameter is required.
It is not valid with other grant types.
- `username` (string) — optional
  The username that identifies the user.
If you specify the `password` grant type, this parameter is required.
It is not valid with other grant types.

## Response

`application/json`

- `uid` (string)
- `user` ({} UserProfileUser)
  - `email` (union string) — nullable
    One of: `string`
  - `full_name` (union Name | string) — nullable
  - `realm_name` (string Name)
  - `realm_domain` (string Name)
  - `roles` ([] string)
  - `username` (string)
- `data` (map string to object)
- `labels` (map string to object)
- `enabled` (boolean)
- `last_synchronized` (number)
- `_doc` ({} UserProfileHitMetadata)
  - `_primary_term` (number)
  - `_seq_no` (number SequenceNumber)
## Code Examples

#### Console

```console
POST /_security/profile/_activate
{
  "grant_type": "password",
  "username" : "jacknich",
  "password" : "l0ng-r4nd0m-p@ssw0rd"
}
```

#### JavaScript

```javascript
const response = await client.security.activateUserProfile({
  grant_type: "password",
  username: "jacknich",
  password: "l0ng-r4nd0m-p@ssw0rd",
});
```

#### Python

```python
resp = client.security.activate_user_profile(
    grant_type="password",
    username="jacknich",
    password="l0ng-r4nd0m-p@ssw0rd",
)
```

#### curl

```curl
curl -X POST "$ELASTICSEARCH_URL/_security/profile/_activate" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "password",
    "username": "jacknich",
    "password": "l0ng-r4nd0m-p@ssw0rd"
  }'
```

#### Java

```java
client.security().activateUserProfile(a -> a
    .grantType(GrantType.Password)
    .password("l0ng-r4nd0m-p@ssw0rd")
    .username("jacknich")
);
```

#### C#

```c#
var response = await client.Security
    .ActivateUserProfileAsync(d1 => d1
        .GrantType(GrantType.Password)
        .Password("l0ng-r4nd0m-p@ssw0rd")
        .Username("jacknich")
    );
```

#### PHP

```php
$resp = $client->security()->activateUserProfile([
    "body" => [
        "grant_type" => "password",
        "username" => "jacknich",
        "password" => "l0ng-r4nd0m-p@ssw0rd",
    ],
]);
```

#### Ruby

```ruby
response = client.security.activate_user_profile(
  body: {
    "grant_type": "password",
    "username": "jacknich",
    "password": "l0ng-r4nd0m-p@ssw0rd"
  }
)
```

## Response Examples

#### Activate user profile response example1

A successful response from `POST /_security/profile/_activate`.

```json
{
  "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  "enabled": true,
  "last_synchronized": 1642650651037,
  "user": {
    "username": "jacknich",
    "roles": [
      "admin", "other_role1"
    ],
    "realm_name": "native",
    "full_name": "Jack Nicholson",
    "email": "jacknich@example.com"
  },
  "labels": {},
  "data": {},
  "_doc": {
    "_primary_term": 88,
    "_seq_no": 66
  }
}
```

