Skip to main content
Ironflow watches every Hyperliquid liquidation on its own node and posts the ones you ask for to your channel. You create the alert once; nothing runs on your side.

From Telegram, no key

Message @ironflow_liquidations_bot and say what you want: The same bot watches wallets: It works in a private chat, in a group (only the group’s admins can set up or stop alerts) and in a channel (add the bot as an admin that can post). Without a size the floor is $100k. A chat gets one alert (up to 20 markets), one watch and one follow for free; /pro gives 5 alerts, 10 watches and 20 follows for 1,000 Telegram Stars a month. For Discord, Slack and webhooks, use a key as below.

Create one

Any API key works (a free key allows one alert). Point url at a Discord channel webhook, a Slack incoming webhook or your own HTTPS endpoint:
Then check it reaches the channel:
To get a Discord webhook URL: channel settings, Integrations, Webhooks, New Webhook, Copy Webhook URL. For Slack: create an app with Incoming Webhooks and add one to the channel.

Telegram

Telegram has no webhook URLs: our liquidation bot posts into your chat. Send telegram_chat instead of url:
Add @ironflow_liquidations_bot to the chat (the response’s setup names it too): in a channel as an admin that can post messages, in a group as a member. A public channel or group is its @name; a private one is its numeric id (it starts with -100; forward a message from the chat to a bot such as @userinfobot to see it). Then send a test; if the bot is missing from the chat, the test result says so.

What arrives

Partial fills of one liquidated position in one transaction count as one liquidation, and min_usd applies to their total. An alert sends at most one message every 5 seconds, listing everything it matched since the last one (up to 20, then a count and a total), so a cascade arrives as a handful of messages. In Discord and Slack each line reads:
A webhook receives JSON:
In Telegram the same lines arrive with the amount in bold and the wallet as a link. A test message has "type": "test". Delivery is at least once: after a restart a few seconds can be sent again, so use id to drop repeats.

Verify a webhook

The create response has a signing_secret (shown once). Each request carries X-Ironflow-Signature: t=<unix seconds>,v1=<hex>, where v1 is the HMAC-SHA256 of <t>.<raw body> with that secret.
Answer with any 2xx status within 10 seconds.

Limits and failures

A failed delivery is tried once more 5 seconds later. After 20 failed deliveries in a row (a deleted webhook, an endpoint that is down) the alert is disabled; GET /v1/alerts shows status and last_error. Fix the destination and send a test: a delivered test switches the alert back on. For the raw feed in your own code use the liquidations stream instead.