Skip to main content

Documentation Index

Fetch the complete documentation index at: https://injectivelabs-mintlify-jp-developers-first-half-1777019423.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Example code snippets to stream from the indexer for derivatives market module related data using StreamManagerV2.

Using gRPC Stream with StreamManagerV2

Stream orderbook updates

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-orderbook-updates',
  streamFactory: () => stream.streamOrderbookUpdates({ 
    marketIds: ['0x...'],
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (orderbookUpdates) => {
    console.log(orderbookUpdates)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream derivative orders

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { OrderSide } from '@injectivelabs/sdk-ts/types'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-orders',
  streamFactory: () => stream.streamOrders({
    marketId: '0x...',
    subaccountId: '0x...', // optional
    orderSide: OrderSide.Buy, // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (orders) => {
    console.log(orders)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream derivative order history

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import {
  TradeDirection,
  TradeExecutionType,
} from '@injectivelabs/sdk-ts/types'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-order-history',
  streamFactory: () => stream.streamOrdersHistory({
    marketId: '0x...', // optional
    subaccountId: '0x...', // optional
    direction: TradeDirection.Buy, // optional
    executionTypes: [TradeExecutionType.Market], // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (orderHistory) => {
    console.log(orderHistory)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream derivative trades

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { TradeDirection } from '@injectivelabs/sdk-ts/types'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-trades',
  streamFactory: () => stream.streamTrades({
    marketIds: ['0x...'], // optional
    subaccountId: '0x...', // optional
    direction: TradeDirection.Buy, // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (trades) => {
    console.log(trades)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream derivative positions

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-positions',
  streamFactory: () => stream.streamPositions({
    marketId: '0x...', // optional
    subaccountId: '0x...', // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (positions) => {
    console.log(positions)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream derivative markets

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcDerivativesStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcDerivativesStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'derivatives-markets',
  streamFactory: () => stream.streamMarkets({
    marketIds: ['0x...'], // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (markets) => {
    console.log(markets)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()
Last modified on April 24, 2026