Create Environment Variable

Overview

Creates a new environment variable. Environment variables can be global (same value for all environments) or environment-specific (different values per environment). The variable is automatically deployed to all environments.

Endpoint

POST /apiops/projects/{projectName}/environmentVariables/{name}/

Authentication

Requires a Personal API Access Token.

Authorization: Bearer YOUR_TOKEN

Request

Headers

Header Value Required
Authorization Bearer {token} Yes
Content-Type application/json Yes

Path Parameters

Parameter Type Required Description
projectName string Yes Project name (can be “admin” for admin project)
name string Yes Environment variable name (unique identifier)

Request Body

Full JSON Body Example - Global Environment Variable

{
  "name": "API_KEY",
  "description": "API Key for external service",
  "global": true,
  "globalValue": "secret-api-key-12345",
  "globalVisible": false,
  "environmentValueList": null
}

Full JSON Body Example - Environment-Specific Variable

{
  "name": "API_BASE_URL",
  "description": "Base URL for API calls",
  "global": false,
  "globalValue": null,
  "globalVisible": true,
  "environmentValueList": [
    {
      "environmentName": "production",
      "value": "https://api.production.example.com",
      "visible": true
    },
    {
      "environmentName": "staging",
      "value": "https://api.staging.example.com",
      "visible": true
    },
    {
      "environmentName": "development",
      "value": "https://api.dev.example.com",
      "visible": true
    }
  ]
}

Full JSON Body Example - Environment-Specific with Secret Values

{
  "name": "DATABASE_PASSWORD",
  "description": "Database password",
  "global": false,
  "globalValue": null,
  "globalVisible": true,
  "environmentValueList": [
    {
      "environmentName": "production",
      "value": "prod-secret-password",
      "visible": false
    },
    {
      "environmentName": "staging",
      "value": "staging-secret-password",
      "visible": false
    }
  ]
}

Request Body Fields

Field Type Required Default Description
name string Yes - Environment variable name (must match path parameter)
description string No - Environment variable description
global boolean No false Whether the variable is global (true) or environment-specific (false)
globalValue string|null No null Global value (required if global=true)
globalVisible boolean No true Whether global value is visible (not secret)
environmentValueList array[object]|null No null List of environment-specific values (required if global=false). See Environment Value Object

Environment Value Object (environmentValueList)

Field Type Required Description  
environmentName string Yes Environment name  
value string Yes Value for this environment  
visible boolean No false Whether the value is visible (not secret)

Notes

  • name in path must match name in body
  • name must be unique within the project
  • If global=true, provide globalValue and set environmentValueList=null
  • If global=false, provide environmentValueList with at least one environment value
  • visible=false marks the value as secret (will be masked in responses)
  • globalVisible=false marks the global value as secret
  • Variable is automatically deployed to all environments after creation

Response

Success Response (200 OK)

{
  "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)

{
  "error": "bad_request",
  "error_description": "Environment variable name can not be empty!"
}

or

{
  "error": "bad_request",
  "error_description": "Environment variable name in path (API_KEY) does not match name in body (API_BASE_URL)!"
}

or

{
  "error": "bad_request",
  "error_description": "Environment variable (name: API_KEY) already exists!"
}

Common Causes

  • Missing or empty name field
  • Name in path does not match name in body
  • Environment variable name already exists
  • Invalid global/environment-specific configuration

cURL Example

Example 1: Create Global Environment Variable

curl -X POST \
  "https://demo.apinizer.com/apiops/projects/MyProject/environmentVariables/API_KEY/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "API_KEY",
    "description": "API Key for external service",
    "global": true,
    "globalValue": "secret-api-key-12345",
    "globalVisible": false
  }'

Example 2: Create Environment-Specific Variable

curl -X POST \
  "https://demo.apinizer.com/apiops/projects/MyProject/environmentVariables/API_BASE_URL/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "API_BASE_URL",
    "description": "Base URL for API calls",
    "global": false,
    "environmentValueList": [
      {
        "environmentName": "production",
        "value": "https://api.production.example.com",
        "visible": true
      },
      {
        "environmentName": "staging",
        "value": "https://api.staging.example.com",
        "visible": true
      }
    ]
  }'

Notes and Warnings

  • Name Uniqueness:
    • Environment variable name must be unique within the project
    • If name already exists, creation will fail
  • Name Matching:
    • Name in path must match name in body
    • Case-insensitive matching
  • Global vs Environment-Specific:
    • global=true - Single value for all environments
    • global=false - Different values per environment
  • Secret Values:
    • Set visible=false or globalVisible=false to mark values as secret
    • Secret values are masked (returned as null) in responses
  • Environment Names:
    • Environment names must exist
    • Use environmentName (not environmentId)
  • Automatic Deployment:
    • Variable is automatically deployed to all environments
    • Deployment results are returned in the response
  • Permissions:
    • Requires ROLE_API_SECURITY permission
    • Requires ROLE_DEPLOY_UNDEPLOY_PROXIES permission for deployment
    • User must have access to the project