PUT https://api.ap1.datadoghq.com/api/v2/cost/custom_costs https://api.ap2.datadoghq.com/api/v2/cost/custom_costs https://api.datadoghq.eu/api/v2/cost/custom_costs https://api.ddog-gov.com/api/v2/cost/custom_costs https://api.us2.ddog-gov.com/api/v2/cost/custom_costs https://api.datadoghq.com/api/v2/cost/custom_costs https://api.us3.datadoghq.com/api/v2/cost/custom_costs https://api.us5.datadoghq.com/api/v2/cost/custom_costs
Overview Upload a Custom Costs file.
This endpoint requires the cloud_cost_management_write permission.
OAuth apps require the cloud_cost_management_write authorization scope to access this endpoint.
Request Body Data (required)
Expand All
Total cost in the cost file.
Currency used in the Custom Costs file.
Description for the line item cost.
End date of the usage charge.
Start date of the usage charge.
Name of the provider for the line item.
Additional tags for the line item.
[
{
"ProviderName" : "my_provider" ,
"ChargePeriodStart" : "2023-05-06" ,
"ChargePeriodEnd" : "2023-06-06" ,
"ChargeDescription" : "my_description" ,
"BilledCost" : 250 ,
"BillingCurrency" : "USD" ,
"Tags" : {
"key" : "value"
}
}
] Response Accepted
Response for Uploaded Custom Costs files.
Expand All
JSON API format for a Custom Costs file.
Schema of a Custom Costs metadata.
Total cost in the cost file.
Currency used in the Custom Costs file.
Usage charge period of a Custom Costs file.
End of the usage of the Custom Costs file.
Start of the usage of the Custom Costs file.
Name of the Custom Costs file.
Providers contained in the Custom Costs file.
Status of the Custom Costs file.
Timestamp, in millisecond, of the upload time of the Custom Costs file.
Metadata of the user that has uploaded the Custom Costs file.
The name of the Custom Costs file.
The name of the Custom Costs file.
ID of the Custom Costs metadata.
Type of the Custom Costs file metadata.
Meta for the response from the Upload Custom Costs endpoints.
Version of Custom Costs file
{
"data" : {
"attributes" : {
"billed_cost" : 100.5 ,
"billing_currency" : "USD" ,
"charge_period" : {
"end" : 1706745600000 ,
"start" : 1704067200000
},
"name" : "my_file.json" ,
"provider_names" : [
"my_provider"
],
"status" : "active" ,
"uploaded_at" : 1704067200000 ,
"uploaded_by" : {
"email" : "email.test@datadohq.com" ,
"icon" : "icon.png" ,
"name" : "Test User"
}
},
"id" : "string" ,
"type" : "string"
},
"meta" : {
"version" : "string"
}
} Bad Request
{
"errors" : [
"Bad Request"
]
} Forbidden
{
"errors" : [
"Bad Request"
]
} Too many requests
{
"errors" : [
"Bad Request"
]
} Code Example Copy
## default
#
# Curl command curl -X PUT "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/custom_costs " \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY} " \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY} " \
-d @- << EOF
[
{
"BilledCost": 100.5,
"BillingCurrency": "USD",
"ChargeDescription": "Monthly usage charge for my service",
"ChargePeriodEnd": "2023-02-28",
"ChargePeriodStart": "2023-02-01"
}
]
EOF
// Upload Custom Costs File returns "Accepted" 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 () {
body := [] datadogV2 . CustomCostsFileLineItem {
{
ProviderName : datadog . PtrString ( "my_provider" ),
ChargePeriodStart : datadog . PtrString ( "2023-05-06" ),
ChargePeriodEnd : datadog . PtrString ( "2023-06-06" ),
ChargeDescription : datadog . PtrString ( "my_description" ),
BilledCost : datadog . PtrFloat64 ( 250 ),
BillingCurrency : datadog . PtrString ( "USD" ),
Tags : map [ string ] string {
"key" : "value" ,
},
},
}
ctx := datadog . NewDefaultContext ( context . Background ())
configuration := datadog . NewConfiguration ()
apiClient := datadog . NewAPIClient ( configuration )
api := datadogV2 . NewCloudCostManagementApi ( apiClient )
resp , r , err := api . UploadCustomCostsFile ( ctx , body )
if err != nil {
fmt . Fprintf ( os . Stderr , "Error when calling `CloudCostManagementApi.UploadCustomCostsFile`: %v\n" , err )
fmt . Fprintf ( os . Stderr , "Full HTTP response: %v\n" , r )
}
responseContent , _ := json . MarshalIndent ( resp , "" , " " )
fmt . Fprintf ( os . Stdout , "Response from `CloudCostManagementApi.UploadCustomCostsFile`:\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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" go run "main.go"
// Upload Custom Costs File returns "Accepted" 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.CustomCostsFileLineItem ;
import com.datadog.api.client.v2.model.CustomCostsFileUploadResponse ;
import java.util.Collections ;
import java.util.List ;
import java.util.Map ;
public class Example {
public static void main ( String [] args ) {
ApiClient defaultClient = ApiClient . getDefaultApiClient ();
CloudCostManagementApi apiInstance = new CloudCostManagementApi ( defaultClient );
List < CustomCostsFileLineItem > body =
Collections . singletonList (
new CustomCostsFileLineItem ()
. providerName ( "my_provider" )
. chargePeriodStart ( "2023-05-06" )
. chargePeriodEnd ( "2023-06-06" )
. chargeDescription ( "my_description" )
. billedCost ( 250 . 0 )
. billingCurrency ( "USD" )
. tags ( Map . ofEntries ( Map . entry ( "key" , "value" ))));
try {
CustomCostsFileUploadResponse result = apiInstance . uploadCustomCostsFile ( body );
System . out . println ( result );
} catch ( ApiException e ) {
System . err . println ( "Exception when calling CloudCostManagementApi#uploadCustomCostsFile" );
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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" java "Example.java"
"""
Upload Custom Costs File returns "Accepted" 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.custom_costs_file_line_item import CustomCostsFileLineItem
body = [
CustomCostsFileLineItem (
provider_name = "my_provider" ,
charge_period_start = "2023-05-06" ,
charge_period_end = "2023-06-06" ,
charge_description = "my_description" ,
billed_cost = 250.0 ,
billing_currency = "USD" ,
tags = dict (
key = "value" ,
),
),
]
configuration = Configuration ()
with ApiClient ( configuration ) as api_client :
api_instance = CloudCostManagementApi ( api_client )
response = api_instance . upload_custom_costs_file ( body = body )
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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" python3 "example.py"
# Upload Custom Costs File returns "Accepted" response
require "datadog_api_client"
api_instance = DatadogAPIClient :: V2 :: CloudCostManagementAPI . new
body = [
DatadogAPIClient :: V2 :: CustomCostsFileLineItem . new ({
provider_name : "my_provider" ,
charge_period_start : "2023-05-06" ,
charge_period_end : "2023-06-06" ,
charge_description : "my_description" ,
billed_cost : 250 ,
billing_currency : "USD" ,
tags : {
key : "value" ,
},
}),
]
p api_instance . upload_custom_costs_file ( body )
Instructions First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE = "datadoghq.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" rb "example.rb"
// Upload Custom Costs File returns "Accepted" response
use datadog_api_client ::datadog ;
use datadog_api_client ::datadogV2 ::api_cloud_cost_management ::CloudCostManagementAPI ;
use datadog_api_client ::datadogV2 ::model ::CustomCostsFileLineItem ;
use std ::collections ::BTreeMap ;
#[tokio::main]
async fn main () {
let body = vec! [ CustomCostsFileLineItem ::new ()
. billed_cost ( 250.0 as f64 )
. billing_currency ( "USD" . to_string ())
. charge_description ( "my_description" . to_string ())
. charge_period_end ( "2023-06-06" . to_string ())
. charge_period_start ( "2023-05-06" . to_string ())
. provider_name ( "my_provider" . to_string ())
. tags ( BTreeMap ::from ([( "key" . to_string (), "value" . to_string ())]))];
let configuration = datadog ::Configuration ::new ();
let api = CloudCostManagementAPI ::with_config ( configuration );
let resp = api . upload_custom_costs_file ( body ). 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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" cargo run
/**
* Upload Custom Costs File returns "Accepted" response
*/
import { client , v2 } from "@datadog/datadog-api-client" ;
const configuration = client . createConfiguration ();
const apiInstance = new v2 . CloudCostManagementApi ( configuration );
const params : v2.CloudCostManagementApiUploadCustomCostsFileRequest = {
body : [
{
providerName : "my_provider" ,
chargePeriodStart : "2023-05-06" ,
chargePeriodEnd : "2023-06-06" ,
chargeDescription : "my_description" ,
billedCost : 250 ,
billingCurrency : "USD" ,
tags : {
key : "value" ,
},
},
],
};
apiInstance
. uploadCustomCostsFile ( params )
. then (( data : v2.CustomCostsFileUploadResponse ) => {
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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" tsc "example.ts"