Skip to main content
POST
/
environments
/
{id}
/
deployments
Deploy Environment
curl --request POST \
  --url https://api.env0.com/environments/{id}/deployments \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '{
  "workflowDeploymentId": "<string>",
  "deploymentType": "deploy",
  "blueprintId": "<string>",
  "blueprintRevision": "<string>",
  "blueprintRepository": "<string>",
  "configurationChanges": {
    "name": "<string>",
    "value": "<string>",
    "id": "<string>",
    "isSensitive": true,
    "isReadonly": true,
    "isRequired": true,
    "regex": "<string>",
    "type": 0,
    "toDelete": true,
    "projectId": "<string>",
    "schema": {
      "type": "<string>",
      "enum": [
        "<any>"
      ],
      "format": "HCL"
    },
    "description": "<string>",
    "isOutput": true
  },
  "configurationSetChanges": {
    "assign": [
      "<string>"
    ],
    "unassign": [
      "<string>"
    ]
  },
  "ttl": {
    "type": "INFINITE",
    "value": "<string>"
  },
  "envName": "<string>",
  "userRequiresApproval": true,
  "targets": [
    "<string>"
  ],
  "customEnv0EnvironmentVariables": {
    "environmentId": "<string>",
    "projectId": "<string>",
    "projectName": "<string>",
    "deploymentLogId": "<string>",
    "deploymentType": "deploy",
    "deploymentRevision": "<string>",
    "workspaceName": "<string>",
    "rootDir": "<string>",
    "organizationId": "<string>",
    "templateId": "<string>",
    "templateDir": "<string>",
    "templateName": "<string>",
    "environmentName": "<string>",
    "environmentCreatorName": "<string>",
    "environmentCreatorUserId": "<string>",
    "environmentCreatorEmail": "<string>",
    "deployerName": "<string>",
    "deployerUserId": "<string>",
    "deployerEmail": "<string>",
    "reviewerName": "<string>",
    "reviewerEmail": "<string>",
    "reviewerUserId": "<string>",
    "vcsProvider": "gitlab",
    "prAuthor": "<string>",
    "prNumber": "<string>",
    "prSourceRepository": "<string>",
    "prSourceBranch": "<string>",
    "prTargetBranch": "<string>",
    "commitHash": "<string>",
    "commitUrl": "<string>",
    "oidcToken": "<string>",
    "vcsAccessToken": "<string>",
    "tfPlanJson": "<string>",
    "cliArgsPlan": "<string>",
    "cliArgsApply": "<string>"
  },
  "gitUserData": {
    "gitUser": "<string>",
    "gitAvatarUrl": "<string>",
    "prNumber": "<string>"
  },
  "comment": "<string>",
  "triggerName": "user",
  "upstreamEnvironmentId": "<string>",
  "taskPayload": "<string>",
  "subEnvironments": {},
  "autoDriftRemediationStrategy": "DISABLED",
  "workflowDeploymentOptions": {
    "node": "<string>",
    "operation": "run-from-here"
  },
  "subEnvironmentAlias": "<string>"
}'
{
  "id": "<string>",
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z",
  "type": "deploy",
  "startedBy": "<string>",
  "queuedAt": "2023-11-07T05:31:56Z",
  "startedAt": "2023-11-07T05:31:56Z",
  "finishedAt": "2023-11-07T05:31:56Z",
  "output": {},
  "error": {},
  "failedCommand": "<string>",
  "customEnv0EnvironmentVariables": {
    "environmentId": "<string>",
    "projectId": "<string>",
    "projectName": "<string>",
    "deploymentLogId": "<string>",
    "deploymentType": "deploy",
    "deploymentRevision": "<string>",
    "workspaceName": "<string>",
    "rootDir": "<string>",
    "organizationId": "<string>",
    "templateId": "<string>",
    "templateDir": "<string>",
    "templateName": "<string>",
    "environmentName": "<string>",
    "environmentCreatorName": "<string>",
    "environmentCreatorUserId": "<string>",
    "environmentCreatorEmail": "<string>",
    "deployerName": "<string>",
    "deployerUserId": "<string>",
    "deployerEmail": "<string>",
    "reviewerName": "<string>",
    "reviewerEmail": "<string>",
    "reviewerUserId": "<string>",
    "vcsProvider": "gitlab",
    "prAuthor": "<string>",
    "prNumber": "<string>",
    "prSourceRepository": "<string>",
    "prSourceBranch": "<string>",
    "prTargetBranch": "<string>",
    "commitHash": "<string>",
    "commitUrl": "<string>",
    "oidcToken": "<string>",
    "vcsAccessToken": "<string>",
    "tfPlanJson": "<string>",
    "cliArgsPlan": "<string>",
    "cliArgsApply": "<string>"
  },
  "costEstimation": {
    "totalMonthlyCost": 123,
    "monthlyCostDiff": 123,
    "projects": [
      {
        "diff": {
          "totalMonthlyCost": "<string>"
        }
      }
    ]
  },
  "status": "IN_PROGRESS",
  "blueprintId": "<string>",
  "blueprintName": "<string>",
  "blueprintRepository": "<string>",
  "blueprintRevision": "<string>",
  "blueprintPath": "<string>",
  "blueprintType": "opentofu",
  "comment": "<string>",
  "environmentId": "<string>",
  "resourceCount": 123,
  "resources": [
    {
      "provider": "<string>",
      "type": "<string>",
      "name": "<string>",
      "moduleName": "<string>"
    }
  ],
  "startedByUser": {
    "email": "<string>",
    "user_id": "<string>",
    "created_at": "<string>",
    "app_metadata": {},
    "picture": "<string>",
    "name": "<string>",
    "last_login": "<string>",
    "given_name": "<string>",
    "family_name": "<string>"
  },
  "isScheduledRun": true,
  "abortedBy": "<string>",
  "abortedByUser": {
    "email": "<string>",
    "user_id": "<string>",
    "created_at": "<string>",
    "app_metadata": {},
    "picture": "<string>",
    "name": "<string>",
    "last_login": "<string>",
    "given_name": "<string>",
    "family_name": "<string>"
  },
  "gitUser": "<string>",
  "gitAvatarUrl": "<string>",
  "prNumber": "<string>",
  "triggerName": "user",
  "driftDetected": true,
  "plan": {
    "resourceChanges": [
      {
        "id": "<string>",
        "cloudId": "<string>",
        "moduleName": "<string>",
        "driftByCloud": true,
        "name": "<string>",
        "providerName": "<string>",
        "type": "<string>",
        "path": "<string>",
        "action": "create",
        "attributes": [
          {
            "name": "<string>",
            "before": "<any>",
            "after": "<any>"
          }
        ],
        "importing": {
          "id": "<string>"
        },
        "actionReason": "replace_because_tainted",
        "createBeforeDestroy": true,
        "previousAddress": "<string>"
      }
    ],
    "outputChanges": [
      {
        "moduleName": "<string>",
        "name": "<string>",
        "action": "create",
        "attributes": [
          {
            "name": "<string>",
            "before": "<any>",
            "after": "<any>"
          }
        ]
      }
    ]
  },
  "planSummary": {
    "added": 123,
    "changed": 123,
    "destroyed": 123,
    "imported": 123
  },
  "isSkippedApply": true,
  "workflowDeploymentId": "<string>",
  "workflowFile": {
    "settings": {
      "environmentRemovalStrategy": "destroy"
    },
    "environments": {}
  },
  "workflowDeploymentOptions": {
    "node": "<string>",
    "operation": "run-from-here"
  },
  "stateVersionId": "<string>",
  "reviewersUsers": [
    {
      "user": {
        "email": "<string>",
        "user_id": "<string>",
        "created_at": "<string>",
        "app_metadata": {},
        "picture": "<string>",
        "name": "<string>",
        "last_login": "<string>",
        "given_name": "<string>",
        "family_name": "<string>"
      },
      "action": "approved"
    }
  ],
  "reviewers": [
    {
      "userId": "<string>",
      "action": "approved"
    }
  ],
  "reviewedBy": "<string>",
  "reviewedByUser": {
    "email": "<string>",
    "user_id": "<string>",
    "created_at": "<string>",
    "app_metadata": {},
    "picture": "<string>",
    "name": "<string>",
    "last_login": "<string>",
    "given_name": "<string>",
    "family_name": "<string>"
  },
  "targets": [
    "<string>"
  ],
  "variables": [
    {
      "id": "<string>",
      "name": "<string>",
      "scope": "SET",
      "scopeId": "<string>",
      "value": "<string>",
      "isSensitive": true,
      "type": 0,
      "schema": {
        "type": "<string>",
        "enum": [
          "<string>"
        ],
        "format": "HCL"
      },
      "userId": "<string>",
      "updatedAt": "2023-11-07T05:31:56Z",
      "projectId": "<string>"
    }
  ],
  "gitMetadata": {
    "commit": "<string>",
    "branch": "<string>",
    "timestamp": "2023-11-07T05:31:56Z"
  },
  "providerVersions": {},
  "moduleVersions": {},
  "stateFileHash": {
    "value": "<string>"
  },
  "driftCause": {
    "unappliedCommits": [
      {
        "userEmail": "<string>",
        "timestamp": "2023-11-07T05:31:56Z",
        "commitHash": "<string>"
      }
    ]
  }
}

