For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/api/latest/fleet-automation/cancel-a-deployment.md. A documentation index is available at /llms.txt.

Cancel a deployment

POST https://api.ap1.datadoghq.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.ap2.datadoghq.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.datadoghq.eu/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.ddog-gov.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.us2.ddog-gov.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.uk1.datadoghq.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.datadoghq.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.us3.datadoghq.com/api/v2/fleet/deployments/{deployment_id}/cancelhttps://api.us5.datadoghq.com/api/v2/fleet/deployments/{deployment_id}/cancel

Overview

Cancel an active deployment and stop all pending operations. When you cancel a deployment:

  • All pending operations on hosts that haven’t started yet are stopped.
  • Operations currently in progress on hosts may complete or be interrupted, depending on their current status.
  • Configuration changes or package upgrades already applied to hosts are not rolled back.

After cancellation, you can view the final state of the deployment using the GET endpoint to see which hosts were successfully updated before the cancellation.

Only deployments with a pending or running status can be canceled. Returns a 400 if the deployment is not in a cancelable status. Returns a 404 if no deployment matches the specified ID or if you do not have access to it.

This endpoint requires all of the following permissions:
  • agent_upgrade_write
  • fleet_policies_write

  • Arguments

    Path Parameters

    Name

    Type

    Description

    deployment_id [required]

    string

    The unique identifier of the deployment to cancel.

    Response

    OK

    Response containing the result of a deployment cancellation request.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    A deployment cancellation response.

    attributes [required]

    object

    Attributes of a deployment cancellation response.

    message

    string

    Human-readable message describing the outcome of the cancellation request.

    status

    string

    Status of the deployment after the cancellation request.

    id [required]

    string

    Unique identifier for the deployment.

    type [required]

    enum

    The type of deployment resource. Allowed enum values: deployment

    default: deployment

    {
      "data": {
        "attributes": {
          "message": "Cancellation has been requested; the deployment is stopping.",
          "status": "stopping"
        },
        "id": "k7Q-3mX-p9Z",
        "type": "deployment"
      }
    }

    Bad Request

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Unauthorized

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Forbidden

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Not Found

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Too many requests

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Code Example

                      # Path parameters
    export deployment_id="k7Q-3mX-p9Z"
    # Use a Personal Access Token or Service Access Token
    export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

    # Curl command
    curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/fleet/deployments/${deployment_id}/cancel" \ -H "Accept: application/json" \ -H "Authorization: Bearer ${DD_BEARER_TOKEN}"
    """
    Cancel a deployment returns "OK" response
    """
    
    from os import environ
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.fleet_automation_api import FleetAutomationApi
    
    # there is a valid "deployment" in the system
    DEPLOYMENT_ID = environ["DEPLOYMENT_ID"]
    
    configuration = Configuration()
    configuration.access_token = environ["DD_BEARER_TOKEN"]
    with ApiClient(configuration) as api_client:
        api_instance = FleetAutomationApi(api_client)
        response = api_instance.cancel_fleet_deployment_v2(
            deployment_id=DEPLOYMENT_ID,
        )
    
        print(response)
    

    Instructions

    First install the library and its dependencies and then save the example to example.py and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"
    # Cancel a deployment returns "OK" response
    
    require "datadog_api_client"
    DatadogAPIClient.configure do |config|
      config.access_token = ENV["DD_BEARER_TOKEN"]
    end
    api_instance = DatadogAPIClient::V2::FleetAutomationAPI.new
    
    # there is a valid "deployment" in the system
    DEPLOYMENT_ID = ENV["DEPLOYMENT_ID"]
    p api_instance.cancel_fleet_deployment_v2(DEPLOYMENT_ID)
    

    Instructions

    First install the library and its dependencies and then save the example to example.rb and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"
    // Cancel a deployment returns "OK" response
    
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"os"
    
    	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
    	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
    )
    
    func main() {
    	// there is a valid "deployment" in the system
    	DeploymentID := os.Getenv("DEPLOYMENT_ID")
    
    	ctx := datadog.NewDefaultContext(context.Background())
    	ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
    	configuration := datadog.NewConfiguration()
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewFleetAutomationApi(apiClient)
    	resp, r, err := api.CancelFleetDeploymentV2(ctx, DeploymentID)
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `FleetAutomationApi.CancelFleetDeploymentV2`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `FleetAutomationApi.CancelFleetDeploymentV2`:\n%s\n", responseContent)
    }
    

    Instructions

    First install the library and its dependencies and then save the example to main.go and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"
    // Cancel a deployment returns "OK" response
    
    import com.datadog.api.client.ApiClient;
    import com.datadog.api.client.ApiException;
    import com.datadog.api.client.v2.api.FleetAutomationApi;
    import com.datadog.api.client.v2.model.FleetDeploymentV2CancelResponse;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
        FleetAutomationApi apiInstance = new FleetAutomationApi(defaultClient);
    
        // there is a valid "deployment" in the system
        String DEPLOYMENT_ID = System.getenv("DEPLOYMENT_ID");
    
        try {
          FleetDeploymentV2CancelResponse result = apiInstance.cancelFleetDeploymentV2(DEPLOYMENT_ID);
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println("Exception when calling FleetAutomationApi#cancelFleetDeploymentV2");
          System.err.println("Status code: " + e.getCode());
          System.err.println("Reason: " + e.getResponseBody());
          System.err.println("Response headers: " + e.getResponseHeaders());
          e.printStackTrace();
        }
      }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to Example.java and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"
    // Cancel a deployment returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_fleet_automation::FleetAutomationAPI;
    
    #[tokio::main]
    async fn main() {
        // there is a valid "deployment" in the system
        let deployment_id = std::env::var("DEPLOYMENT_ID").unwrap();
        let configuration = datadog::Configuration::new();
        let api = FleetAutomationAPI::with_config(configuration);
        let resp = api.cancel_fleet_deployment_v2(deployment_id.clone()).await;
        if let Ok(value) = resp {
            println!("{:#?}", value);
        } else {
            println!("{:#?}", resp.unwrap_err());
        }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to src/main.rs and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
    /**
     * Cancel a deployment returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration({
      authMethods: {
        AuthZ: {
          accessToken: process.env.DD_BEARER_TOKEN as string,
        },
      },
    });
    const apiInstance = new v2.FleetAutomationApi(configuration);
    
    // there is a valid "deployment" in the system
    const DEPLOYMENT_ID = process.env.DEPLOYMENT_ID as string;
    
    const params: v2.FleetAutomationApiCancelFleetDeploymentV2Request = {
      deploymentId: DEPLOYMENT_ID,
    };
    
    apiInstance
      .cancelFleetDeploymentV2(params)
      .then((data: v2.FleetDeploymentV2CancelResponse) => {
        console.log(
          "API called successfully. Returned data: " + JSON.stringify(data)
        );
      })
      .catch((error: any) => console.error(error));
    

    Instructions

    First install the library and its dependencies and then save the example to example.ts and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"