A held-open connection over WebSocket or SSE. Filtered event, address, coin and object streams, with no polling loop and no public endpoint to expose.
const ws = new WebSocket(`wss://mainnet-api.inodra.com/v1/warp/{id}/ws`)ws.onmessage = (e) => {const msg = JSON.parse(e.data)handle(msg.data)ws.send(JSON.stringify({ type: 'ack', id: msg.id })) // exactly once}
Prices, fills and balances arrive as the chain commits them, so the UI moves without a polling loop hammering a read endpoint every second.
On WebSocket you ACK each message, so a liquidation or a payout is delivered exactly once even across a reconnect.
The connection is outbound from the client, so a mobile or browser app subscribes directly. There is no public HTTPS endpoint to stand up like a webhook needs.
You pay for the events you actually receive after filtering, plus the time the connection stays open. A filter that drops what you do not need lowers both.
A quiet stream costs almost nothing but the connection.See what every call costs on the pricing page ->
Client ACKs mean a message is only cleared once you confirm it. Nothing critical slips through, even if the socket drops mid-delivery.
No ACK protocol, no upgrade handshake. A single GET that streams, at-least-once, native in every browser and every fetch client.
Every message carries lastEventId. Reconnect with it and the missed events replay in order, so a dropped connection is not a gap in your data.
Streams and webhooks share one number per plan. Compare every plan ->
Free tier includes one live stream, no card required.