---
title: "Register a custom disk provider"
method: POST
path: "/marketplace/providers/disks"
---

# Register a custom disk provider

`POST /marketplace/providers/disks`

Register your own storage rates, priced per GB hour with optional IOPS and throughput components and the capacity band they apply to.
An entry is upserted on its natural key (provider, service, region, availability zone, disk type, usage type and period billing hours), so re-posting with a new cost keeps its id; changing a key field mints a new one.
Capacity, IOPS and throughput bands are not part of that key, so a second band for the same disk type replaces the first: give each band its own usage type.
The returned id is what you attach with the `costgraph.ai/pricing-id.storage` label or tag.

## Request body

- TypesCustomDiskPriceRequest
  - `entries` SchemaDiskPricingsRow[], 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
    - `id` string
    - `max_capacity_gb` number
    - `max_iops` number
    - `max_throughput_mbps` number
    - `min_capacity_gb` number
    - `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 `200`

Pricing response for a custom disk provider

- TypesCustomDiskPricingResponse
  - `entries` SchemaDiskPricingsRow[]
    - `availability_zone` string
    - `cost_per_gb_hour` number
    - `cost_per_iops_hour` number
    - `cost_per_throughput_mbps_hour` number
    - `created_at` string
    - `currency` string
    - `id` string
    - `max_capacity_gb` number
    - `max_iops` number
    - `max_throughput_mbps` number
    - `min_capacity_gb` number
    - `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
  - `status` 'Registered' | 'Deleted'

## Other responses

- `400` — Invalid request body
- `401` — Provider and organization do not match
- `500` — Internal server error

---

[API](https://skmtc.net/baselinehq/apis/costgraph-pricing-api.md) · [All operations](https://skmtc.net/baselinehq/apis/costgraph-pricing-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/baselinehq/costgraph-pricing-api/revisions/118039137757/schema)