Authorizations

Authorization
string
header
required

env0 API authentication is done via API keys. An API Key can either be created by an organization administrator, in which case it will not be connected to any specific user, or via Personal API Keys to authenticate as a user.

Creating an API Key with a Specific Role

  • Once you've created your organization, you can set up and manage API Keys.

  • Navigate to the Organization Settings page and click the API Keys tab.

  • Click Add API Key and enter a name for your key in the Name field. This name is for reference purposes only and isn't used directly in authentication.

    ❗️Save Your API Key ID and secret The secret will not be available after you close this window.

Creating a Personal API Key

  • Click on your avatar (located on the top right of the screen)

  • Click on Personal Settings

  • Select the API Keys tab

  • Click Add API Key, and enter a name for your key in the Name field. This name is for reference purposes and isn't used directly in authentication.

    ❗️Save your API Key ID & secret The secret will not be available after you close this window.

Using an API Key to Authenticate

Authentication of the env0 API is done using the Basic Authentication method. Each request made should include the API Key ID as the username, and the API Key secret as the password. For example, when using curl, we can include these parameters via flag --user {API Key ID}:{API Key Secret}.

API Key Permissions

When creating an API key through the organization settings, you will need to choose if you’d like to grant it Organization Admin or User permissions. In case of the latter, you can assign fine-grained permissions per project. Personal API Keys can be created through the user’s profile page and will have the same permissions as the user has.

