From ca06c362525c18d7af1ee6f6649887605715ab72 Mon Sep 17 00:00:00 2001 From: Gaurav Agarwal Date: Tue, 8 Sep 2026 09:38:24 +0530 Subject: [PATCH 1/2] docs: rewrite the Manifest order book page around the USDT/USDC market Rewrites the Manifest page around the fills the cubes record: the USDT/USDC market as the worked example, live fills and price feed, one-minute candles, buy and sell volume, top traders and the busiest markets. Co-Authored-By: Claude Fable 5.1 --- docs/blockchain/Solana/solana-manifest-api.md | 248 +++++++++--------- 1 file changed, 118 insertions(+), 130 deletions(-) diff --git a/docs/blockchain/Solana/solana-manifest-api.md b/docs/blockchain/Solana/solana-manifest-api.md index 7bf5c6d01..098f316a0 100644 --- a/docs/blockchain/Solana/solana-manifest-api.md +++ b/docs/blockchain/Solana/solana-manifest-api.md @@ -1,79 +1,75 @@ --- -title: "Solana Manifest API" -description: "Solana Manifest API: query and stream Solana on-chain data with Bitquery GraphQL examples for developers. See examples in the Bitquery IDE." +title: "Manifest DEX API: Order Book Fills, Prices, 1-Minute OHLC and Top Traders" +sidebar_label: "Manifest API" +description: "Manifest, Solana's on-chain order book, via Bitquery GraphQL: live fills, USDT/USDC price and 1-minute candles, buy and sell volume and top traders." +keywords: + - Manifest DEX API + - Manifest Solana order book + - Manifest trades GraphQL + - USDT USDC Solana order book + - Manifest OHLC API --- -import VideoPlayer from "../../../src/components/videoplayer.js"; - -# Manifest DEX API -:::tip Need real-time Manifest data or anything from the last ~30 days? -For **real-time + last ~30 days**, use the [**Trading cube**](/docs/trading/trading-data-overview) — [`Trading.Trades`](/docs/trading/crypto-trades-api/trades-api) gives you clean, MEV-filtered Manifest swaps with **USD price, market cap, and supply on every row** across **9 chains in one API**. Use this page when you need **historical Manifest data older than ~30 days**, raw per-swap detail, or call / event context. -::: +import VideoPlayer from "../../../src/components/videoplayer.js"; +import FAQ from "@site/src/components/FAQ"; -Track real-time trades, token prices, OHLC data, top traders, and trading volume on **Manifest** DEX on Solana using Bitquery's GraphQL API. Filter by `Dex: { ProtocolFamily: { is: "Manifest" } }` to get Manifest-only data. +# Manifest DEX API: Order Book Fills, Prices, 1-Minute OHLC and Top Traders -:::note -Use these APIs as **queries** for OHLC, top traders, and volume aggregates. Subscriptions are for real-time trades and price feeds; aggregates and time intervals do not work with subscriptions. -::: +Manifest is an on-chain limit order book on Solana, program `MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms`, and most of what trades on it is stablecoins: the USDT/USDC market at `8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ` alone fills tens of thousands of orders a day. Because fills are matched orders rather than pool swaps, prices sit within a few basis points of parity and candles are tight, which makes Manifest a good reference market for stablecoin pricing. Bitquery records each fill in the Solana `DEXTrades` and `DEXTradeByTokens` cubes under `ProtocolFamily: "Manifest"` and `ProtocolName: "manifest"`. Every example runs in the [IDE](https://ide.bitquery.io) on a free account; Solana queries go to the `eap` endpoint. Aggregates such as candles and rankings are queries; subscriptions are for the live fill and price feeds. -## Real-time Manifest DEX Trades +## Live fills -Subscribe to trades on Manifest DEX as they happen. Returns buy/sell amounts, currencies, accounts, and prices. - -[Run Query](https://ide.bitquery.io/manifest-dextrades) +Every Manifest fill as it lands, with both sides, the accounts and the market. Saved stream [here](https://ide.bitquery.io/manifest-dextrades). ```graphql -subscription ManifestDEXTrades { +subscription { Solana { - DEXTrades( - where: { Trade: { Dex: { ProtocolFamily: { is: "Manifest" } } } } - ) { + DEXTrades(where: { Trade: { Dex: { ProtocolFamily: { is: "Manifest" } } } }) { + Block { + Time + } Trade { - Dex { - ProgramAddress - ProtocolFamily - ProtocolName + Market { + MarketAddress } Buy { Currency { - Name Symbol MintAddress } Amount + AmountInUSD + Price Account { Address } - PriceAgainstSellCurrency: Price } Sell { - Account { - Address - } - Amount Currency { - Name Symbol MintAddress } - PriceAgainstBuyCurrency: Price + Amount + AmountInUSD + Account { + Address + } } } - Block { - Time + Transaction { + Signature + Signer } } } } ``` -## Latest Price of a Token on Manifest - -Get the most recent trade price for a token on Manifest. Example uses USDC (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`) against SOL (`So11111111111111111111111111111111111111112`). Change the mint addresses in the `where` clause for another pair. +## Price of USDT in USDC, right now -[Run Query](https://ide.bitquery.io/token-price-on-manifest) +The newest fill in the market. `Price` is the quote per unit of the token and `PriceInUSD` its dollar value. Saved query [here](https://ide.bitquery.io/token-price-on-manifest). ```graphql { @@ -84,14 +80,8 @@ Get the most recent trade price for a token on Manifest. Example uses USDC (`EPj where: { Trade: { Dex: { ProtocolFamily: { is: "Manifest" } } - Currency: { - MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } - } - Side: { - Currency: { - MintAddress: { is: "So11111111111111111111111111111111111111112" } - } - } + Currency: { MintAddress: { is: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB" } } + Side: { Currency: { MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } } } } } ) { @@ -101,28 +91,26 @@ Get the most recent trade price for a token on Manifest. Example uses USDC (`EPj Trade { Price PriceInUSD + Market { + MarketAddress + } } } } } ``` -## Realtime Price Feed of a Token on Manifest - -Subscribe to live price updates for a token on Manifest. Replace the currency mint address with your token’s mint. - -[Run Query](https://ide.bitquery.io/Realtime-Price-feed-of-a-Token-on-Manifest) +As a subscription the same filter is a price feed that ticks on every fill. Saved stream [here](https://ide.bitquery.io/Realtime-Price-feed-of-a-Token-on-Manifest). ```graphql -subscription RealtimeManifestPrice { +subscription { Solana { DEXTradeByTokens( where: { Trade: { Dex: { ProtocolFamily: { is: "Manifest" } } - Currency: { - MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } - } + Currency: { MintAddress: { is: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB" } } + Side: { Currency: { MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } } } } } ) { @@ -132,38 +120,33 @@ subscription RealtimeManifestPrice { Trade { Price PriceInUSD + Amount } } } } ``` -## Manifest OHLC API - -Get OHLC (open, high, low, close), volume, and trade count for a token pair on Manifest. Uses 1-minute candles. `PriceAsymmetry: { lt: 0.1 }` filters for balanced price data. Use as a **query** only; aggregates and intervals are not supported in subscriptions. +## One-minute candles -[Run Query](https://ide.bitquery.io/manifest-OHLC-API) +USDT/USDC over the last hour, one row per minute with volume and fill count. `PriceAsymmetry` below 0.1 keeps fills whose two sides agree on price. Saved query [here](https://ide.bitquery.io/manifest-OHLC-API). ```graphql { Solana { DEXTradeByTokens( - orderBy: { descendingByField: "Block_Timefield" } where: { Trade: { - Currency: { - MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } - } - Side: { - Currency: { - MintAddress: { is: "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB" } - } - } Dex: { ProtocolFamily: { is: "Manifest" } } + Currency: { MintAddress: { is: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB" } } + Side: { Currency: { MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } } } PriceAsymmetry: { lt: 0.1 } } + Transaction: { Result: { Success: true } } + Block: { Time: { since_relative: { hours_ago: 1 } } } } - limit: { count: 10 } + limit: { count: 60 } + orderBy: { descendingByField: "Block_Timefield" } ) { Block { Timefield: Time(interval: { in: minutes, count: 1 }) @@ -181,109 +164,114 @@ Get OHLC (open, high, low, close), volume, and trade count for a token pair on M } ``` -## Top Traders of a Token on Manifest - -Get the top 100 traders by USD volume for a token on Manifest. Pass the token mint address as the `$token` variable. - -[Run Query](https://ide.bitquery.io/Get-the-Top-Traders-of-a-specific-Token-on-ManifestDEX) +## Buy and sell volume of a token -**Variables (example):** +Totals for USDT on Manifest over the last hour, in USD, split by direction. `Side.Type` describes the counter-side, so USDT was bought where the side was sold. Saved query [here](https://ide.bitquery.io/Get-trading-volume-buy-volume-sell-volume-of-a-token_7). -```json +```graphql { - "token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" + Solana { + DEXTradeByTokens( + where: { + Trade: { + Dex: { ProtocolFamily: { is: "Manifest" } } + Currency: { MintAddress: { is: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB" } } + } + Transaction: { Result: { Success: true } } + Block: { Time: { since_relative: { hours_ago: 1 } } } + } + ) { + trades: count + volume: sum(of: Trade_Amount) + volumeUsd: sum(of: Trade_Side_AmountInUSD) + bought: sum(of: Trade_Amount, if: { Trade: { Side: { Type: { is: sell } } } }) + sold: sum(of: Trade_Amount, if: { Trade: { Side: { Type: { is: buy } } } }) + } + } } ``` +## Top traders of a token + +Rank signers by USD volume over a day. Saved query [here](https://ide.bitquery.io/Get-the-Top-Traders-of-a-specific-Token-on-ManifestDEX). + ```graphql -query TopTraders($token: String) { +{ Solana { DEXTradeByTokens( orderBy: { descendingByField: "volumeUsd" } - limit: { count: 100 } + limit: { count: 50 } where: { Trade: { - Currency: { MintAddress: { is: $token } } Dex: { ProtocolFamily: { is: "Manifest" } } + Currency: { MintAddress: { is: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB" } } } Transaction: { Result: { Success: true } } + Block: { Time: { since_relative: { hours_ago: 24 } } } } ) { - Trade { - Account { - Owner - } - Side { - Account { - Address - } - Type - } + Transaction { + Signer } - bought: sum( - of: Trade_Amount - if: { Trade: { Side: { Type: { is: buy } } } } - ) - sold: sum( - of: Trade_Amount - if: { Trade: { Side: { Type: { is: sell } } } } - ) - volume: sum(of: Trade_Amount) + trades: count volumeUsd: sum(of: Trade_Side_AmountInUSD) + bought: sum(of: Trade_Amount, if: { Trade: { Side: { Type: { is: sell } } } }) + sold: sum(of: Trade_Amount, if: { Trade: { Side: { Type: { is: buy } } } }) } } } ``` -## Trading Volume, Buy Volume, and Sell Volume of a Token +## The busiest Manifest markets -Get total traded volume (token and USD), buy volume, and sell volume for a token on Manifest over a time window. Example uses last 1 hour and USDC/SOL pair; adjust `since_relative` or mint addresses as needed. Uses `dataset: combined` for historical coverage. - -[Run Query](https://ide.bitquery.io/Get-trading-volume-buy-volume-sell-volume-of-a-token_7) +Group the last day by market and token pair. ```graphql -query ManifestTokenVolume { - Solana(dataset: combined) { +{ + Solana { DEXTradeByTokens( where: { - Block: { Time: { since_relative: { hours_ago: 1 } } } - Transaction: { Result: { Success: true } } - Trade: { - Currency: { - MintAddress: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } - } - Side: { - Currency: { - MintAddress: { is: "So11111111111111111111111111111111111111112" } - } - } - Dex: { ProtocolFamily: { is: "Manifest" } } - } + Trade: { Dex: { ProtocolFamily: { is: "Manifest" } } } + Block: { Time: { since_relative: { hours_ago: 24 } } } } + orderBy: { descendingByField: "fills" } + limit: { count: 20 } ) { Trade { + Market { + MarketAddress + } Currency { + Symbol MintAddress - Decimals } Side { Currency { - Name + Symbol MintAddress } } } - traded_volume_USD: sum(of: Trade_Side_AmountInUSD) - traded_volume: sum(of: Trade_Amount) - buy_volume: sum( - of: Trade_Side_AmountInUSD - if: { Trade: { Side: { Type: { is: buy } } } } - ) - sell_volume: sum( - of: Trade_Side_AmountInUSD - if: { Trade: { Side: { Type: { is: sell } } } } - ) + fills: count + volumeUsd: sum(of: Trade_Side_AmountInUSD) + traders: uniq(of: Transaction_Signer) } } } ``` + + + +## Related pages + +- [Solana DEX trades API](/docs/blockchain/Solana/solana-dextrades) +- [Crypto Trades API](/docs/trading/crypto-trades-api/trades-api) +- [Solana API hub](/docs/blockchain/Solana/) From b6bfbf0d8a5a41be2616f2a89a172e197a0803f6 Mon Sep 17 00:00:00 2001 From: Gaurav Agarwal Date: Tue, 8 Sep 2026 09:43:21 +0530 Subject: [PATCH 2/2] docs: audit fixes (manifest) Co-Authored-By: Claude Fable 5.1 --- docs/blockchain/Solana/solana-manifest-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blockchain/Solana/solana-manifest-api.md b/docs/blockchain/Solana/solana-manifest-api.md index 098f316a0..74f5dd626 100644 --- a/docs/blockchain/Solana/solana-manifest-api.md +++ b/docs/blockchain/Solana/solana-manifest-api.md @@ -15,7 +15,7 @@ import FAQ from "@site/src/components/FAQ"; # Manifest DEX API: Order Book Fills, Prices, 1-Minute OHLC and Top Traders -Manifest is an on-chain limit order book on Solana, program `MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms`, and most of what trades on it is stablecoins: the USDT/USDC market at `8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ` alone fills tens of thousands of orders a day. Because fills are matched orders rather than pool swaps, prices sit within a few basis points of parity and candles are tight, which makes Manifest a good reference market for stablecoin pricing. Bitquery records each fill in the Solana `DEXTrades` and `DEXTradeByTokens` cubes under `ProtocolFamily: "Manifest"` and `ProtocolName: "manifest"`. Every example runs in the [IDE](https://ide.bitquery.io) on a free account; Solana queries go to the `eap` endpoint. Aggregates such as candles and rankings are queries; subscriptions are for the live fill and price feeds. +Manifest is an on-chain limit order book on Solana, program `MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms`, and most of what trades on it is stablecoins: the USDT/USDC market at `8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ` is its busiest market by a wide margin. Because fills are matched orders rather than pool swaps, prices sit within a few basis points of parity and candles are tight, which makes Manifest a good reference market for stablecoin pricing. Bitquery records each fill in the Solana `DEXTrades` and `DEXTradeByTokens` cubes under `ProtocolFamily: "Manifest"` and `ProtocolName: "manifest"`. Every example runs in the [IDE](https://ide.bitquery.io) on a free account; Solana queries go to the `eap` endpoint. Aggregates such as candles and rankings are queries; subscriptions are for the live fill and price feeds.