---
title: "Create or update a workspace budget"
method: PUT
path: "/workspaces/{id}/budgets/{interval}"
tags: ["Workspaces"]
---

# Create or update a workspace budget

`PUT /workspaces/{id}/budgets/{interval}`

Create or update the budget for a given interval. Budget limits must strictly decrease as the interval narrows (lifetime > monthly > weekly > daily). The optional `include_byok_in_budgets` flag is a workspace-wide setting: when provided it applies to every budget interval for the workspace, not just the interval in this request. Note that a change made here is applied to budget enforcement immediately, but an already-open workspace settings page in the web dashboard may keep showing the previous value until it is reloaded. [Management key](/docs/guides/overview/auth/management-api-keys) required.

## Path parameters

- `id` string, required — The workspace ID (UUID) or slug
- `interval` 'daily' | 'weekly' | 'monthly' | 'lifetime', required — Budget reset interval. Use "lifetime" for a one-time budget that never resets.

## Request body

- UpsertWorkspaceBudgetRequest
  - `include_byok_in_budgets` boolean — Whether to include BYOK (bring-your-own-key) spend when enforcing the workspace's budgets. This is a workspace-wide setting: it applies to every budget interval (daily, weekly, monthly, and lifetime), not just the interval being upserted in this request. Omit to leave the current setting unchanged.
  - `limit_usd` number, double, required — Spending limit in USD. Must be greater than 0.

## Response `200`

Budget created or updated successfully

- UpsertWorkspaceBudgetResponse
  - `data` object, required — The created or updated budget
    - `created_at` string, required — ISO 8601 timestamp of when the budget was created
    - `id` string, uuid, required — Unique identifier for the budget
    - `limit_usd` number, double, required — Spending limit in USD for this interval
    - `reset_interval` 'daily' | 'weekly' | 'monthly' | 'null', nullable, required — Interval at which spend resets. Null means a lifetime (one-time) budget.
    - `updated_at` string, required — ISO 8601 timestamp of when the budget was last updated
    - `workspace_id` string, uuid, required — ID of the workspace the budget belongs to
  - `include_byok_in_budgets` boolean — Whether BYOK (bring-your-own-key) spend is included when enforcing the workspace's budgets. This is a workspace-wide setting that applies to all budget intervals (daily, weekly, monthly, and lifetime).

## Other responses

- `400` — Bad Request - Invalid request parameters or malformed input
- `401` — Unauthorized - Authentication required or invalid credentials
- `404` — Not Found - Resource does not exist
- `500` — Internal Server Error - Unexpected server error

---

[API](https://skmtc.net/openrouterteam/apis/openrouter-api.md) · [All operations](https://skmtc.net/openrouterteam/apis/openrouter-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openrouterteam/openrouter-api/versions/f3788187f5b7/schema)
