---
title: "Publish disk prices"
method: POST
path: "/v1/marketplace/disks"
tags: ["marketplace"]
---

# Publish disk prices

`POST /v1/marketplace/disks`

Register your own block storage rates so CostGraph can price volumes it has no public price for.
An entry is upserted on its natural key (provider, service, region, availability zone, usage type, type and period billing hours), so re-posting the same entry with a new cost keeps its id and reprices everything already using it.
The returned id is what you attach to a volume with the `costgraph.ai/pricing-id.disk` label or tag.

## Request body

- DiskPricesRequest
  - `entries` DiskPrice[], required
    - `availability_zone` string
    - `cost_per_gb_hour` number
    - `cost_per_iops_hour` number
    - `cost_per_throughput_mbps_hour` number
    - `created_at` string
    - `currency` string — Currency the provider published this price in. Cost columns are always normalized USD.
    - `id` string
    - `max_capacity_gb` number — Provisioning upper bound the disk type supports at this price (validation range), not an actual disk size.
    - `max_iops` number
    - `max_throughput_mbps` number
    - `min_capacity_gb` number — Provisioning lower bound the disk type supports at this price (validation range), not an actual disk size.
    - `min_iops` number
    - `min_throughput_mbps` number
    - `native_cost_per_gb_hour` number
    - `native_cost_per_iops_hour` number
    - `native_cost_per_throughput_mbps_hour` number
    - `period_billing_hours` number
    - `provider` string
    - `raw_pricing_data` object
    - `region` string
    - `service` string
    - `tags` object
    - `type` string
    - `updated_at` string
    - `usage_type` string

## Response `201`

The published prices

- PublishedDiskPrices
  - `data` DiskPrice[]
    - `availability_zone` string
    - `cost_per_gb_hour` number
    - `cost_per_iops_hour` number
    - `cost_per_throughput_mbps_hour` number
    - `created_at` string
    - `currency` string — Currency the provider published this price in. Cost columns are always normalized USD.
    - `id` string
    - `max_capacity_gb` number — Provisioning upper bound the disk type supports at this price (validation range), not an actual disk size.
    - `max_iops` number
    - `max_throughput_mbps` number
    - `min_capacity_gb` number — Provisioning lower bound the disk type supports at this price (validation range), not an actual disk size.
    - `min_iops` number
    - `min_throughput_mbps` number
    - `native_cost_per_gb_hour` number
    - `native_cost_per_iops_hour` number
    - `native_cost_per_throughput_mbps_hour` number
    - `period_billing_hours` number
    - `provider` string
    - `raw_pricing_data` object
    - `region` string
    - `service` string
    - `tags` object
    - `type` string
    - `updated_at` string
    - `usage_type` string

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Entity
- `500` — Internal Server Error

## Changes

- **2026-09-03** `2b7d1ae74be1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/baselinehq/apis/costgraph-pricing-api/changes/v1/marketplace/disks/post.md)

---

[API](https://skmtc.dev/baselinehq/apis/costgraph-pricing-api.md) · [All operations](https://skmtc.dev/baselinehq/apis/costgraph-pricing-api/llms.txt) · [OpenAPI document](https://skmtc.dev/baselinehq/apis/costgraph-pricing-api/revisions/8cb58cf63915?raw)