Rate Limits

env0 API allows up to 1K requests per 60 seconds, requests are aggregated by IP, HTTP Method and URI. If you exceed this limit, you will receive a 429 status code.

Path Parameters

id
string
required

Body

application/json
workflowDeploymentId
string
deploymentType
enum<string>
Available options:
deploy,
prPlan,
driftDetection,
task,
remotePlan,
dryRun,
moduleTest
blueprintId
string
blueprintRevision
string
blueprintRepository
string
configurationChanges

Manage variables in the environment. Either a single variable or an array of variables.

configurationSetChanges
object
ttl
object
envName
string
userRequiresApproval
boolean
targets
string[]
customEnv0EnvironmentVariables
object
gitUserData
object
comment
string
triggerName
Available options:
user,
terraform-cli,
workflow,
user,
terraform-cli,
workflow,
user,
terraform-cli,
workflow
upstreamEnvironmentId
string
taskPayload
string
subEnvironments
object
autoDriftRemediationStrategy
enum<string>
Available options:
DISABLED,
CODE_TO_CLOUD,
CLOUD_TO_CODE,
SMART_REMEDIATION,
DISABLED,
CODE_TO_CLOUD,
CLOUD_TO_CODE,
SMART_REMEDIATION
workflowDeploymentOptions
object

[Optional] Only applicable when running a Workflow Environment. Allows to run a partial Workflow, starting from a specific point in the pipeline. Or run a single sub-environment deploy/destroy.

subEnvironmentAlias
string

Response

200 - application/json
id
string
required
type
enum<string>
required
Available options:
deploy,
destroy,
prPlan,
driftDetection,
task,
remotePlan,
dryRun,
moduleTest,
deploy,
destroy,
prPlan,
driftDetection,
task,
remotePlan,
dryRun,
moduleTest
startedBy
string
required
queuedAt
string<date-time>
required
startedAt
string<date-time>
required
finishedAt
string<date-time>
required
output
required
error
object
required
costEstimation
object
required
status
enum<string>
required
Available options:
IN_PROGRESS,
WAITING_FOR_USER,
TIMEOUT,
FAILURE,
SUCCESS,
CANCELLED,
INTERNAL_FAILURE,
ABORTING,
ABORTED,
QUEUED,
SKIPPED,
NEVER_DEPLOYED,
IN_PROGRESS,
WAITING_FOR_USER,
TIMEOUT,
FAILURE,
SUCCESS,
CANCELLED,
INTERNAL_FAILURE,
ABORTING,
ABORTED,
QUEUED,
SKIPPED,
NEVER_DEPLOYED,
IN_PROGRESS,
WAITING_FOR_USER,
TIMEOUT,
FAILURE,
SUCCESS,
CANCELLED,
INTERNAL_FAILURE,
ABORTING,
ABORTED,
QUEUED,
SKIPPED,
NEVER_DEPLOYED
blueprintId
string
required
blueprintName
string
required
blueprintRepository
string
required
blueprintRevision
string
required
blueprintPath
string
required
blueprintType
enum<string>
required
Available options:
opentofu,
terraform,
terragrunt,
pulumi,
k8s,
cloudformation,
helm,
ansible,
workflow,
module,
opentofu,
terraform,
terragrunt,
pulumi,
k8s,
cloudformation,
helm,
ansible,
workflow,
module
environmentId
string
required
resourceCount
number
required
startedByUser
object
required
isScheduledRun
boolean
required
abortedBy
string
required
abortedByUser
object
required
reviewersUsers
object[]
required
reviewers
object[]
required
createdAt
string<date-time>
updatedAt
string<date-time>
failedCommand
string
customEnv0EnvironmentVariables
object
comment
string
resources
object[]
gitUser
string
gitAvatarUrl
string
prNumber
string
triggerName
Available options:
user,
terraform-cli,
workflow,
user,
terraform-cli,
workflow,
user,
terraform-cli,
workflow
driftDetected
boolean
plan
object
planSummary
object
isSkippedApply
boolean
workflowDeploymentId
string
workflowFile
object
workflowDeploymentOptions
object
stateVersionId
string
reviewedBy
string
reviewedByUser
object
targets
string[]
variables
object[]
gitMetadata
object
providerVersions
object
  • Option 1
  • Option 2
  • Option 3
  • Option 4
moduleVersions
object
  • Option 1
  • Option 2
  • Option 3
  • Option 4
stateFileHash
object
  • Option 1
  • Option 2
  • Option 3
  • Option 4
driftCause
object
I