Skip to main content
Create a stream in the dashboard, then open its URL over SSE. Streams is an allowlisted beta: open Streams in the dashboard and choose Request access. You also need an enabled account RPC API key (keys) and enough balance for delivery.

1. Create a stream

Sign in at lasso.sh and open Streams. Choose a chain, enter your contract addresses, select events, and choose a starting block. Leave From block blank to start at the latest block, or enter 0 for genesis. Save the stream, then copy its read URL with your account RPC key. Store the URL privately. This example selects all logs at one contract on Base:
The examples append parameters with &. For a URL without filters, such as .../base/blocks, add the first one with ? instead. If you use the copied dashboard URL, keep its filters. The examples below set from themselves; remove an existing from query parameter before appending it.

2. Open an SSE connection

One connection pushes pages as blocks arrive. Each complete frame looks like:
items holds matching logs, ordered by block number then log index. A quiet filter can produce an empty page. Stop curl with Ctrl-C. To backfill, replace from=latest with your starting block number. Curl displays pages but does not persist them. In an app, apply each page and save next in one transaction. After a disconnect, resume from that saved value:
Last-Event-ID wins over from. Set SAVED_NEXT to your last committed cursor, not merely the last frame received.

3. Try polling

For cron, serverless or batch jobs, omit the SSE header. Each request returns one JSON page and waits up to 20 seconds at the tip:
Use wait=0 to drain available pages in a scheduled job; stop when next stays unchanged. A 503 response means retry the same position after Retry-After.

Positions

from is required. Use a decimal block number, latest, or the opaque next from a page. Never reuse a cursor with a changed chain, source or filter.

Next