Sandbox Billing
Sandbox billing rolls into normal team billing. Usage appears in the same current-month billing view as apps and add-ons.
What is billed
Section titled “What is billed”| Line item | What it measures |
|---|---|
| vCPU runtime | Requested vCPU count multiplied by running seconds. |
| Memory runtime | Requested GiB RAM multiplied by running seconds. |
| Stopped disk | Retained root disk storage after a sandbox stops, fails, expires, or is marked lost. |
| Checkpoint storage | Named checkpoint storage by size and time. |
| Template storage | Ready template version storage by size and time. |
List sandbox limits to see the active resource shape, prices, and quota snapshot:
curl https://api.watasu.io/v1/sandbox_limits \ -H "Authorization: Bearer $WATASU_API_KEY"The response includes a quota object for the selected team:
{ "quota": { "limits": { "max_running_instances": 100, "max_vcpu_count": 256, "max_memory_mb": 524288 }, "usage": { "running_instances": 2, "vcpu_count": 4, "memory_mb": 4096 }, "reservation": { "instances": 0, "vcpu_count": 0, "memory_mb": 0 } }}Runtime billing
Section titled “Runtime billing”Runtime billing starts when a sandbox moves into an active runtime state and stops when it is stopped, destroyed, expired, failed, or marked lost.
Runtime billing is based on the resources you request:
| Resource | Price |
|---|---|
| vCPU | €0.000010 per vCPU-second |
| Memory | €0.000002 per GiB-second |
For example, a sandbox using 2 vCPU and 1024 MiB RAM costs:
(2 × €0.000010 + 1 × €0.000002) × running_secondsThat is €0.0792 per hour while it is running.
Resource shape
Section titled “Resource shape”Template versions define a runtime_baseline. That baseline is the default runtime shape when you start a sandbox:
{ "sandbox_template_version": { "runtime_baseline": { "cpu": 2, "memory_mb": 4096 } }}When creating a sandbox, choose the template shape with template_id:
{ "template_id": "base", "timeout": 3600}Root disk size is platform-managed. It is retained for stopped sandboxes and checkpoints, but it is not a public create-time resource knob.
Self-service sandbox resources use these increments:
- CPU:
1,2,4,6, or8vCPU - memory:
512MiB to8192MiB in512MiB increments
Quota checks use the resources you request. If a create or restore request exceeds quota, Watasu returns 422 Unprocessable Entity with error: "sandbox_quota_exceeded" and a quota object that includes the limit, current usage, and requested reservation.
Storage billing
Section titled “Storage billing”Storage is billed by size and time, prorated the same way as runtime:
| Storage | Price |
|---|---|
| Retained disk (stopped sandbox) | €0.08 per GiB-month |
| Checkpoint storage | €0.02 per GiB-month |
| Template storage | €0.02 per GiB-month |
For example, a stopped sandbox holding a 10 GiB root disk costs €0.80 per month until it is restored or destroyed. A 4 GiB checkpoint costs €0.08 per month until it expires.
Retained disk billing
Section titled “Retained disk billing”When a sandbox is stopped, Watasu keeps the root disk so the sandbox can be inspected, reconnected, restored, or cleaned up deliberately. That retained disk is billed as storage by size and time.
Destroyed sandboxes stop retaining their disk.
Checkpoint billing
Section titled “Checkpoint billing”Ready checkpoints are billed by stored size and time until they expire or are removed by lifecycle cleanup.
Use explicit checkpoint expiry times that match the job:
{ "sandbox_checkpoint": { "name": "after-index", "expires_at": "2026-06-02T12:00:00Z" }}Template billing
Section titled “Template billing”Ready template versions are billed as template storage. This lets you keep reusable environments available for fast sandbox starts.
Suspended billing
Section titled “Suspended billing”When a team’s billing account is suspended, Watasu blocks new sandbox runtime spend and returns 402 Payment Required with error: "team_billing_suspended". The response includes the team and account balance fields needed to guide the user back to billing.
Blocked actions include sandbox create, restore, resume/connect, streaming process starts/signals, file writes/moves/deletes, directory create/delete, checkpoint create, and customer template builds. Pause/stop and destroy remain available so you can release resources and clean up retained disks.
Rate limits
Section titled “Rate limits”Sandbox create and runtime mutation endpoints are rate-limited per authenticated user and remote address. When a request is limited, Watasu returns 429 Too Many Requests, error: "rate_limited", and a Retry-After header.
Avoiding surprise spend
Section titled “Avoiding surprise spend”- Set
timeouton every sandbox. - Destroy sandboxes when a job is complete.
- Use checkpoint expiry times instead of keeping temporary checkpoints indefinitely.
- Reuse template versions instead of building duplicate templates for the same environment.
- Review the team’s current-month billing view after adding new automation.