Pricing and limits

MIOSA is credit-based: compute time and AI API calls draw down a credit balance. Current rates, plans, and volume terms live on the pricing page. This page covers what is billable, the limits that are enforced, and how to read usage back.

For API request throttling - the per-workspace and per-endpoint rates, the X-RateLimit-* headers, and how to back off on 429 - see Rate limits.

What you pay for

DimensionUnitWhen it accrues
Sandbox runtimevCPU-seconds + GiB-secondsWhile the sandbox is running
Sandbox storagedisk GiB-secondsWhile the sandbox is paused
Builder runtimesecondsDuring a publish build
Runtime instance runtimevCPU-seconds + GiB-secondsPer-second while serving
Static artifact storageGB-monthsContinuously
Static and object storage bandwidthGB egressPer response
Managed Postgres, RedisGB-months (+ connections)Continuously
Object storage bucketsGB-months + GB egressContinuously / per response

A Computer (desktop) has a separate metering schema; see Computers for that side. Rates are plan-dependent - see the pricing page for current numbers.

Billable states

StateBilled?
runningYes: compute rate
pausedStorage rate only
destroyedNo; billing stops immediately

Billing accrues from running until paused or destroyed. A sandbox that reaches its timeout pauses (persistent) or is destroyed (non-persistent). See Sizing and limits for the full notes and Timeouts and auto-stop for the deadline behavior.

Machine sizes

A sandbox is sized with a named contract. small is the default.

SizeShape
microSmallest
tinySmall
xsSmall; available when the catalog and tenant policy admit it
smallDefault: 2 vCPU, 4 GiB RAM, 10 GiB disk
quadFour vCPU
mediumLarger
largeLarger still
xlLargest

A named size is selectable only when the template catalog reports it and readiness permits admission. Every sandbox response carries a versioned resource_contract (for example sandbox/small@v1) so you can record the resolved resources instead of assuming a size name never changes. Run GET /api/v1/templates to see what is available to you.

Limits

These are enforced as hard caps, not as request throttling. For request rates, see Rate limits.

LimitValue
Concurrent sandboxes per tenantPlan-based: Developer 10 · Business 250 · Enterprise 500 (upgrade or contact support to increase)
timeout_sec1 to 86400; default 3600
Max exec timeout300 seconds
Max file upload size100 MB
Webhook delivery retriesup to 24 hours, then the event is dropped; see Webhooks
Browser access token TTL5 minutes; see Browser tokens
API request rateVaries by workspace, endpoint group, and key policy; see Rate limits

Caps inside your own product

You can cap what one of your own end-users can consume, independent of the tenant limit, with the Quotas API:

client.quotas.set(
    "user-42",
    max_sandboxes=3,
    max_concurrent=1,
    max_storage_gb=50,
    max_credit_cents=500,
)

Read usage back

  • One sandbox. GET /api/v1/sandboxes/{id} returns measured runtime, provisioned vCPU time, active CPU, network traffic, estimated cost, and timeout visibility. GET /api/v1/sandboxes/{id}/usage returns the usage record.
  • A period. The Usage Rollup API aggregates by external_user_id, external_project_id, or workspace_id for a predefined or custom period.
  • Your balance. GET /api/v1/credits/balance returns the current balance, lifetime earned and spent, and the nearest expiry date. Purchased credits do not expire; recurring plan credits expire one billing period after grant, and promotional credits 180 days after grant. See the Credits API for the full expiry rules.

Usage carries the same ownership and attribution as the resource it came from, so a rollup maps straight onto your own billing. See Usage and billing.

See also

Was this page helpful?