Get commitments list

Note: This endpoint is in preview and is subject to change. If you have any feedback, contact Datadog support.

GET https://api.ap1.datadoghq.com/api/v2/cost/commitments/commitment-listhttps://api.ap2.datadoghq.com/api/v2/cost/commitments/commitment-listhttps://api.datadoghq.eu/api/v2/cost/commitments/commitment-listhttps://api.ddog-gov.com/api/v2/cost/commitments/commitment-listhttps://api.us2.ddog-gov.com/api/v2/cost/commitments/commitment-listhttps://api.datadoghq.com/api/v2/cost/commitments/commitment-listhttps://api.us3.datadoghq.com/api/v2/cost/commitments/commitment-listhttps://api.us5.datadoghq.com/api/v2/cost/commitments/commitment-list

Overview

Get a list of individual cloud commitments (Reserved Instances or Savings Plans) with their utilization details. The response schema varies based on the provider, product, and commitment type. This endpoint requires the cloud_cost_management_read permission.

OAuth apps require the cloud_cost_management_read authorization scope to access this endpoint.

Arguments

Query Strings

Name

Type

Description

provider [required]

enum

Cloud provider for commitment programs (aws or azure).
Allowed enum values: aws, azure

product [required]

string

Cloud product identifier (for example, ec2, rds, virtualmachines).

start [required]

integer

Start of the query time range in Unix milliseconds.

end [required]

integer

End of the query time range in Unix milliseconds.

filterBy

string

Optional filter expression to narrow down results.

commitmentType

enum

Type of commitment to query. ri for Reserved Instances, sp for Savings Plans. Defaults to ri.
Allowed enum values: ri, sp

Response

OK

Response containing a list of cloud commitment details.

Expand All

Field

Type

Description

commitments [required]

[ <oneOf>]

Array of commitment items.

Option 1

object

AWS EC2 Reserved Instance commitment details.

availability_zone

string

The availability zone of the reservation.

commitment_id [required]

string

The unique identifier of the Reserved Instance.

expiration_date

string

The expiration date of the commitment.

instance_type [required]

string

The EC2 instance type.

number_of_nfus

double

The number of Normalized Capacity Units.

number_of_reservations

double

The number of reserved instances.

offering_class [required]

string

The offering class of the Reserved Instance.

operating_system [required]

string

The operating system of the Reserved Instance.

purchase_option [required]

string

The payment option for the Reserved Instance.

region [required]

string

The AWS region of the Reserved Instance.

start_date

string

The start date of the commitment.

term_length

double

The term length in years.

utilization

double

The utilization percentage of the commitment.

Option 2

object

AWS RDS Reserved Instance commitment details.

commitment_id [required]

string

The unique identifier of the Reserved Instance.

database_engine [required]

string

The database engine of the Reserved Instance.

expiration_date

string

The expiration date of the commitment.

instance_type [required]

string

The RDS instance type.

is_multi_az

boolean

Whether the Reserved Instance is Multi-AZ.

number_of_nfus

double

The number of Normalized Capacity Units.

number_of_reservations

double

The number of reserved instances.

purchase_option [required]

string

The payment option for the Reserved Instance.

region [required]

string

The AWS region of the Reserved Instance.

start_date

string

The start date of the commitment.

term_length

double

The term length in years.

utilization

double

The utilization percentage of the commitment.

Option 3

object

AWS ElastiCache Reserved Instance commitment details.

cache_engine [required]

string

The cache engine type of the Reserved Instance.

commitment_id [required]

string

The unique identifier of the Reserved Instance.

expiration_date

string

The expiration date of the commitment.

instance_type [required]

string

The ElastiCache instance type.

number_of_nfus

double

The number of Normalized Capacity Units.

number_of_reservations

double

The number of reserved instances.

purchase_option [required]

string

The payment option for the Reserved Instance.

region [required]

string

The AWS region of the Reserved Instance.

start_date

string

The start date of the commitment.

term_length

double

The term length in years.

utilization

double

The utilization percentage of the commitment.

Option 4

object

AWS Savings Plan commitment details.

commitment_id [required]

string

The unique identifier of the Savings Plan.

committed_spend_per_hour

double

The hourly committed spend for the Savings Plan.

expiration_date

string

The expiration date of the commitment.

purchase_option [required]

string

The payment option for the Savings Plan.

savings_plan_type [required]

string

The Savings Plan type.

start_date

string

The start date of the commitment.

term_length

double

The term length in years.

utilization

double

The utilization percentage of the commitment.

Option 5

object

Azure Virtual Machine Reserved Instance commitment details.

benefit_name [required]

string

The display name of the Azure reservation.

commitment_id [required]

string

The unique identifier of the Reserved Instance.

expiration_date

string

The expiration date of the commitment.

instance_type [required]

string

The Azure VM instance type.

meter_sub_category [required]

string

The Azure meter sub-category for the reservation.

region [required]

string

The Azure region of the Reserved Instance.

start_date

string

The start date of the commitment.

status [required]

enum

Status of an Azure VM Reserved Instance. Allowed enum values: running,expired,cancelled

term_length

double

The term length in years.

utilization

double

The utilization percentage of the commitment.

Option 6

object

Azure Compute Savings Plan commitment details.

benefit_name [required]

string

The display name of the Azure Savings Plan.

commitment_id [required]

string

The unique identifier of the Savings Plan.

committed_spend_per_hour

double

The hourly committed spend for the Savings Plan.

expiration_date

string

The expiration date of the commitment.

start_date

string

The start date of the commitment.

term_length

double

The term length in years.

utilization

double

The utilization percentage of the commitment.

meta

object

Metadata for a commitments list response.

committed_spend_unit

object

