Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API
Streams

Get started

Streams

Subscribe to chain activity with filters. Replay from a past checkpoint, then continue live with no gap.

Phase 2: coming next. Streams are not live yet. This page describes what ships.

Topics and filters

TopicFilters
transactionsaccounts (any of), accountsRequired (all of), coinTypes, eventTypes, packages, objectIds, balanceAddresses, types (transaction type), status
eventseventTypes (prefix match), packages, senders
checkpointsnone
balancesaccounts or balanceAddresses, coinTypes
objectsobjectIds, types

Sui filters

These four work on SSE query parameters, on WebSocket subscribe params and on webhooks, with the same names. Entries in one list are OR, different filters are AND. Each list takes up to 100 entries on Free and 1,000 on paid plans. They match live and in replay.

FilterMatches
objectIdsAny change to these objects: created, mutated, deleted, wrapped or unwrapped. System transactions count, so 0x6 (the Clock) fires every checkpoint. The objects topic delivers one item per change with version and kind; other topics carry matched.objects.
eventTypesMove event types. Give a full type with or without type parameters, a module prefix (0xpackage::module) or a package prefix (0xpackage). Use the package that defines the type, which is its original id.
packagesTransactions whose PTB called a function of these packages. Narrow with 0xpackage::module or 0xpackage::module::function. Pass the original package id and every upgraded version matches. Items carry matched.calls.
balanceAddressesA balance change of these addresses, narrowed to the same change when coinTypes is set. Items carry matched.balances with the signed delta in the coin's smallest unit; the balances topic adds a delta field.
curl
curl -N "https://api.tide.ad/v1/stream?objectIds=0x6&view=raw" -H "x-api-key: YOUR_API_KEY"
curl -N "https://api.tide.ad/v1/stream?packages=0x2c8d603bc51326b8c13cef9dd07031a408a48dddb541963357661df5d3204809::pool"  -H "x-api-key: YOUR_API_KEY"

Views

viewYou get
idsdigest, checkpoint and txIndex only
rawThe transaction as the node sees it
enhancedThe parsed transaction, the same shape as /v0/transactions. Default for webhooks.

Replay

Pass fromCheckpoint and the server replays from the index in order, then joins the live tail at a checkpoint boundary, with no gap and no duplicate. Your plan sets how far back you can start: 7 days on Free, 90 days on Developer, since genesis on Business and above. GET /v0/stream/replay-info returns the earliest checkpoint you may use. Replay runs at up to 50,000 checkpoints a minute.

Every message carries a cursor of the form checkpoint:txIndex (events add an event index). To resume after a drop, reconnect with fromCheckpoint, or on SSE send the Last-Event-ID header. Messages are ordered by checkpoint and transaction index and deduplicated by digest.

WebSocket

Connect to wss://api.tide.ad/ with your key. Subscribe with JSON-RPC. Each topic has its own method and an unsubscribe.

SubscribeUnsubscribe
transactionSubscribetransactionUnsubscribe
eventSubscribeeventUnsubscribe
checkpointSubscribecheckpointUnsubscribe
balanceSubscribebalanceUnsubscribe
objectSubscribeobjectUnsubscribe
WebSocket
const ws = new WebSocket("wss://api.tide.ad/?api-key=YOUR_API_KEY");
ws.onopen = () =>
  ws.send(
    JSON.stringify({
      jsonrpc: "2.0",
      id: 1,
      method: "transactionSubscribe",
      params: [{ accounts: ["0xYOUR_ADDRESS"], view: "enhanced", fromCheckpoint: 123456789 }],
    }),
  );
ws.onmessage = (e) => console.log(JSON.parse(e.data));

SSE

curl
curl -N "https://api.tide.ad/v1/stream?topic=transactions&accounts=0xYOUR_ADDRESS&view=enhanced&api-key=YOUR_API_KEY"

The server sends a heartbeat every 15 seconds so proxies keep the connection open.

Credits

One credit per 10 events delivered. Replayed events count the same. Opening a stream is limited by your plan's concurrent streams. Streams need a key.