---
title: "List SKUs"
method: GET
path: "/api/v2/product-catalog/skus"
tags: ["Product Catalog"]
---

# List SKUs

`GET /api/v2/product-catalog/skus`

## Request

- Base URL: `https://api.datadoghq.com`
- URL: `https://api.datadoghq.com/api/v2/product-catalog/skus`
- Auth: one of:
  - API key in header `DD-API-KEY` and API key in header `DD-APPLICATION-KEY`
  - OAuth 2
    - Authorization code: `/oauth2/v1/authorize`
    - Token URL: `/oauth2/v1/token` scopes: `billing_read`
  - OAuth 2
    - Authorization code: `/oauth2/v1/authorize`
    - Token URL: `/oauth2/v1/token` scopes: `usage_read`
- TypeScript: <https://skmtc.dev/datadog/apis/datadog-api-v2-collection/docs/api/v2/product-catalog/skus/get.ts> (a function with typed inputs; its response is checked against the schema)

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.

## Query parameters

- `version` 'v1', required: The version of the product catalog contract to return.
- `as_of_date` string, date

## Response `200`

OK

- ProductCatalogSKUsResponse: Response containing the generally available SKUs and their pricing metadata.
  - `data` ProductCatalogSKUDataResponse[], required: The generally available SKUs, sorted by SKU code in ascending order.
    - `attributes` ProductCatalogSKUDataAttributesResponse, required: The pricing and allotment metadata of a SKU.
      - `allotments` ProductCatalogSKUAllotment[], required: 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` string, required: The code of the SKU that receives the allotment.
        - `hourly_quantity` number, double, required: 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` integer, required: The quantity allotted per month.
        - `parent_sku_code` string, required: The code of the SKU that provides the allotment. Always the code of the SKU the allotment is returned under.
      - `billing_dimension` string, required: 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` string, nullable, required: 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` string, required: The ISO-4217 code of the currency the prices are expressed in.
      - `default_on_demand_option` 'hourly' | 'monthly', required: The billing frequency applied to on-demand usage of the SKU by default.
      - `number_of_units_included_in_price` integer, required: 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` string, nullable, required: 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` ProductCatalogSKUTieredPricing, nullable, required: The tiered pricing applied to on-demand usage of the SKU. `null` when the SKU is priced with a single list price instead.
        - `tiers` ProductCatalogSKUPricingTier[], required: The pricing tiers, ordered by ascending usage quantity.
          - `max_usage_quantity` integer, nullable, required: The exclusive upper bound of the usage range the tier prices. `null` on the final tier, which is unbounded.
          - `min_usage_quantity` integer, required: The inclusive lower bound of the usage range the tier prices.
          - `price` string, required: 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` 'block' | 'unit', required: Whether the tier's price applies per unit of usage or to a block of usage.
      - `pricing_type` 'usage' | 'percent', required: How the SKU is priced. `usage` prices each billable usage unit, and `percent` prices a percentage; percent-priced SKUs have no `billing_units`.
      - `sku_name` string, required: The human-readable name of the SKU.
    - `id` string, required: The code that identifies the SKU.
    - `type` 'Sku', required: The SKU resource type.

## Other responses

- `400`: Bad Request - version is missing or invalid, or as_of_date is malformed or in the future
- `403`: Forbidden - the caller has neither the billing_read nor the usage_read permission
- `404`: Not Found - the requested catalog version is not supported
- `429`: Too many requests

---

[API](https://skmtc.dev/datadog/apis/datadog-api-v2-collection.md) - [All operations](https://skmtc.dev/datadog/apis/datadog-api-v2-collection/llms.txt) - [OpenAPI document](https://skmtc.dev/datadog/apis/datadog-api-v2-collection/revisions/3f70db624329?raw)
