---
title: "Get recommendations for disks"
method: POST
path: "/recommendations/disks"
---

# Get recommendations for disks

`POST /recommendations/disks`

Get the cheapest disk candidate per provider with savings versus the requested disk

## Request body

- TypesDiskRequest
  - `include_metadata` boolean
  - `instance` TypesDisk
    - `availability_zone` string
    - `capacity_gb` number
    - `fallback_to_base_pricing` boolean
    - `id` string
    - `iops` number
    - `provider` 'GCP' | 'AWS' | 'DigitalOcean' | 'Azure' | 'Hetzner' | 'OVHCloud' | 'PlanetScale' | 'STACKIT' | 'Akamai' | 'Base'
    - `region` string
    - `service` 'ComputeEngine' | 'AmazonEC2' | 'Droplet' | 'AzureCompute' | 'AzureManagedDisks' | 'HetznerCompute' | 'OVHPublicCloud' | 'BaseCompute' | 'BaseDisks' | 'AmazonEBS' | 'AmazonRDS' | 'AuroraDSQL' | 'CloudSQL' | 'AlloyDB' | 'CloudSpanner' | 'AzureDatabaseForPostgreSQL' | 'AzureDatabaseForMySQL' | 'AzureSQLDatabase' | 'AzureSQLManagedInstance' | 'PlanetScale' | 'ComputeEnginePersistentDisk' | 'STACKITCompute' | 'STACKITBlockStorage' | 'STACKITDatabase' | 'AkamaiLinode' | 'AkamaiBlockStorage' | 'AkamaiDatabase'
    - `throughput_mbps` number
    - `type` string
    - `usage_type` 'SPOT_PREEMPTIBLE' | 'ONDEMAND' | 'RESERVED' | 'ONDEMAND_CUSTOM' | 'SPOT_PREEMPTIBLE_CUSTOM' | 'RESERVED_CUSTOM' | 'SOLE_TENANCY' | 'CUSTOM' | 'EXTENDED'
  - `predicates` TypesPredicates
    - `availability_zones` string[]
    - `disk_types` string[]
    - `instance_types` string[]
    - `operating_systems` string[]
    - `providers` string[]
    - `regions` string[]
    - `services` string[]
    - `usage_types` string[]
  - `usage` TypesDisk
    - `availability_zone` string
    - `capacity_gb` number
    - `fallback_to_base_pricing` boolean
    - `id` string
    - `iops` number
    - `provider` 'GCP' | 'AWS' | 'DigitalOcean' | 'Azure' | 'Hetzner' | 'OVHCloud' | 'PlanetScale' | 'STACKIT' | 'Akamai' | 'Base'
    - `region` string
    - `service` 'ComputeEngine' | 'AmazonEC2' | 'Droplet' | 'AzureCompute' | 'AzureManagedDisks' | 'HetznerCompute' | 'OVHPublicCloud' | 'BaseCompute' | 'BaseDisks' | 'AmazonEBS' | 'AmazonRDS' | 'AuroraDSQL' | 'CloudSQL' | 'AlloyDB' | 'CloudSpanner' | 'AzureDatabaseForPostgreSQL' | 'AzureDatabaseForMySQL' | 'AzureSQLDatabase' | 'AzureSQLManagedInstance' | 'PlanetScale' | 'ComputeEnginePersistentDisk' | 'STACKITCompute' | 'STACKITBlockStorage' | 'STACKITDatabase' | 'AkamaiLinode' | 'AkamaiBlockStorage' | 'AkamaiDatabase'
    - `throughput_mbps` number
    - `type` string
    - `usage_type` 'SPOT_PREEMPTIBLE' | 'ONDEMAND' | 'RESERVED' | 'ONDEMAND_CUSTOM' | 'SPOT_PREEMPTIBLE_CUSTOM' | 'RESERVED_CUSTOM' | 'SOLE_TENANCY' | 'CUSTOM' | 'EXTENDED'

## Response `200`

OK

- RecommendationsDiskRecommendationResult[]
  - `pricing` 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
  - `savings` TypesSavings
    - `amount_per_hour` number
    - `amount_per_month` number
    - `amount_per_year` number
    - `percentage` number

## Other responses

- `400` — Invalid request body
- `401` — Unauthorized
- `404` — Not found
- `500` — Internal server error

## Changes

- **2026-08-25** `86266deb5e8c` — 8 info
  - added the new `Akamai` enum value to the request property `instance/provider`
  - added the new `Akamai` enum value to the request property `usage/provider`
  - added the new `AkamaiBlockStorage` enum value to the request property `instance/service`
  - added the new `AkamaiBlockStorage` enum value to the request property `usage/service`
  - …4 more
- **2026-08-13** `f07bdc0e3d36` — 34 info
  - added the new `AlloyDB` enum value to the request property `instance/service`
  - added the new `AlloyDB` enum value to the request property `usage/service`
  - added the new `AmazonRDS` enum value to the request property `instance/service`
  - added the new `AmazonRDS` enum value to the request property `usage/service`
  - …30 more
- **2026-06-11** `3fda572e9a25` — 1 breaking
  - the response's body type/format changed from `object`/`` to `array`/`` for status `200`
- **2026-05-24** `2806a49483a0` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/baselinehq/apis/costgraph-pricing-api/changes/recommendations/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-service-production.skmtc.workers.dev/v1/apis/baselinehq/costgraph-pricing-api/revisions/86266deb5e8c/schema)
