Get spend alerts
Proxium sends an alert to the channel that your team reads: Slack, Discord, Telegram or a webhook. An alert tells you about spend. It never refuses a call. To stop an app at a limit, set a limit. See Set budgets and limits.
What Proxium sends an alert about
| Alert | When | How often |
|---|---|---|
| Spend level | The spend of the project, or of one app, passes a dollar level that you set, in a day or in a month | One time for each level, app and day or month |
| Limit of a key | A key reaches 50%, 80% and 100% of one of its limits. You set the limits on Keys | One time for each percentage in the window of the limit |
The day and the month are UTC calendar periods. An app is the value that it sends in the x-proxium-source header.
1. Add a channel
Open Settings › Spend alerts, and set one or more channels:
| Channel | What to paste | Where you get it |
|---|---|---|
| Slack | The incoming webhook URL, https://hooks.slack.com/services/… | Create a Slack app with Incoming Webhooks for the channel. See Sending messages using incoming webhooks |
| Discord | The channel webhook URL, https://discord.com/api/webhooks/… | In Discord, open the channel settings › Integrations › Webhooks › New Webhook › Copy Webhook URL |
| Telegram | The bot token and the chat | Create a bot with @BotFather and copy its token. Add the bot to your group or channel. The chat is the numeric chat id, or @name of a public channel |
| Webhook | Any https URL of yours | Proxium sends a POST with a JSON body. See The webhook body |
Select Set beside the channel. The console then shows the host of the URL, or bot set for Telegram. It never shows the URL or the token again. Proxium stores them encrypted.
A URL must reach a public address. Proxium refuses a private, loopback or link-local address, because it sends the alert from inside its own network.
2. Send a test alert
Select Send a test alert. Proxium sends one test message to each channel now. Each channel shows sent, or the reason that it failed. A failed test does not change your settings.
3. Set a spend level
- In Spend levels, leave App empty for the whole project, or type the
x-proxium-sourcevalue of one app. - In In, select a day or a month.
- Type the level in Level, in dollars, for example
20. - Select Add level.
The level shows in the list. Proxium checks the spend every 30 seconds. When the spend passes the level, each channel gets one message, for example:
proxium: app 'support-bot' of project 'acme' spent $21.40 today (UTC), over its alert level of $20.00
A project keeps at most 50 levels. To change a level, add it again with the new amount. A new amount sends a new alert in the same day or month. To remove a level, select Remove.
Check what went out
Settings › Alerts that went out lists each message: when, what it was about, the channel and its host, and sent, failed or blocked. blocked means that the URL failed the address check.
The webhook body
A webhook gets one JSON object for each alert. A spend level:
{
"type": "proxium.spend.watch",
"project": "acme",
"app": "support-bot",
"period": "day",
"spent": 2140000,
"level": 2000000,
"unit": "millicents",
"at": "2026-10-03T14:05:00Z"
}
app is null for a level of the whole project. spent and level are in millicents: 100,000 millicents are one dollar.
A limit of a key:
{
"type": "axon.budget.threshold",
"project": "acme",
"scope": "key",
"dimension": "calls",
"threshold_pct": 80,
"value": 800,
"ceiling": 1000,
"unit": "calls",
"action": "notify",
"at": "2026-10-03T14:05:00Z"
}
A test alert has "type": "proxium.alert.test", the project and the time. No body holds a prompt, an answer, a key or a key prefix.
Related pages
- Set budgets and limits: stop an app or a key at a limit.
- Track spend: see what each app and key spent.
- Monitor your project: the spend, the failures and the vendors.