---
title: "Set or remove daily / monthly sandbox spending caps"
method: PUT
path: "/sandboxes/budget"
tags: ["sandboxes"]
---

# Set or remove daily / monthly sandbox spending caps

`PUT /sandboxes/budget`

## Request

- Base URL: `https://api.eqvps.com/api/v1/eqvps`
- URL: `https://api.eqvps.com/api/v1/eqvps/sandboxes/budget`
- Auth: HTTP bearer

When a cap is reached: new sandboxes get 429 budget_exceeded, running ephemeral sandboxes are deleted, persistent ones are paused (pause_reason=budget, disk kept). They resume when the cap is raised or removed, or a new UTC day / month starts.

## Request body

- SandboxBudgetUpdate: Both fields are required; null removes that cap. Default for every account: no caps.
  - `daily_usd` number, nullable, required
  - `monthly_usd` number, nullable, required

## Response `200`

Updated budget

- SandboxBudget
  - `currency` string
  - `daily_usd` number, nullable: Daily cap, null = no cap
  - `monthly_usd` number, nullable: Monthly cap, null = no cap
  - `spent` object: Closed hours plus the current running estimate, USD
    - `today` number
    - `month` number
  - `exceeded` boolean
  - `reason` 'daily' | 'monthly' | 'null', nullable
  - `resets_at` object
    - `daily` string, date-time
    - `monthly` string, date-time
  - `timezone` string
  - `on_limit` string: What happens when a cap is reached

## Other responses

- `422`: invalid_request

---

[API](https://skmtc.dev/eqvps/apis/eqvps-api.md) · [All operations](https://skmtc.dev/eqvps/apis/eqvps-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eqvps/apis/eqvps-api/revisions/2cbc15a2b088?raw)
