> ## 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 Private Key

> Assigns a private key to a credential. Private keys are used for asymmetric decryption and digital signature generation. The credential is automatically deployed to all environments after the private key is assigned.

## Endpoint

```
PUT /apiops/projects/{projectName}/credentials/{username}/privateKey/{keyName}/
```

## 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        |
| keyName     | string | Yes      | Name of the private key to assign |

### Notes

* Private key must exist in the project or in the admin project
* Key must be of type `PRIVATE_KEY`
* Credential must exist
* Only one private key can be assigned to a credential at a time
* Assigning a new private key replaces the existing one if present

## 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": "Key (name: my-private-key) 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/privateKey/my-private-key/" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

## Notes and Warnings

* **Private Key Requirements**:
  * Private key must exist in the project or admin project
  * Key must be of type `PRIVATE_KEY`
  * Key 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 private key replaces any existing private key
  * Previous private key assignment is automatically removed

* **Security Considerations**:
  * Private keys are sensitive and should be handled securely
  * Ensure proper access controls are in place

* **Automatic Deployment**:
  * Credential is automatically deployed to all environments after private key 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 Private Key](/api-reference/credentials/secrets/remove-private-key) - Remove private key from credential
* [Set Public Key](/api-reference/credentials/secrets/set-public-key) - Assign public key to credential
* [List Credentials](/api-reference/credentials/crud/list-credentials) - List all credentials
