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

# Register a custom disk provider

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



## OpenAPI

````yaml https://raw.githubusercontent.com/baselinehq/mintlify-docs/main/api-reference/openapi.json post /marketplace/providers/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:
  /marketplace/providers/disks:
    post:
      summary: Register a custom disk provider
      description: >-
        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.
      requestBody:
        description: Custom disk pricing request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/types.CustomDiskPriceRequest'
        required: true
      responses:
        '200':
          description: Pricing response for a custom disk provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/types.CustomDiskPricingResponse'
        '400':
          description: Invalid request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
        '401':
          description: Provider and organization do not match
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
components:
  schemas:
    types.CustomDiskPriceRequest:
      required:
        - entries
      type: object
      properties:
        entries:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/schema.DiskPricingsRow'
    types.CustomDiskPricingResponse:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/schema.DiskPricingsRow'
        status:
          $ref: >-
            #/components/schemas/github_com_baselinehq_pricingapi_pkg_types.Status
    handler.ErrorResponse:
      type: object
      properties:
        error:
          type: string
    schema.DiskPricingsRow:
      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
    github_com_baselinehq_pricingapi_pkg_types.Status:
      type: string
      enum:
        - Registered
        - Deleted
      x-enum-varnames:
        - Registered
        - Deleted
  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

````