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

# Register a custom provider

`POST /marketplace/providers/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. Treat it as a secret you hand out deliberately: anyone holding it can pin to the rate, which is how a provider prices clusters it sells on.

## Request body

- TypesCustomPriceRequest
  - `entries` SchemaComputePricingsRow[], required
    - `architecture` string
    - `availability_zone` string
    - `cost_per_hour` number
    - `cpu_cores` number
    - `cpu_cores_cost_per_hour` number
    - `created_at` string
    - `currency` string
    - `gpu_cost_per_hour` number
    - `gpu_count` number
    - `gpu_type` string
    - `id` string
    - `instance_type` string
    - `native_cost_per_hour` number
    - `operating_system` string
    - `period_billing_hours` number
    - `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

## Response `200`

Pricing response for a custom provider

- TypesCustomPricingResponse
  - `entries` SchemaComputePricingsRow[]
    - `architecture` string
    - `availability_zone` string
    - `cost_per_hour` number
    - `cpu_cores` number
    - `cpu_cores_cost_per_hour` number
    - `created_at` string
    - `currency` string
    - `gpu_cost_per_hour` number
    - `gpu_count` number
    - `gpu_type` string
    - `id` string
    - `instance_type` string
    - `native_cost_per_hour` number
    - `operating_system` string
    - `period_billing_hours` number
    - `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
  - `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/f07bdc0e3d36/schema)
