> ## Documentation Index
> Fetch the complete documentation index at: https://docs.costgraph.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish disk prices

> 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.



## OpenAPI

````yaml https://raw.githubusercontent.com/baselinehq/mintlify-docs/main/api-reference/openapi.json post /v1/marketplace/disks
openapi: 3.0.1
info:
  title: CostGraph Pricing API
  description: Provides API level access to the Costgraph Services.
  termsOfService: https://costgraph.ai/terms-of-use
  contact:
    name: Customer Support
    url: https://costgraph.ai/support
    email: support@costgraph.ai
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: '1.0'
servers:
  - url: https://pricing.baselinehq.cloud/
security: []
paths:
  /v1/marketplace/disks:
    post:
      tags:
        - marketplace
      summary: Publish disk prices
      description: >-
        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.
      requestBody:
        description: Prices to publish
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiskPricesRequest'
        required: true
      responses:
        '201':
          description: The published prices
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishedDiskPrices'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
components:
  schemas:
    DiskPricesRequest:
      required:
        - entries
      type: object
      properties:
        entries:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/DiskPrice'
    PublishedDiskPrices:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DiskPrice'
    Problem:
      type: object
      properties:
        code:
          type: string
        detail:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
        instance:
          type: string
        status:
          type: integer
        title:
          type: string
        type:
          type: string
    DiskPrice:
      type: object
      properties:
        availability_zone:
          type: string
        cost_per_gb_hour:
          type: number
        cost_per_iops_hour:
          type: number
        cost_per_throughput_mbps_hour:
          type: number
        created_at:
          type: string
        currency:
          type: string
        id:
          type: string
        max_capacity_gb:
          type: number
        max_iops:
          type: number
        max_throughput_mbps:
          type: number
        min_capacity_gb:
          type: number
        min_iops:
          type: number
        min_throughput_mbps:
          type: number
        native_cost_per_gb_hour:
          type: number
        native_cost_per_iops_hour:
          type: number
        native_cost_per_throughput_mbps_hour:
          type: number
        period_billing_hours:
          type: number
        provider:
          type: string
        raw_pricing_data:
          type: object
          properties: {}
        region:
          type: string
        service:
          type: string
        tags:
          type: object
          properties: {}
        type:
          type: string
        updated_at:
          type: string
        usage_type:
          type: string
    FieldError:
      type: object
      properties:
        detail:
          type: string
        pointer:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: API key with "bl_" prefix (e.g. "bl_<api_key>")
      name: X-API-Key
      in: header
    BearerAuth:
      type: apiKey
      description: Bearer token for authentication (e.g. "Bearer <token>")
      name: Authorization
      in: header

````