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

# Publish compute prices

`POST /v1/marketplace/compute`

Register your own compute rates so CostGraph can price machines it has no public price for, such as bare metal or a private cloud.
An entry is upserted on its natural key (provider, service, region, availability zone, usage type, instance type, operating system and period billing hours), so re-posting the same entry with a new cost keeps its id and reprices everything already using it. Changing any key field mints a new id, because it describes a different SKU.
The returned id is what you attach to a resource with the `costgraph.ai/pricing-id.compute` label or tag.

## Request body

- ComputePricesRequest
  - `entries` ComputePrice[], required
    - `architecture` string
    - `availability_zone` string
    - `cost_per_hour` number — On-demand-equivalent hourly USD; multiply by provider_pricing_rules.month_hours for monthly.
    - `cpu_cores` number
    - `cpu_cores_cost_per_hour` number
    - `created_at` string
    - `currency` string — Currency the provider published this price in. Cost columns are always normalized USD.
    - `gpu_cost_per_hour` number
    - `gpu_count` number
    - `gpu_type` string
    - `id` string
    - `instance_type` string
    - `native_cost_per_hour` number — cost_per_hour as published, before FX normalization. Zero when currency is USD.
    - `operating_system` string
    - `period_billing_hours` number — Commitment term the raw price covers: 1=hourly on-demand; 8640/25920/43200=1mo/3mo/1yr buckets. cost_per_hour is already normalized to hourly.
    - `provider` string
    - `ram_gb` number
    - `ram_gb_cost_per_hour` number
    - `raw_pricing_data` object
    - `region` string
    - `service` string
    - `tags` object
    - `updated_at` string
    - `usage_type` string — Pricing tier token (ONDEMAND, RESERVED, SPOT_*, *_HBP, *_BYOL, Commit1Yr/3Yr). Filter to ONDEMAND for normal pricing.

## Response `201`

The published prices

- PublishedComputePrices
  - `data` ComputePrice[]
    - `architecture` string
    - `availability_zone` string
    - `cost_per_hour` number — On-demand-equivalent hourly USD; multiply by provider_pricing_rules.month_hours for monthly.
    - `cpu_cores` number
    - `cpu_cores_cost_per_hour` number
    - `created_at` string
    - `currency` string — Currency the provider published this price in. Cost columns are always normalized USD.
    - `gpu_cost_per_hour` number
    - `gpu_count` number
    - `gpu_type` string
    - `id` string
    - `instance_type` string
    - `native_cost_per_hour` number — cost_per_hour as published, before FX normalization. Zero when currency is USD.
    - `operating_system` string
    - `period_billing_hours` number — Commitment term the raw price covers: 1=hourly on-demand; 8640/25920/43200=1mo/3mo/1yr buckets. cost_per_hour is already normalized to hourly.
    - `provider` string
    - `ram_gb` number
    - `ram_gb_cost_per_hour` number
    - `raw_pricing_data` object
    - `region` string
    - `service` string
    - `tags` object
    - `updated_at` string
    - `usage_type` string — Pricing tier token (ONDEMAND, RESERVED, SPOT_*, *_HBP, *_BYOL, Commit1Yr/3Yr). Filter to ONDEMAND for normal pricing.

## 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/compute/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)
