Example Usage
import { KeyBudget } from "@openrouter/sdk/models";
let value: KeyBudget = {
budgetId: null,
guardrailId: "0df9e665-d932-5740-b2c7-b52af166bc11",
includeByok: false,
limitUsd: 50,
remainingUsd: 17.5,
resetInterval: "weekly",
resetsAt: new Date("2026-10-12T00:00:00.000Z"),
scope: "member",
spendUsd: 32.5,
};
Fields
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
budgetId | string | ✔️ | ID of the workspace budget for the workspace scope; null for other scopes. | null |
guardrailId | string | ✔️ | ID of the guardrail that carries this budget; null for other scopes. | 0df9e665-d932-5740-b2c7-b52af166bc11 |
includeByok | boolean | ✔️ | Whether external BYOK inference spend counts toward this budget. | false |
limitUsd | number | ✔️ | Budget limit in USD for the current window. | 50 |
remainingUsd | number | ✔️ | limit_usd - spend_usd. Zero or negative means this layer rejects requests with a 403 until it resets. | 17.5 |
resetInterval | models.KeyBudgetResetInterval | ✔️ | UTC window the spend is counted over (weeks start Monday); null for a lifetime budget that never resets. | weekly |
resetsAt | Date | ✔️ | ISO 8601 UTC instant at which the window rolls over and spend returns to zero; null for a lifetime budget. | 2026-10-12T00:00:00.000Z |
scope | models.KeyBudgetScope | ✔️ | Which budget layer this is, in the order enforcement checks them: the workspace default guardrail against the member aggregate (workspace_default_member) and against this key (workspace_default_key), the member guardrail (member), the API key guardrail (api_key), a workspace budget (workspace), or the key’s own limit (key_limit). | member |
spendUsd | number | ✔️ | Spend in USD that enforcement counts against this limit in the current window: the member aggregate for member-scoped layers, otherwise this key or workspace. | 32.5 |