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/product-catalog/skushttps://api.ap2.datadoghq.com/api/v2/product-catalog/skushttps://api.datadoghq.eu/api/v2/product-catalog/skushttps://api.ddog-gov.com/api/v2/product-catalog/skushttps://api.us2.ddog-gov.com/api/v2/product-catalog/skushttps://api.uk1.datadoghq.com/api/v2/product-catalog/skushttps://api.datadoghq.com/api/v2/product-catalog/skushttps://api.us3.datadoghq.com/api/v2/product-catalog/skushttps://api.us5.datadoghq.com/api/v2/product-catalog/skus

Overview

Get every generally available Datadog SKU, with the pricing and allotment metadata that applies to it, for the Datadog site serving the request. A SKU is generally available when it is billed through a metered commitment or through automatic billing; SKUs in any other phase are not returned.

Prices, allotments, and pricing tiers are returned as they were in effect on as_of_date, which defaults to the date of the request. Prices are public list prices: they do not reflect discounts, commitments, or negotiated rates on an account.

Each SKU is a separate resource in data, identified by its SKU code, and sorted by that code in ascending order. The whole catalog is returned in a single response, so this endpoint is not paginated.

This endpoint requires any of the following permissions:
  • billing_read
  • usage_read

  • OAuth apps require the usage_read authorization scope to access this endpoint.

    Arguments

    Query Strings

    Name

    Type

    Description

    version [required]

    enum

    The version of the product catalog response contract to return. v1 is the latest. This is independent of the /api/v2 path segment, which is the version of the Datadog API itself.
    Allowed enum values: v1

    as_of_date

    string

    The date the returned prices, allotments, and pricing tiers are effective as of, in YYYY-MM-DD format. Defaults to the date of the request, and must not be later than it. Set it to a date in a past billing period to reconcile that period against the prices that were in effect then, rather than today.

    Response

    OK

    Response containing the generally available SKUs and their pricing metadata.

    Expand All

    Field

    Type

    Description

    data [required]

    [object]

    The generally available SKUs, sorted by SKU code in ascending order.

    attributes [required]

    object

    The pricing and allotment metadata of a SKU.

    allotments [required]

    [object]

    The allotments the SKU provides to other SKUs. Every entry carries the code of this SKU as its parent_sku_code. Empty when the SKU provides no allotments.

    child_sku_code [required]

    string

    The code of the SKU that receives the allotment.

    hourly_quantity [required]

    double

    The quantity allotted per hour. Fractional for some allotments, and equal to monthly_quantity for others, depending on how the child SKU meters usage.

    monthly_quantity [required]

    int64

    The quantity allotted per month.

    parent_sku_code [required]

    string

    The code of the SKU that provides the allotment. Always the code of the SKU the allotment is returned under.

    billing_dimension [required]

    string

    The identifier of the billing dimension the SKU is billed on, as used by the usage metering endpoints. Several SKUs can share one billing dimension, so this value does not identify a SKU.

    billing_units [required]

    string

    The billable usage unit the SKU is priced per. null for SKUs that are not priced per unit of usage, such as those whose pricing_type is percent.

    currency [required]

    string

    The ISO-4217 code of the currency the prices are expressed in.

    default_on_demand_option [required]

    enum

    The billing frequency applied to on-demand usage of the SKU by default. Allowed enum values: hourly,monthly

    number_of_units_included_in_price [required]

    int64

    The number of billable usage units that one unit of price covers. Divide measured usage by this value before multiplying by the price. For example, a SKU priced at 18.00 with number_of_units_included_in_price of 1 costs 18.00 per host, while a SKU priced at 12.00 with number_of_units_included_in_price of 10000 costs 12.00 per 10,000 requests. It is a scaling factor on the price, not a free allotment; included quantities are in allotments. The same factor applies to the price of a tier in on_demand_tiered whose pricing_unit_type is unit. It does not apply to a tier whose pricing_unit_type is block: that tier's price is charged for the whole block bounded by min_usage_quantity and max_usage_quantity, however much of the block is used. 0 for SKUs that are not priced per unit of usage, such as those whose pricing_type is percent.

    on_demand_list_price [required]

    string

    The public list price of on-demand usage of the SKU, as a decimal string. The number of decimal places is not normalized, so values such as 0, 0.9, and 30000.00 all occur. null when the SKU is priced with tiers, in which case the prices are in on_demand_tiered.

    on_demand_tiered [required]

    object

    The tiered pricing applied to on-demand usage of the SKU. null when the SKU is priced with a single list price instead.

    tiers [required]

    [object]

    The pricing tiers, ordered by ascending usage quantity.

    max_usage_quantity [required]

    int64

    The exclusive upper bound of the usage range the tier prices. null on the final tier, which is unbounded.

    min_usage_quantity [required]

    int64

    The inclusive lower bound of the usage range the tier prices.

    price [required]

    string

    The price applied to usage in the tier, as a decimal string. The number of decimal places is not normalized, so free tiers appear as either 0 or 0.00.

    pricing_unit_type [required]

    enum

    Whether the tier's price applies per unit of usage or to a block of usage. Allowed enum values: block,unit

    pricing_type [required]

    enum

    How the SKU is priced. usage prices each billable usage unit, and percent prices a percentage; percent-priced SKUs have no billing_units. Allowed enum values: usage,percent

    sku_name [required]

    string

    The human-readable name of the SKU.

    id [required]

    string

    The code that identifies the SKU.

    type [required]

    enum

    The SKU resource type. Allowed enum values: Sku

    {
      "data": [
        {
          "attributes": {
            "allotments": [
              {
                "child_sku_code": "CUSTOM-EVENTS",
                "hourly_quantity": 0.684932,
                "monthly_quantity": 500,
                "parent_sku_code": "HOSTS-PRO"
              }
            ],
            "billing_dimension": "infra_host",
            "billing_units": "hosts",
            "currency": "USD",
            "default_on_demand_option": "monthly",
            "number_of_units_included_in_price": 1,
            "on_demand_list_price": "18.00",
            "on_demand_tiered": {
              "tiers": [
                {
                  "max_usage_quantity": 100000,
                  "min_usage_quantity": 1,
                  "price": "120.00",
                  "pricing_unit_type": "unit"
                }
              ]
            },
            "pricing_type": "usage",
            "sku_name": "Infra Host (Pro)"
          },
          "id": "HOSTS-PRO",
          "type": "Sku"
        }
      ]
    }

    Bad Request - version is missing or invalid, or as_of_date is malformed or in the future

    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"
        }
      ]
    }

    Forbidden - the caller has neither the billing_read nor the usage_read permission

    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"
        }
      ]
    }

    Not Found - the requested catalog version is not supported

    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 version="v1"
    # 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.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/product-catalog/skus?version=${version}" \ -H "Accept: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}"
    # List SKUs returns "OK" response
    
    require "datadog_api_client"
    DatadogAPIClient.configure do |config|
      config.unstable_operations["v2.list_product_catalog_sk_us".to_sym] = true
    end
    api_instance = DatadogAPIClient::V2::ProductCatalogAPI.new
    p api_instance.list_product_catalog_sk_us(ProductCatalogSKUsAPIVersion::V1)
    

    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_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"