Indexer Client

The Strike indexer provides REST endpoints for querying aggregated market state. Use it for startup snapshots — fetching all markets, orderbook levels, and open positions. For live data, use event streaming.

Get Markets

let client = StrikeClient::new(StrikeConfig::bsc_testnet()).build()?;

// All markets
let markets = client.indexer().get_markets().await?;

// Only active markets
let active = client.indexer().get_active_markets().await?;

for market in &active {
    println!(
        "market {} | expiry: {} | interval: {}s",
        market.id, market.expiry_time, market.batch_interval,
    );
}

Market Type

pub struct Market {
    pub id: i64,
    pub expiry_time: i64,
    pub status: String,            // "active", "halted", "resolved", etc.
    pub pyth_feed_id: Option<String>,
    pub strike_price: Option<i64>,
    pub batch_interval: i64,
}

Get Orderbook

Fetch aggregated bid/ask levels for a market:

OrderbookSnapshot Type

Get Open Orders

Fetch open orders for a wallet address:

IndexerOrder Type

Configuration

The indexer URL is set in StrikeConfig with a default for each network. Override it with the builder:

Indexer errors return StrikeError::Indexer.

Last updated