Docs
Docs
Home
Getting Started
Agent Tooling
CLI
Supported Chains
Acala
Aptos
Arbitrum
Arc
Asset Hub
Astar
Avalanche
Base
Berachain
Bifrost
Binance Smart Chain
Bittensor
Blast
Boba Network
Bridge Hub
Celo
Centrifuge
Chiliz
Cronos
Enjin
Ethereum
Etherlink
Flow EVM Gateway
Gnosis
Hydration
Hyperliquid
Immutable
Ink
IoTeX
Kusama
Linea
LISK
Manta Atlantic
Manta Pacific
Mantle
MegaETH
Monad
Movement
Neuroweb
opBNB
Optimism
Plasma
Polkadot
Polygon
Pulsechain
Robinhood
Ronin
Scroll
Sonic
Starknet
Taiko
Tempo
Sui
TRON
Unichain
Viction
World Chain
XDC Network
XX Network
Zetachain
zkSync Era
Zora
Supported ChainsHyperliquidHyperliquid HyperCoregRPC Streaming API

StreamAllFills - Stream All Fills

Subscribe to live per-account Hyperliquid fills across all or selected coins and users over the V3 gRPC API.

Hyperliquid RPC endpoint: endpoint URLs, plans and pricing.

StreamAllFills sends every live fill in scope. Each Fill is one account's execution with position context. Within one block, fills from one match share (coin, tid).

Across blocks, include the frame's block_number in the match key. Retain account and order identity when deduplicating individual fills.

Request and live-only behavior

Empty coins and users lists select all fills. Coin names match exactly and are not validated against the current universe; unknown names simply never match. User addresses match the fill's own user field case-insensitively. Non-empty coin and user filters combine using AND semantics.

The stream has no opening snapshot or historical backfill. Every source block containing fills advances sequence. If filtering removes every fill, the frame remains present with an empty fills list.

Go request
package main

import (
    "context"
    "crypto/tls"
    "log"
    "os"

    pb "example.com/hyperliquid-v3-client/gen/v3"
    "google.golang.org/grpc"
    "google.golang.org/grpc/credentials"
    "google.golang.org/grpc/metadata"
)

func main() {
    endpoint, apiKey := os.Getenv("HYPERLIQUID_GRPC_ENDPOINT"), os.Getenv("DWELLIR_API_KEY")
    if endpoint == "" || apiKey == "" {
        log.Fatal("set HYPERLIQUID_GRPC_ENDPOINT and DWELLIR_API_KEY")
    }
    conn, err := grpc.NewClient(endpoint, grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{MinVersion: tls.VersionTLS12})))
    if err != nil {
        log.Fatal(err)
    }
    defer conn.Close()
    ctx := metadata.AppendToOutgoingContext(context.Background(), "x-api-key", apiKey)
    stream, err := pb.NewMarketStreamingClient(conn).StreamAllFills(ctx, &pb.AllFillsRequest{
        Coins: []string{"BTC", "ETH"},
        Users: []string{"0x1111111111111111111111111111111111111111"},
    })
    if err != nil {
        log.Fatal(err)
    }
    var last uint64
    for {
        update, err := stream.Recv()
        if err != nil {
            log.Fatal(err)
        }
        if update.GetSequence() != last+1 {
            log.Fatalf("sequence gap: got=%d expected=%d", update.GetSequence(), last+1)
        }
        last = update.GetSequence()
        log.Printf("block=%d sequence=%d fills=%d", update.GetBlockNumber(), update.GetSequence(), len(update.GetFills()))
    }
}

Sequencing and recovery

Require contiguous sequence values. A gap or ABORTED indicates loss; reconnect for new live fills, then use StreamFills or historical data to recover the missing interval. See the gRPC overview for common errors.

Related references: StreamUserFills, StreamBuilderFills, and StreamLiquidationFills.

StreamTrades - Stream Normalized Trades

Subscribe to live normalized Hyperliquid trades for up to 20 coins with optional counterparty filtering over V3 gRPC.

StreamUserFills - Stream User Fills

Subscribe to live Hyperliquid fills whose owning account matches one user, optionally scoped by coin, over V3 gRPC.

On this page

Request and live-only behaviorSequencing and recovery