Unit metadata for a numeric metric.

family [required]

string

The unit family (for example, percentage or money).

id [required]

int64

The unit identifier.

name [required]

string

The unit name (for example, percent or dollar).

plural [required]

string

The plural form of the unit name.

scale_factor [required]

double

The scale factor for the unit.

short_name [required]

string

The abbreviated unit name (for example, % or $).

{
  "commitments": [
    {
      "availability_zone": "us-east-1a",
      "commitment_id": "ri-0123456789abcdef0",
      "expiration_date": "2025-12-31T00:00:00Z",
      "instance_type": "m5.xlarge",
      "number_of_nfus": 8,
      "number_of_reservations": 2,
      "offering_class": "standard",
      "operating_system": "Linux",
      "purchase_option": "All Upfront",
      "region": "us-east-1",
      "start_date": "2023-01-01T00:00:00Z",
      "term_length": 1,
      "utilization": 0.85
    }
  ],
  "meta": {
    "committed_spend_unit": {
      "family": "percentage",
      "id": 17,
      "name": "percent",
      "plural": "percent",
      "scale_factor": 1,
      "short_name": "%"
    }
  }
}

Bad Request

API error response.

Expand All

Field

Type

Description

errors [required]

[object]

A list of errors.

detail

string

A human-readable explanation specific to this occurrence of the error.

meta

object

Non-standard meta-information about the error

source

object

References to the source of the error.

header

string

A string indicating the name of a single request header which caused the error.

parameter

string

A string indicating which URI query parameter caused the error.

pointer

string

A JSON pointer to the value in the request document that caused the error.

status

string

Status code of the response.

title

string

Short human-readable summary of the error.

{
  "errors": [
    {
      "detail": "Missing required attribute in body",
      "meta": {},
      "source": {
        "header": "Authorization",
        "parameter": "limit",
        "pointer": "/data/attributes/title"
      },
      "status": "400",
      "title": "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

                  # Required query arguments
export provider="aws"
export product="ec2"
export start="1.6935264e+12"
export end="1.6961184e+12"
# Curl command
curl -X GET "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.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/cost/commitments/commitment-list?provider=${provider}&product=${product}&start=${start}&end=${end}" \ -H "Accept: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}"
"""
Get commitments list returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.cloud_cost_management_api import CloudCostManagementApi
from datadog_api_client.v2.model.commitments_provider import CommitmentsProvider

configuration = Configuration()
configuration.unstable_operations["get_commitments_commitment_list"] = True
with ApiClient(configuration) as api_client:
    api_instance = CloudCostManagementApi(api_client)
    response = api_instance.get_commitments_commitment_list(
        provider=CommitmentsProvider.AWS,
        product="product",
        start=9223372036854775807,
        end=9223372036854775807,
    )

    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.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
# Get commitments list returns "OK" response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.unstable_operations["v2.get_commitments_commitment_list".to_sym] = true
end
api_instance = DatadogAPIClient::V2::CloudCostManagementAPI.new
p api_instance.get_commitments_commitment_list(CommitmentsProvider::AWS, "product", 9223372036854775807, 9223372036854775807)

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.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
// Get commitments list 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() {
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.GetCommitmentsCommitmentList", true)
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewCloudCostManagementApi(apiClient)
	resp, r, err := api.GetCommitmentsCommitmentList(ctx, datadogV2.COMMITMENTSPROVIDER_AWS, "product", 9223372036854775807, 9223372036854775807, *datadogV2.NewGetCommitmentsCommitmentListOptionalParameters())

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `CloudCostManagementApi.GetCommitmentsCommitmentList`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `CloudCostManagementApi.GetCommitmentsCommitmentList`:\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.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
// Get commitments list returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.CloudCostManagementApi;
import com.datadog.api.client.v2.model.CommitmentsListResponse;
import com.datadog.api.client.v2.model.CommitmentsProvider;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    defaultClient.setUnstableOperationEnabled("v2.getCommitmentsCommitmentList", true);
    CloudCostManagementApi apiInstance = new CloudCostManagementApi(defaultClient);

    try {
      CommitmentsListResponse result =
          apiInstance.getCommitmentsCommitmentList(
              CommitmentsProvider.AWS, "ec2", 1693526400000L, 1696118400000L);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println(
          "Exception when calling CloudCostManagementApi#getCommitmentsCommitmentList");
      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.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
// Get commitments list returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_cloud_cost_management::CloudCostManagementAPI;
use datadog_api_client::datadogV2::api_cloud_cost_management::GetCommitmentsCommitmentListOptionalParams;
use datadog_api_client::datadogV2::model::CommitmentsProvider;

#[tokio::main]
async fn main() {
    let mut configuration = datadog::Configuration::new();
    configuration.set_unstable_operation_enabled("v2.GetCommitmentsCommitmentList", true);
    let api = CloudCostManagementAPI::with_config(configuration);
    let resp = api
        .get_commitments_commitment_list(
            CommitmentsProvider::AWS,
            "product".to_string(),
            9223372036854775807,
            9223372036854775807,
            GetCommitmentsCommitmentListOptionalParams::default(),
        )
        .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.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
/**
 * Get commitments list returns "OK" response
 */

import { client, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
configuration.unstableOperations["v2.getCommitmentsCommitmentList"] = true;
const apiInstance = new v2.CloudCostManagementApi(configuration);

const params: v2.CloudCostManagementApiGetCommitmentsCommitmentListRequest = {
  provider: "aws",
  product: "product",
  start: 9223372036854775807,
  end: 9223372036854775807,
};

apiInstance
  .getCommitmentsCommitmentList(params)
  .then((data: v2.CommitmentsListResponse) => {
    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.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"