Budget Controls
Set spending limits to prevent runaway AI costs.
Available Budgets
| Budget | Description |
|---|---|
| Monthly cost (USD) | Maximum total cost per calendar month |
| Daily tokens | Maximum total tokens per day |
How It Works
Budgets are checked on each ai.request, against
spend and tokens already recorded on ai.response events.
When a limit is exceeded SignalVault emits a
budget.exceeded event — at most once per day per budget
type — and sends an alert if alerts are configured.
What happens next depends on how you integrate. Through the events API or the SDKs,
a blown budget is a notification only: nothing is refused, and it is up to your application to stop
calling the provider. Through the proxy,
SignalVault is the component making the call, so it refuses with
402 budget_exceeded until you raise the budget or the
window resets — the next UTC day for tokens, the first of the next month for spend.
The monthly budget sums payload.cost_usd since the first of
the month (UTC), using your submitted cost when present and a computed one otherwise. The daily token
budget sums the token counts on payload.usage since midnight
UTC. Both budgets read either naming: OpenAI's
prompt_tokens and
completion_tokens, or Anthropic's
input_tokens and
output_tokens, so traffic from either provider counts.
Anthropic's cached tokens count towards the daily token budget too.
Configure budgets under Settings → Budgets. Leave a field blank to disable it. Budgets are available on every plan.