---
title: "What your sandboxes would have cost at a rival: the same vCPUs, memory and running time at its published rates."
method: GET
path: "/v1/usage/compare"
tags: ["switching"]
---

# What your sandboxes would have cost at a rival: the same vCPUs, memory and running time at its published rates.

`GET /v1/usage/compare`

## Request

- Base URL: `https://api.withruntime.com`
- URL: `https://api.withruntime.com/v1/usage/compare`
- Auth: HTTP bearer

Prices this key's settled sandbox usage over the last `days` (default 30, at most 90) at the rates each sandbox was quoted (a sandbox free usage paid for at the standard rates, since it charged nothing; `usage.trialSandboxes` counts them), and the identical sandboxes at the rival's published list rates, which come from the same table the comparison pages use and name the date they were checked. Returns both costs, the saving and a 30-day projection. With no usage yet it prices a stated example workload and says so (`basis: example`); quote a saving to the owner only after the project's real job has run (`basis: usage`). Compute only: storage, network, plan fees and free allowances are left out. Also returns the switch on record and the welcome match's state. Money is integer microdollars in strings.

## Query parameters

- `provider` 'e2b' | 'daytona' | 'vercel' | 'modal' | 'cloudflare' | 'fly-sprites' | 'fly-machines' | 'blaxel' | 'codesandbox' | 'morph' | 'northflank' | 'runloop' | 'lambda-microvms' | 'freestyle' | 'prime' | 'fly': The rival to price against. fly is Sprites; fly-machines is Machines.
- `days` integer: The window, in days. Default 30.

## Response `200`

Success

- object
  - `provider` 'e2b' | 'daytona' | 'vercel' | 'modal' | 'cloudflare' | 'fly-sprites' | 'fly-machines' | 'blaxel' | 'codesandbox' | 'morph' | 'northflank' | 'runloop' | 'lambda-microvms' | 'freestyle' | 'prime' | 'fly', required
  - `rival` object, required
    - `name` string, required
    - `checked` string, required: ISO date the rival's published rates were read.
    - `rates` string[], required: The rival's rates, as it publishes them.
    - `planFee` string, required
    - `sources` object[], required
      - `label` string, required
      - `url` string, required
  - `basis` 'usage' | 'example', required: usage: your settled sandboxes in the window. example: none yet, so a stated example workload is priced instead.
  - `window` object, required
    - `days` integer, required
    - `from` string, required
    - `to` string, required
  - `usage` object, required
    - `sandboxes` integer, required
    - `runSeconds` number, required
    - `activeCpuSeconds` number, required
    - `unpricedSandboxes` integer, required
    - `trialSandboxes` integer, required: Of sandboxes, how many free usage paid for (the free usage, or free hours given before 5 October 2026), which charged nothing for them; runtimeMicros prices them at Runtime's standard rates.
    - `trialRunSeconds` number, required: The running time free usage paid for.
  - `runtimeMicros` string, required: What the usage costs on Runtime on paid credit: each paid sandbox at the rates it was quoted, and a sandbox free usage paid for at the standard rates, not zero. Integer microdollars, as a string (1,000,000 = $1).
  - `rivalMicros` string, required: What the same sandboxes cost at the rival's published list rates. Integer microdollars, as a string (1,000,000 = $1).
  - `savingMicros` string, required: Rival less Runtime; negative when the rival costs less. Integer microdollars, as a string (1,000,000 = $1).
  - `savingPercent` number, nullable, required: The saving as a percentage of the rival's cost.
  - `perMonth` object, nullable, required: The same figures scaled to 30 days from the days the usage covers. Null for the example.
    - `fromDays` number
    - `runtimeMicros` string: Runtime, per 30 days. Integer microdollars, as a string (1,000,000 = $1).
    - `rivalMicros` string: The rival, per 30 days. Integer microdollars, as a string (1,000,000 = $1).
    - `savingMicros` string: The saving, per 30 days. Integer microdollars, as a string (1,000,000 = $1).
  - `note` string, required: What was compared, at which rates, and what was left out.
  - `switching` object, required
    - `enabled` boolean, required: False while the programme is paused.
    - `maxMicros` string, required: The most the organization's payments are matched to, in total. Integer microdollars, as a string (1,000,000 = $1).
    - `providers` string[], required
    - `eligible` boolean, required: Whether this organization can record a switch now: none recorded yet, and no top-up paid yet.
    - `switch` object, nullable, required: The switch this organization recorded, or null when it has not.
      - `provider` 'e2b' | 'daytona' | 'vercel' | 'modal' | 'cloudflare' | 'fly' | 'blaxel'
      - `status` 'pending' | 'paid' | 'superseded' | 'refused' | 'reversed': pending: no payment decided yet. paid: some payment's match is kept. superseded: a referral matches the payments instead, which is never less. refused: see refusedReason. reversed: every matched payment was refunded or disputed.
      - `refusedReason` 'program_off' | 'suspended' | 'same_card' | 'fraud' | 'too_late' | 'null', nullable
      - `recordedAt` string, date-time
      - `creditMicros` string: The matches this organization got and kept. Integer microdollars, as a string (1,000,000 = $1).
    - `welcome` object, required
      - `enabled` boolean, required: False while the match is paused.
      - `maxMicros` string, required: The most the organization's payments are matched to, in total. Integer microdollars, as a string (1,000,000 = $1).
      - `endsAt` string, date-time, required: When the offer ends: 30 days after the organization signed up.
      - `eligible` boolean, required: Whether credit added now would be matched: some of maxMicros is left and the offer is open.
      - `toppedUp` boolean, required: Whether credit has been added.
      - `status` 'pending' | 'paid' | 'superseded' | 'refused' | 'reversed' | 'null', nullable, required: Null until a payment is decided. paid: some payment's match is kept. superseded: a referral matches the payments instead, which is never less. refused: the latest payment was not matched. reversed: every matched payment was refunded or disputed.
      - `creditMicros` string, required: The matches this organization got and kept. Integer microdollars, as a string (1,000,000 = $1).
      - `usedMicros` string, required: The part of maxMicros used: creditMicros. Integer microdollars, as a string (1,000,000 = $1).
      - `leftMicros` string, required: What credit added now could still get; 0 once the offer ends. Integer microdollars, as a string (1,000,000 = $1).

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/withruntime/apis/runtime-cloud-api.md) · [All operations](https://skmtc.dev/withruntime/apis/runtime-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/withruntime/apis/runtime-cloud-api/revisions/6f4012286988?raw)
