Ana içeriğe geç

Create Key

Endpoint

POST /apiops/projects/{projectName}/keys/

Authentication

Requires a Personal API Access Token.

Authorization: Bearer YOUR_TOKEN

Request

Headers

HeaderValueRequired
AuthorizationBearer {token}Yes
Content-Typeapplication/jsonYes

Path Parameters

ParameterTypeRequiredDescription
projectNamestringYesProject name

Request Body

The request body should contain a KeyCreateDTO object with the following structure:

{
"name": "my-key",
"description": "Key for API encryption",
"keyType": "PRIVATE_KEY",
"cryptoKeyInfoEnvironmentList": [
{
"environmentName": "production",
"content": "base64-encoded-key-content",
"alias": "my-key-alias"
}
]
}

Request Body Fields

FieldTypeRequiredDescription
namestringYesKey name (unique identifier)
descriptionstringNoKey description
keyTypestringYesKey type: SECRET_KEY, PRIVATE_KEY, or PUBLIC_KEY
cryptoKeyInfoEnvironmentListarray[object]YesList of key environments

Key Environment Object

FieldTypeRequiredDescription
environmentNamestringYesEnvironment name where key will be deployed
contentstringYesBase64-encoded key content
aliasstringNoKey alias (optional identifier)

Notes

  • Request Format: This API uses application/json content type. Unlike the Certificate API, files are not uploaded via multipart/form-data. Instead, key content must be base64-encoded and included in the JSON body.
  • name must be unique within the project
  • Key is automatically deployed to all specified environments after creation
  • Key material must be provided as base64-encoded content in the content field
  • environmentName is used to identify the environment (not environmentId)
  • To encode a key file to base64, you can use command-line tools like base64 (Linux/Mac) or certutil -encode (Windows), or any base64 encoding library in your programming language

Response

Success Response (200 OK)

{
"success": true,
"deploymentResult": {
"success": true,
"message": "Deployment completed successfully",
"environmentResults": [
{
"environmentName": "production",
"success": true,
"message": "Deployed successfully"
}
]
}
}

Error Response (400 Bad Request)

{
"error": "bad_request",
"error_description": "Key (name: my-key) is already exist! Try update operation if want to change its value."
}

cURL Example

curl -X POST \
"https://demo.apinizer.com/apiops/projects/MyProject/keys/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-key",
"description": "Key for API encryption",
"keyType": "PRIVATE_KEY",
"cryptoKeyInfoEnvironmentList": [
{
"environmentName": "production",
"content": "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0t...",
"alias": "my-key-alias"
}
]
}'

Example 2: Create Key with Multiple Environments

curl -X POST \
"https://demo.apinizer.com/apiops/projects/MyProject/keys/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-key",
"description": "Key for API encryption",
"keyType": "SECRET_KEY",
"cryptoKeyInfoEnvironmentList": [
{
"environmentName": "production",
"content": "base64-encoded-key-content",
"alias": "prod-key-alias"
},
{
"environmentName": "staging",
"content": "base64-encoded-key-content",
"alias": "staging-key-alias"
}
]
}'

Notes and Warnings

  • Key Name:

    • Must be unique within the project
    • Cannot be changed after creation
  • Key Type:

    • SECRET_KEY: Symmetric key (AES, DES, DESede)
    • PRIVATE_KEY: Asymmetric private key (RSA)
    • PUBLIC_KEY: Asymmetric public key (RSA)
  • Environment Name:

    • Use environmentName (not environmentId) to specify the environment
    • Environment name must exist and be accessible
  • Key Content:

    • Must be base64-encoded and included in the JSON body (not uploaded as a file)
    • For private/public keys, include the full key material (PEM format)
    • Example: Read your key file and encode it to base64: base64 -i private-key.pem (Linux/Mac) or certutil -encode private-key.pem temp.txt && type temp.txt (Windows)
    • Content is encrypted before storage
    • Note: This API uses JSON body format. If you need to upload a file directly, consider using the Certificate API which supports multipart/form-data
  • Automatic Deployment:

    • Key is automatically deployed to all specified environments after creation
    • Deployment results are returned in the response

Permissions

User must have SECRETS + MANAGE permission in the project. For deployment operations (when deploying keys to environments), user must also have SECRETS + DEPLOY_UNDEPLOY permission.