Skip to content
Docs

Estimate Volume Update Cost

PATCH/v1/compute/volumes/{volume_id}/cost

Return a priced cost quote for the proposed Volume update plus a diff against the current state.

Path ParametersExpand Collapse
volume_id: string
Body ParametersJSONExpand Collapse
name: optional string

Name of the Volume.

size: optional number

Size of the Volume in GB.

tags: optional array of string

Tags to attach to the Volume.

ReturnsExpand Collapse
CostQuoteUpdate object { after, before, currency, 4 more }

Cost quote returned by PATCH /:id/cost: current-state quote, post-update quote, and signed diff. current_summary and updated_summary omitted when the caller cannot view billing.

after: object { monthly_total, usage_dimensions }

Quote for the proposed (post-update) resource state.

monthly_total: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
usage_dimensions: array of object { dimension, dimension_display_name, monthly_amount, 2 more }

Priced rows, one per usage dimension emitted by the resource.

dimension: string

Usage dimension being priced (e.g. compute_vcpu, storage_abs_gb).

dimension_display_name: string

User-facing label for the dimension (e.g. “vCPU (hours)”).

monthly_amount: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
quantity: number

Quantity of the dimension being priced.

unit_price: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
before: object { monthly_total, usage_dimensions }

Quote for the proposed (post-update) resource state.

monthly_total: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
usage_dimensions: array of object { dimension, dimension_display_name, monthly_amount, 2 more }

Priced rows, one per usage dimension emitted by the resource.

dimension: string

Usage dimension being priced (e.g. compute_vcpu, storage_abs_gb).

dimension_display_name: string

User-facing label for the dimension (e.g. “vCPU (hours)”).

monthly_amount: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
quantity: number

Quantity of the dimension being priced.

unit_price: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
currency: string

Currency the quote is denominated in. Always “USD” in v1.

diff: object { monthly_total_delta, usage_dimensions }

Per-dimension and total deltas: after minus before.

monthly_total_delta: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
usage_dimensions: array of object { after, before, dimension, 2 more }

Per-dimension diff entries. Includes every dimension touched by the update.

after: object { monthly_amount, quantity, unit_price }

Priced row after the update. Always present.

monthly_amount: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
quantity: number
unit_price: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
before: object { monthly_amount, quantity, unit_price }

Priced row after the update. Always present.

monthly_amount: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
quantity: number
unit_price: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
dimension: string

Usage dimension being priced (e.g. compute_vcpu, storage_abs_gb).

dimension_display_name: string

User-facing label for the dimension (e.g. “vCPU (hours)”).

monthly_amount_delta: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
priced_at: string

Timestamp the quote was priced at.

formatdate-time
current_summary: optional OrganizationBillingSummary { daily_cost, effective_balance, monthly_cost, 3 more }

Forward-looking billing summary for an organization. All costs are run-rate projections from the organization’s current active usage (”≈ $X/mo at current usage”).

daily_cost: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
effective_balance: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
monthly_cost: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
recharge_threshold_fraction: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
estimated_next_charge_at: optional string

Projected date the balance reaches the recharge threshold at the current run-rate. Null when there is no active usage (never charges).

formatdate-time
runway_months: optional string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
updated_summary: optional OrganizationBillingSummary { daily_cost, effective_balance, monthly_cost, 3 more }

Forward-looking billing summary for an organization. All costs are run-rate projections from the organization’s current active usage (”≈ $X/mo at current usage”).

daily_cost: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
effective_balance: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
monthly_cost: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
recharge_threshold_fraction: string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal
estimated_next_charge_at: optional string

Projected date the balance reaches the recharge threshold at the current run-rate. Null when there is no active usage (never charges).

formatdate-time
runway_months: optional string

Arbitrary-precision decimal serialized as a string (e.g. “58.40”).

formatdecimal

Estimate Volume Update Cost

curl https://api.nirvanalabs.io/v1/compute/volumes/$VOLUME_ID/cost \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \
    -d '{
          "name": "my-data-volume",
          "size": 100,
          "tags": [
            "production",
            "ethereum"
          ]
        }'
{
  "after": {
    "monthly_total": "-69125",
    "usage_dimensions": [
      {
        "dimension": "compute_vcpu",
        "dimension_display_name": "vCPU (hours)",
        "monthly_amount": "-69125",
        "quantity": 4,
        "unit_price": "-69125"
      }
    ]
  },
  "before": {
    "monthly_total": "-69125",
    "usage_dimensions": [
      {
        "dimension": "compute_vcpu",
        "dimension_display_name": "vCPU (hours)",
        "monthly_amount": "-69125",
        "quantity": 4,
        "unit_price": "-69125"
      }
    ]
  },
  "currency": "USD",
  "diff": {
    "monthly_total_delta": "-69125",
    "usage_dimensions": [
      {
        "after": {
          "monthly_amount": "-69125",
          "quantity": 4,
          "unit_price": "-69125"
        },
        "before": {
          "monthly_amount": "-69125",
          "quantity": 4,
          "unit_price": "-69125"
        },
        "dimension": "compute_vcpu",
        "dimension_display_name": "vCPU (hours)",
        "monthly_amount_delta": "-69125"
      }
    ]
  },
  "priced_at": "2025-01-01T00:00:00Z",
  "current_summary": {
    "daily_cost": "-69125",
    "effective_balance": "-69125",
    "monthly_cost": "-69125",
    "recharge_threshold_fraction": "-69125",
    "estimated_next_charge_at": "2025-01-01T00:00:00Z",
    "runway_months": "-69125"
  },
  "updated_summary": {
    "daily_cost": "-69125",
    "effective_balance": "-69125",
    "monthly_cost": "-69125",
    "recharge_threshold_fraction": "-69125",
    "estimated_next_charge_at": "2025-01-01T00:00:00Z",
    "runway_months": "-69125"
  }
}
Returns Examples
{
  "after": {
    "monthly_total": "-69125",
    "usage_dimensions": [
      {
        "dimension": "compute_vcpu",
        "dimension_display_name": "vCPU (hours)",
        "monthly_amount": "-69125",
        "quantity": 4,
        "unit_price": "-69125"
      }
    ]
  },
  "before": {
    "monthly_total": "-69125",
    "usage_dimensions": [
      {
        "dimension": "compute_vcpu",
        "dimension_display_name": "vCPU (hours)",
        "monthly_amount": "-69125",
        "quantity": 4,
        "unit_price": "-69125"
      }
    ]
  },
  "currency": "USD",
  "diff": {
    "monthly_total_delta": "-69125",
    "usage_dimensions": [
      {
        "after": {
          "monthly_amount": "-69125",
          "quantity": 4,
          "unit_price": "-69125"
        },
        "before": {
          "monthly_amount": "-69125",
          "quantity": 4,
          "unit_price": "-69125"
        },
        "dimension": "compute_vcpu",
        "dimension_display_name": "vCPU (hours)",
        "monthly_amount_delta": "-69125"
      }
    ]
  },
  "priced_at": "2025-01-01T00:00:00Z",
  "current_summary": {
    "daily_cost": "-69125",
    "effective_balance": "-69125",
    "monthly_cost": "-69125",
    "recharge_threshold_fraction": "-69125",
    "estimated_next_charge_at": "2025-01-01T00:00:00Z",
    "runway_months": "-69125"
  },
  "updated_summary": {
    "daily_cost": "-69125",
    "effective_balance": "-69125",
    "monthly_cost": "-69125",
    "recharge_threshold_fraction": "-69125",
    "estimated_next_charge_at": "2025-01-01T00:00:00Z",
    "runway_months": "-69125"
  }
}