> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set JWK Encryption

> Assigns a JWK (JSON Web Key) for decryption and encryption to a credential. This JWK is used for JWT decryption and encryption operations. The credential is automatically deployed to all environments after the JWK is assigned.

## Endpoint

```
PUT /apiops/projects/{projectName}/credentials/{username}/jwk/encryption/{jwkName}/
```

## Authentication

Requires a Personal API Access Token.

### Header

```
Authorization: Bearer YOUR_TOKEN
```

## Request

### Headers

| Header        | Value          | Required |
| ------------- | -------------- | -------- |
| Authorization | Bearer {token} | Yes      |

### Path Parameters

| Parameter   | Type   | Required | Description                                             |
| ----------- | ------ | -------- | ------------------------------------------------------- |
| projectName | string | Yes      | Project name                                            |
| username    | string | Yes      | Username of the credential                              |
| jwkName     | string | Yes      | Name of the JWK to assign for decryption and encryption |

### Notes

* JWK must exist in the project or in the admin project
* Credential must exist
* Only one JWK can be assigned for decryption and encryption at a time
* Assigning a new JWK replaces the existing one if present
* JWK is used for JWT decryption and encryption operations

## Response

### Success Response (200 OK)

```json theme={null}
{
  "success": true,
  "deploymentResult": {
    "success": true,
    "message": "Deployment completed successfully",
    "environmentResults": [
      {
        "environmentName": "production",
        "success": true,
        "message": "Deployed successfully"
      },
      {
        "environmentName": "staging",
        "success": true,
        "message": "Deployed successfully"
      }
    ]
  }
}
```

### Error Response (400 Bad Request)

```json theme={null}
{
  "error": "bad_request",
  "error_description": "Credential (username: api-user) was not found!"
}
```

or

```json theme={null}
{
  "error": "bad_request",
  "error_description": "JWK (name: my-jwk) is not found!"
}
```

### Error Response (401 Unauthorized)

```json theme={null}
{
  "error": "unauthorized_client",
  "error_description": "Invalid token"
}
```

### Error Response (404 Not Found)

```json theme={null}
{
  "error": "not_found",
  "error_description": "Project(MyProject) was not found or user does not have privilege to access it!"
}
```

## cURL Example

```bash theme={null}
curl -X PUT \
  "https://demo.apinizer.com/apiops/projects/MyProject/credentials/api-user/jwk/encryption/my-jwk/" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

## Notes and Warnings

* **JWK Requirements**:
  * JWK must exist in the project or admin project
  * JWK name is case-sensitive

* **Credential Requirements**:
  * Credential must exist
  * Credential must be in the same project or accessible from the project

* **Replacement Behavior**:
  * Assigning a new JWK replaces any existing JWK for decryption and encryption
  * Previous JWK assignment is automatically removed

* **Usage**:
  * JWK is used for JWT decryption operations
  * JWK is used for JWT encryption operations
  * Separate from JWK used for validation and signing

* **Automatic Deployment**:
  * Credential is automatically deployed to all environments after JWK assignment
  * Deployment results are returned in the response

## Permissions

* User must have **`IDENTITY` + `MANAGE`** permission in the project
* For automatic deployment, user must also have **`IDENTITY` + `DEPLOY_UNDEPLOY`** permission

## Related Documentation

* [Remove JWK Encryption](/api-reference/credentials/jwk-settings/remove-jwk-encryption) - Remove JWK for decryption and encryption
* [Set JWK Validation](/api-reference/credentials/jwk-settings/set-jwk-validation) - Assign JWK for validation and signing
* [List Credentials](/api-reference/credentials/crud/list-credentials) - List all credentials
