Streams API
Handshake auth, stream endpoints, and message shapes for live pending transactions, new blocks, and logs.
The Streams API is available at:
wss://streams-<endpoint>.evmkit.app/v1/Replace <endpoint> with your chosen regional endpoint. See Regions for hostname patterns and the current regional layout.
For pricing, use the single table on the Billing & CU pricing page.
Streams are exposed through multiple regional hostnames. Use the region closest to your consumer when latency matters, or keep explicit failover logic across more than one region when you want predictable fallback behavior.
Behind the public websocket hostnames, the stream service aggregates data from multiple upstream node connections instead of depending on a single upstream node. Client integrations should still treat each stream path and each regional hostname as a separate websocket session.
Open a separate websocket connection for each stream endpoint you want to consume.
Pending transactions stream:
wss://streams-<endpoint>.evmkit.app/v1/pending-txsPending logs stream:
wss://streams-<endpoint>.evmkit.app/v1/pending-logsNew blocks stream:
wss://streams-<endpoint>.evmkit.app/v1/new-blocksAuthentication
Section titled “Authentication”Auth happens during the websocket handshake.
Required header:
X-Api-Key: evk_your_live_keyFirst message
Section titled “First message”After a successful handshake, the first message is:
{"event":"subscribed"}Transaction message
Section titled “Transaction message”{ "event": "transaction", "source": "pending-txs", "received_at": 1741800000000, "raw": { "hash": "0xhash", "from": "0xfrom", "to": "0xto", "input": "0xa9059cbb...", "value": "0x0", ... }}Block message
Section titled “Block message”{ "event": "block", "source": "new-blocks", "received_at": 1741800000000, "block": { "hash": "0xblockhash", "parentHash": "0xparenthash", "number": "0x123456", "timestamp": "0x67d3b5a4", "miner": "0x0000000000000000000000000000000000000000" }}block contains the block payload published on the stream.
Logs message
Section titled “Logs message”{ "event": "pending_logs", "source": "pending-logs", "received_at": 1741800000000, "context": { "hash": "0xhash", "from": "0xfrom", "to": "0xto", "input": "0xa9059cbb...", "value": "0x0", ... }, "logs": [ { "address": "0xpool", "topics": ["0xtopic0", "0xtopic1"], "data": "0xdeadbeef" } ]}logs contains a best-effort pending log view associated with the streamed transaction. It is not a canonical on-chain log stream.