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 | bool | ✅ | Whether external BYOK inference spend counts toward this budget. | false |
LimitUsd | float64 | ✅ | Budget limit in USD for the current window. | 50 |
RemainingUsd | float64 | ✅ | limit_usd - spend_usd. Zero or negative means this layer rejects requests with a 403 until it resets. | 17.5 |
ResetInterval | *components.KeyBudgetResetInterval | ✅ | UTC window the spend is counted over (weeks start Monday); null for a lifetime budget that never resets. | weekly |
ResetsAt | *time.Time | ✅ | 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 | components.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 | float64 | ✅ | 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 |