Free AI outage & price alerts
Get notified the moment an AI API goes down or recovers, a model changes price, or a retirement date is announced — in your browser or team chat. No sign-up, no email.
Follow a single service
Want price & retirement alerts for one model? Open its page and click “Get free alerts”.
What you’ll receive
Not just “is the API reachable” but “do models actually answer”: official status, the vendor’s own API success rate on real traffic and our live test calls, every 2 minutes; confirmed twice to avoid false alarms.
A follow-up when it’s back (re-checked every 2 minutes during an incident, usually delivered within 2–6 minutes), with how long it lasted. If you follow a single model, you also get a notice when that model stops / starts answering on the vendor’s own API.
All 355 tracked models compared every 10 minutes; cuts and increases with percentages.
Retirement dates, removals and new model launches.
How to get a webhook URL
Slack
- Go to api.slack.com/apps → Create New App → Incoming Webhooks → turn on.
- Click “Add New Webhook to Workspace”, pick a channel and copy the hooks.slack.com/services/… URL.
Discord
- Channel settings → Integrations → Webhooks → New Webhook.
- Click “Copy Webhook URL” and paste it above.
Microsoft Teams
- Recommended: channel “…” → Workflows → “Post to a channel when a webhook request is received”.
- Paste the generated URL (logic.azure.com / powerplatform.com). Legacy Incoming Webhook connector URLs (webhook.office.com) work too.
Google Chat
- Space name → Apps & integrations → Webhooks → Add webhook.
- Paste the chat.googleapis.com/v1/spaces/…/messages?key=…&token=… URL.
Telegram
- Create a bot with @BotFather, add it to your group and find the group’s chat_id (usually negative).
- Paste https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>.
ntfy
- Subscribe to a hard-to-guess topic in the ntfy app, e.g. modelbank-a8f3k2.
- Paste https://ntfy.sh/modelbank-a8f3k2. If the topic needs an access token, put it under Advanced → Auth token.
Feishu / Lark
- In a group: Settings → Bots → Add Bot → Custom Bot.
- Copy the webhook URL. Security: keyword “ModelBank”, or enable signature verification and put the secret under Advanced → Signing secret. Do not enable the IP allowlist.
DingTalk
- Group settings → Bots → Add → Custom (Webhook).
- Use keyword “ModelBank” or “Sign” security — put the secret under Advanced → Signing secret.
WeCom
- Group → “…” → Add group bot → New bot, then copy the webhook URL.
Bark (iPhone)
- Install Bark, copy the push URL from its home screen (https://api.day.app/<key>/…) and paste it above.
Cursor · n8n · Zapier · your own service
- Any https URL works. We POST JSON (see “Custom webhooks” below).
- If the receiver requires authentication, open Advanced: the Auth token is sent as Authorization: Bearer <token>; put other headers (e.g. X-Api-Key) under Other headers, one per line.
- Cursor automations: paste https://api2.cursor.sh/automations/webhook/… and put the crsr_… key in Auth token.
- If the receiver only accepts Slack / Discord / Teams payloads or plain text, change the Payload format.
Custom webhooks: payload, auth & signatures
Any https URL that isn’t a chat platform is a custom webhook: we POST the JSON below (or Slack / Discord / Teams-compatible payloads or plain text — see Payload format). Any 2xx counts as delivered; redirects are not followed, the timeout is 10 s, and private / reserved addresses are refused.
{
"source": "modelbank.ai",
"event": "outage",
"title": "OpenAI is down",
"text": "Real-traffic success rate 41% in the last 5 min…",
"markdown": "…",
"url": "https://modelbank.ai/status/openai",
"level": "bad",
"data": {
"type": "outage",
"service": "openai"
},
"ts": "2026-11-09T08:00:00.000Z"
}
Request headers
| Content-Type | application/json (text/plain for the plain-text format) |
| User-Agent | ModelBank-Webhooks/2.0 |
| X-ModelBank-Event | Event type: outage / recovered / price / deprecation / new / radar / test … |
| X-ModelBank-Delivery | Unique UUID per delivery — use it to de-duplicate |
| X-ModelBank-Timestamp | With a signing secret: send time (Unix seconds) |
| X-ModelBank-Signature | With a signing secret: sha256= hex HMAC-SHA256(secret, "<timestamp>.<raw body>") |
| Authorization | With an auth token: Bearer <token> (or the full Basic … value you entered) |
The receiver requires authentication (401 / 403)
Paste the key under Advanced → Auth token and we send Authorization: Bearer
If the test fails you see the receiver’s reason (e.g. “requires authentication” or “token rejected”). If the receiver is just temporarily down you can “Save anyway” and fix it later with Edit.
Verifying signatures
Set a random string only you know under Advanced → Signing secret and every request carries X-ModelBank-Timestamp and X-ModelBank-Signature. Compute over the raw body (don’t re-serialise the JSON) and reject timestamps older than 5 minutes to stop replays. For Feishu / DingTalk the secret is used with each platform’s own signing scheme.
// Node.js / Cloudflare Workers / Next.js route — verify X-ModelBank-Signature
import crypto from 'node:crypto'
export function verify(rawBody, headers, secret) {
const ts = headers['x-modelbank-timestamp']
const sig = headers['x-modelbank-signature'] || ''
if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false // reject replays older than 5 min
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(ts + '.' + rawBody).digest('hex')
return sig.length === expected.length && crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))
}
# Python (Flask / FastAPI) — use the raw request body, not re-serialised JSON
import hmac, hashlib, time
def verify(raw_body: bytes, headers, secret: str) -> bool:
ts = headers.get('X-ModelBank-Timestamp', '')
sig = headers.get('X-ModelBank-Signature', '')
if not ts or abs(time.time() - int(ts)) > 300:
return False
mac = hmac.new(secret.encode(), ts.encode() + b'.' + raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(sig, 'sha256=' + mac)
Recent alerts
FAQ
Is it really free?
Yes. Browser push and webhooks cost us nothing per message, so we can keep it free.
Does it work on iPhone?
On iOS 16.4+: in Safari tap Share → Add to Home Screen, open the site from the icon, then enable notifications. Or just use a team-chat webhook.
How do I stop alerts?
Browser: open “Get alerts” → Turn off, or disable notifications for this site in browser settings. Webhooks: click Remove in the panel, or delete the bot.
Will it spam me?
Status changes must be confirmed twice, and bursts of alerts are merged into one digest.
My webhook needs a token (e.g. Cursor). Where does it go?
Paste the URL under Team chat, open Advanced and put the key in Auth token — it is sent as Authorization: Bearer <key>. Click Test first, then Add.
The test failed — now what?
The panel shows the receiver’s reason (authentication required, URL gone, keyword mismatch…). Fix it and test again, or “Save anyway” if the receiver is temporarily down and use Edit later. Channels that keep failing are paused automatically and come back after a successful test.
How do I manage alerts on another device?
Subscriptions live in this browser. Log in and open My account → Alerts: this browser’s subscriptions are attached to your account and can be edited, tested and removed anywhere. Email alerts always have an unsubscribe link.
4 active channels · 682 alerts sent so far.