Skip to main content

Hyperliquid gRPC Streaming API

Updated on
Feb 10, 2026

Overview

Hyperliquid gRPC is a high-performance streaming API that enables real-time blockchain data access through gRPC interfaces. It serves as a powerful tool for developers who need to:

  • Stream blockchain data in real-time
  • Monitor on-chain activities (trades, orders, liquidations, funding events)
  • Query HyperCore blockchain states efficiently
  • Track TWAP executions and order book changes with minimal latency

The API provides enterprise-grade reliability with granular control over data streams, supporting both HyperCore and HyperEVM data.

Protocol Buffers and gRPC

Hyperliquid gRPC uses Protocol Buffers (protobuf) as its interface definition language and data serialization format. Protocol Buffers are Google's language-neutral, platform-neutral mechanism for serializing structured data.

Why Proto Files?

Proto files (.proto files) serve as the contract between client and server, defining:

  • Data structures - The exact format of messages exchanged (fields, types, required vs optional)
  • Service methods - Available RPC calls and their request/response types
  • Type safety - Compile-time validation ensuring data correctness
  • Versioning - Built-in backward compatibility as APIs evolve

Why gRPC Uses Proto Files

  1. Language-Agnostic - Write the proto definition once, generate client libraries for 10+ languages (Go, Python, JavaScript, Java, C++, etc.). The same proto file works across all platforms.
  2. High Performance - Binary serialization is significantly faster and smaller than JSON. Protobuf messages are typically 3-10x smaller than equivalent JSON, reducing bandwidth and improving latency.
  3. Strong Typing - Proto definitions enforce strict types at compile time, catching errors before runtime. Field types, message structures, and enums are validated automatically.
  4. Code Generation - The protoc compiler automatically generates client stubs, server interfaces, and message classes from proto files. This eliminates manual serialization code and reduces bugs.
  5. Schema Evolution - Proto files support backward and forward compatibility through field numbering. You can add new fields without breaking existing clients, enabling seamless API updates.
  6. Streaming Support - Proto definitions natively support unary, server streaming, client streaming, and bidirectional streaming patterns, which Hyperliquid uses extensively for real-time data.

Using Proto Files with Hyperliquid

When working with Hyperliquid gRPC, you'll download the proto files and use them to generate client code:

# Example: Generate Go client from proto files
protoc --go_out=. --go-grpc_out=. hyperliquid.proto

The generated code provides type-safe methods like:

// Type-safe subscription with auto-complete
const request = new Subscribe({
stream_type: StreamType.TRADES,
filters: {
coin: { values: ['BTC', 'ETH'] }
}
});

All setup guides in the next sections include instructions for downloading proto files and generating client code for your language.

Access

To access Hyperliquid gRPC, you need to have a Quicknode endpoint with gRPC streaming enabled.

Endpoint and Token Configuration

Hyperliquid gRPC operates on port 10000. This is a dedicated secure port for gRPC communication and is separate from the standard Hyperliquid RPC endpoint. When connecting to the service the port must be specified in the URL:

  • Endpoint: The name of your gRPC-enabled endpoint followed by .hype-mainnet.quiknode.pro and the port number 10000 (e.g., https://example-guide-demo.hype-mainnet.quiknode.pro:10000)
  • Token: Your API key that can be generated from the Quicknode Dashboard Endpoint Security tab.

Given the following example HTTP Provider URL: https://example-guide-demo.hype-mainnet.quiknode.pro/abc123def456/, your authentication credentials would be:

  • Endpoint: https://example-guide-demo.hype-mainnet.quiknode.pro:10000
  • Token: abc123def456

Here is a sample for using this endpoint to connect with Node.js:

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
// For HTTP Provider URL: https://example-guide-demo.hype-mainnet.quiknode.pro/abc123def456/
const ENDPOINT = 'example-guide-demo.hype-mainnet.quiknode.pro:10000';
const TOKEN = 'abc123def456';

const client = new hyperliquid.Hyperliquid(ENDPOINT, credentials);
const metadata = new grpc.Metadata();
metadata.add('x-token', TOKEN);

Available Streams

Stream Type
TRADES
Description
All executed trades with price, size, and direction
Primary Use Case
Trading analytics, price tracking
Stream Type
ORDERS
Description
Order lifecycle events (18+ status types including fills, cancellations)
Primary Use Case
Order management, execution monitoring
Stream Type
BOOK_UPDATES
Description
Order book changes (Level 2 data)
Primary Use Case
Market depth analysis, liquidity monitoring
Stream Type
TWAP
Description
TWAP execution data and algorithm progress
Primary Use Case
Algorithmic trading, execution analytics
Stream Type
EVENTS
Description
System events (funding, liquidations, governance)
Primary Use Case
Risk management, system monitoring
Stream Type
BLOCKS
Description
Raw HyperCore blockchain data (all transaction types)
Primary Use Case
Blockchain analysis, data archiving
Stream Type
WRITER_ACTIONS
Description
System operations for spot token transfers
Primary Use Case
Cross-environment asset tracking, system monitoring

Stream Filtering

All Hyperliquid gRPC streams support powerful filtering capabilities to help you receive only the data you need. Filters allow you to focus on specific trading pairs, users, event types, and more, significantly reducing bandwidth and improving performance.

Example gRPC filter:

Subscribe {
stream_type: TRADES,
filters: {
"coin": FilterValues { values: ["BTC", "ETH"] },
"side": FilterValues { values: ["B"] }
}
}

Complete Filtering Guide - Detailed documentation with syntax, examples, and field references for all stream types.

Making Hyperliquid gRPC Requests

To make requests to Hyperliquid gRPC using different languages, check out the resources below:

We ❤️ Feedback!

If you have any feedback or questions about this documentation, let us know. We'd love to hear from you!

Share this doc