diff --git a/docs/blockchain/robinhood/bags-fm-api.md b/docs/blockchain/robinhood/bags-fm-api.md
index 76533e2f..019b2d64 100644
--- a/docs/blockchain/robinhood/bags-fm-api.md
+++ b/docs/blockchain/robinhood/bags-fm-api.md
@@ -35,6 +35,8 @@ Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorizat
- [Robinhood Trades API](/docs/blockchain/robinhood/robinhood-trades)
- [Robinhood Meme Coin Launches API](/docs/blockchain/robinhood/robinhood-meme-coin-launches)
- [Flap.sh API on Robinhood](/docs/blockchain/robinhood/flap-sh-api)
+- [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) — bonding-curve launchpad, graduations, Uniswap v4 pools
+- [Pools.trade API on Robinhood](/docs/blockchain/robinhood/pools-trade-api)
- [Robinhood Transfers](/docs/blockchain/robinhood/robinhood-transfers)
- [WebSocket subscriptions](/docs/subscriptions/websockets/)
:::
diff --git a/docs/blockchain/robinhood/flap-sh-api.md b/docs/blockchain/robinhood/flap-sh-api.md
index f5cba5c9..ba97a155 100644
--- a/docs/blockchain/robinhood/flap-sh-api.md
+++ b/docs/blockchain/robinhood/flap-sh-api.md
@@ -38,20 +38,34 @@ Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorizat
:::tip Related docs
- [Robinhood Trades API](/docs/blockchain/robinhood/robinhood-trades)
- [Robinhood Meme Coin Launches API](/docs/blockchain/robinhood/robinhood-meme-coin-launches)
+- [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) — bonding-curve launchpad, graduations, Uniswap v4 pools
+- [Pools.trade API on Robinhood](/docs/blockchain/robinhood/pools-trade-api)
- [Robinhood Transfers](/docs/blockchain/robinhood/robinhood-transfers)
- [WebSocket subscriptions](/docs/subscriptions/websockets/)
:::
---
-## Flap.sh contract
+## Flap.sh contracts
+
+Flap.sh is **not a single contract**. A router takes the user's transaction, a factory mints the token, and a separate bonding-curve engine handles every buy and sell. Each role emits a different set of events from a different address, and more than one address is live in each role.
+
+| Role | Address | Emits |
+| --- | --- | --- |
+| **Launch router** (entry point) | `0x26605f322f7ff986f381bb9a6e3f5dab0beaeb09` | Nothing but `Upgraded` — it is an upgradeable proxy. It appears as **`Transaction.To`**, not as a log address. |
+| **Token factory** | `0x78eb178d94739b8adf199543924e47e9547c4924`
`0x549574ddf0d72928f2041c17daab2097dd46d815` | `TokenCreated`, `TokenCurveSetV2`, `FlapTokenTaxSet`, `TokenQuoteSet`, `TokenVersionSet`, `TokenDexPreferenceSet`, `TokenDexSupplyThreshSet`, `TokenMigratorSet` |
+| **Vanity token factory** | `0xa2fb48fefb15f777ec6ac3857164550ee93c1f25`
`0x52e3eb4f18dfb8215e17d27dee5718075f6c2639` | `VanityTokenCreated`, plus the same `TokenCreated` / `TokenCurveSetV2` pair |
+| **Bonding-curve engine** | `0x87a697bf7fbe28dc1eccc4d9b4bd1cfa76885f93`
`0x2a50c45b5cbb9e5c735f094c6386c39f8ffbc655` | `TokenBought`, `TokenSold`, `TaxV2OnBondingCurvePaid`, `FlapTokenProgressChanged`, `FlapTokenCirculatingSupplyChanged` |
| Field | Value |
| --- | --- |
-| **Flap.sh contract** | `0x26605f322f7ff986f381bb9a6e3f5dab0beaeb09` |
| **Launch mint `Amount`** | `1000000000` (1 billion, decimal-normalized) |
-The contract address is used as the `Log`/`LogHeader` address for events, as `Transaction.To` for mint transfers, and as the `Pair.Market.Program` for trades.
+:::caution Do not filter Flap.sh events by the router address
+`0x26605f32…` is the address users transact **to**, so it is correct for `Transaction.To` filters on mint transfers. It is **not** the `Log`/`LogHeader` address of any Flap.sh event — filtering logs by it returns nothing. Launches also arrive through several vanity routers ending in `…6666`, so `Transaction.To` alone will not capture every launch either.
+
+Match Flap.sh events by **event signature name** (as every query on this page does), and scope to a token with an `Arguments` filter. Pin to the factory and curve addresses above only when you specifically need to exclude another protocol that reuses a generic event name.
+:::
---
@@ -299,6 +313,10 @@ The bonding-curve engine emits its own decoded trade events on the Flap.sh contr
The most important lifecycle signal: a token completed its bonding curve and was **launched to a DEX**. The event returns the new `pool` address (use it with the [Robinhood Trades API](/docs/blockchain/robinhood/robinhood-trades) to follow post-graduation trading), the migrated token `amount`, and the `eth` seeded into the pool.
+:::caution `LaunchedToDEX` is not exclusive to Flap.sh
+Other Robinhood Chain launchpads emit an event with this same name. The query below returns graduations across all of them. To keep the feed Flap.sh-only, add a `LogHeader.Address` filter for the curve engines listed in [Flap.sh contracts](#flapsh-contracts), or check the graduated `token` against a Flap.sh `TokenCreated` / `TokenCurveSetV2` pair before acting on it.
+:::
+
```graphql
{
EVM(network: robinhood) {
@@ -521,7 +539,13 @@ Use the `FlapTokenProgressChanged` event. `newProgress` is scaled by `1e18`, so
### Why do the event queries filter by `Log.Signature.Name` instead of a contract address?
-Flap.sh emits the same event from several contracts (the bonding-curve engine, factories, and router). Filtering by the signature name captures the event across all of them. Add an `Arguments.includes` filter on the `token` argument to scope to one token.
+Flap.sh emits its events from several contracts — separate factories, vanity factories, and bonding-curve engines, each with more than one live address (see [Flap.sh contracts](#flapsh-contracts)). Filtering by the signature name captures the event across all of them. Add an `Arguments.includes` filter on the `token` argument to scope to one token.
+
+### Can a signature-name filter pick up other protocols?
+
+Yes, for generic names. `TokenCreated` in particular is emitted by several unrelated launchpads on Robinhood Chain, and `LaunchedToDEX` is emitted by protocols other than Flap.sh. Names carrying the `Flap` prefix — `FlapTokenProgressChanged`, `FlapTokenCirculatingSupplyChanged`, `FlapTokenTaxSet` — are unambiguous; the generic ones are not.
+
+If a feed must be Flap.sh-only, add a `LogHeader.Address` filter pinned to the factory and curve addresses in [Flap.sh contracts](#flapsh-contracts), or cross-check the token against a `TokenCurveSetV2` event, which the Flap.sh factories always emit alongside `TokenCreated`.
---
diff --git a/docs/blockchain/robinhood/index.md b/docs/blockchain/robinhood/index.md
new file mode 100644
index 00000000..c665323d
--- /dev/null
+++ b/docs/blockchain/robinhood/index.md
@@ -0,0 +1,92 @@
+---
+title: "Robinhood Chain API — Trades, Launchpads & Real-Time Streams"
+description: "Robinhood Chain APIs from Bitquery: query trades, transfers, balances, token holders, liquidity, events, and every major launchpad on chain 4663 with GraphQL and WebSocket streams."
+sidebar_position: 0
+keywords:
+ - Robinhood Chain API
+ - Robinhood Chain data API
+ - Robinhood Chain 4663
+ - Robinhood Chain GraphQL API
+ - Robinhood Chain launchpad API
+ - Robinhood Chain trades API
+ - Robinhood Chain WebSocket
+ - Robinhood Chain token launches
+ - Robinhood Chain bonding curve
+ - Robinhood Chain memecoin API
+ - Robinhood Chain holders API
+ - Robinhood Chain liquidity API
+ - how to index Robinhood Chain
+ - track new tokens Robinhood Chain
+ - Bitquery Robinhood API
+---
+
+# Robinhood Chain API — Trades, Launchpads & Real-Time Streams
+
+**Robinhood Chain** (`network: robinhood`, chain ID **4663**) is an EVM network. Bitquery indexes it end to end — blocks, transactions, internal calls, decoded events, token transfers, balances, DEX trades, and pool liquidity — and exposes all of it through one GraphQL endpoint, with any query convertible into a live WebSocket stream.
+
+This page is the index for that coverage. Start here if you are deciding **which cube answers your question**; go straight to a linked page once you know.
+
+:::note API Key Required
+To query or stream data outside the Bitquery IDE, you need an API access token.
+
+Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorization/how-to-generate/)
+:::
+
+---
+
+## Pick the right API
+
+| What you want | Use this | Page |
+| --- | --- | --- |
+| Swap prices, volume, OHLCV | `DEXTrades` / `Trading` cubes | [Robinhood Trades API](/docs/blockchain/robinhood/robinhood-trades) |
+| Who sent what to whom | `Transfers` | [Robinhood Transfers API](/docs/blockchain/robinhood/robinhood-transfers) |
+| A wallet's portfolio and history | `Balances` | [Robinhood Balances API](/docs/blockchain/robinhood/robinhood-balances-api) |
+| Holder counts and distribution | `TokenHolders` | [Robinhood Token Holders API](/docs/blockchain/robinhood/robinhood-token-holders-api) |
+| Circulating and total supply | `TokenSupply` | [Robinhood Token Supply API](/docs/blockchain/robinhood/robinhood-token-supply) |
+| Pool depth and per-swap slippage | `DEXPools` | [Robinhood Liquidity & Slippage API](/docs/blockchain/robinhood/robinhood-liquidity) |
+| Any decoded contract event | `Events` | [Robinhood Events API](/docs/blockchain/robinhood/robinhood-events-api) |
+| Method calls, internal calls, traces | `Calls` | [Robinhood Calls & Traces API](/docs/blockchain/robinhood/robinhood-calls-api) |
+| Raw transactions and receipts | `Transactions` | [Robinhood Transactions & Receipts API](/docs/blockchain/robinhood/robinhood-transactions-receipts-api) |
+| Perp positions and funding | Perp DEX cubes | [Lighter Perp DEX API](/docs/blockchain/robinhood/lighter-perp-dex-api) |
+
+---
+
+## Launchpads on Robinhood Chain {#launchpads}
+
+Robinhood Chain hosts several token launchpads. They are **not interchangeable** — each has its own factory contracts, its own event signatures, and a different relationship to the DEX it graduates into. A query written for one will silently return nothing on another.
+
+| Launchpad | Model | Guide |
+| --- | --- | --- |
+| **Pons** | Real bonding curve per token, graduates into a Uniswap v4 pool behind a Pons-owned hook | [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) |
+| **pools.trade** | Uniswap v4 pool from block one — no curve, no graduation event | [Pools.trade API on Robinhood](/docs/blockchain/robinhood/pools-trade-api) |
+| **Flap.sh** | Bonding curve with per-token tax and progress events, graduates to a DEX | [Flap.sh API on Robinhood](/docs/blockchain/robinhood/flap-sh-api) |
+| **Bags.fm** | Creator-fee launchpad | [Bags.fm API on Robinhood](/docs/blockchain/robinhood/bags-fm-api) |
+
+For a **cross-launchpad feed** — every new token on the network regardless of which factory minted it — use the [Robinhood Meme Coin Launches API](/docs/blockchain/robinhood/robinhood-meme-coin-launches), which covers the factories above plus the smaller ones.
+
+:::tip Choosing between a launchpad page and the cross-launchpad feed
+The cross-launchpad feed answers *"what launched?"*. The per-launchpad pages answer *"what is this token doing?"* — curve trades, graduation progress, fee splits, and pool state. Most production pipelines use the feed for discovery and one launchpad page for depth.
+:::
+
+---
+
+## Streaming
+
+Every query on every page below can run as a WebSocket subscription — swap `query` for `subscription` and keep the same selection set. For firehose-scale workloads, use Kafka instead of WebSocket.
+
+- [WebSocket subscriptions](/docs/subscriptions/websockets/)
+- [Authorizing a WebSocket connection](/docs/authorization/websocket/)
+- [Streams overview — WebSocket vs Kafka vs gRPC](/docs/streams/)
+
+---
+
+## Datasets and history
+
+Robinhood Chain queries accept a `dataset` argument that decides how far back you can reach and how fresh the tail is.
+
+- [`realtime`](/docs/graphql/dataset/realtime) — lowest latency, limited retention window
+- [`archive`](/docs/graphql/dataset/archive) — full history, higher latency
+- [`combined`](/docs/graphql/dataset/combined) — both, stitched
+- [Data coverage and retention](/docs/graphql/data-coverage-retention) — what each window actually holds
+
+If a query on recent data works but the same query returns nothing for older blocks, the dataset argument is almost always the reason.
diff --git a/docs/blockchain/robinhood/pons-api.md b/docs/blockchain/robinhood/pons-api.md
index c3f7655c..a4634175 100644
--- a/docs/blockchain/robinhood/pons-api.md
+++ b/docs/blockchain/robinhood/pons-api.md
@@ -1,5 +1,5 @@
---
-title: "Pons API — Bonding Curve Launchpad on Robinhood Chain"
+title: "Pons API — How to Track Pons Launches on Robinhood Chain"
description: "Pons API: track the Pons V2 bonding-curve launchpad on Robinhood Chain with Bitquery GraphQL. Query new launches, curve trades, snipe tax, graduations, and Uniswap v4 pools."
sidebar_position: 7
keywords:
@@ -39,7 +39,7 @@ keywords:
- Pons pool liquidity API
---
-# Pons API — Bonding Curve Launchpad on Robinhood Chain
+# Pons API — How to Track Pons Launches on Robinhood Chain
**[Pons](https://www.ponsfamily.com/launchpad)** is a token launchpad on **Robinhood Chain**. Its **V2** contracts run a real **bonding curve** that graduates into a **Uniswap v4 pool behind a Pons-owned hook**, and they let a creator quote a launch in **native ETH, USDG, or a tokenized stock** such as TSLA or NVDA. This guide shows how to track **new Pons launches**, **bonding-curve trades**, **snipe tax**, **graduations**, and **post-graduation prices and liquidity** with Bitquery GraphQL APIs, using the `EVM(network: robinhood)` and `Trading` cubes.
@@ -103,15 +103,17 @@ Pons and [pools.trade](/docs/blockchain/robinhood/pools-trade-api) are structura
| Quote assets | ETH, USDG, tokenized stocks | Mostly native ETH |
| Curve trades in trade cubes | **Yes**, as `pons_v2` (from 2026-08-14) | N/A — all trades are pool trades |
-:::caution Pons V1 is a different protocol and is still live
-`PonsLaunchFactory` at `0xa5aab3f0c6eeadf30ef1d3eb997108e976351feb` is the **V1** launchpad. It is **still deploying tokens**, it has **no bonding curve** (each token gets a Uniswap V3 pool at launch), and its events have **different signatures and different topic0 values** from V2:
+:::caution Pons V1 is a different protocol with different event signatures
+`PonsLaunchFactory` at `0xa5aab3f0c6eeadf30ef1d3eb997108e976351feb` is the **V1** launchpad. It has **no bonding curve** — each token gets a Uniswap V3 pool at launch — and its events carry **different signatures and different topic0 values** from V2:
```text
db51ea9ad51ab453a65a4cb7e60c3cb378c9501bb002609f8f97778fb6c4235a TokenLaunched(address,address,address,address,address,uint256,uint256,uint256,uint256,uint256)
1461370115e1c2be79cb529f8cfcbd11316e789d9c6099fc83417b0b4c48c62a TokenDeployed(address,address,address,address,uint256,uint256)
```
-Every query on this page targets **V2 only**. A "Pons launches" feed built from V2 alone silently misses all V1 activity — add the V1 factory address and its topic0s if you need both.
+Every query on this page targets **V2 only**. A "Pons launches" feed built from V2 alone will not include V1 launches — add the V1 factory address and its topic0s if you need both.
+
+V1 deployment activity varies over time and can stop entirely. Check whether it is currently producing launches before building against it — query `EVM(network: robinhood, dataset: realtime)` for logs from `0xa5aab3f0c6eeadf30ef1d3eb997108e976351feb` and see whether anything comes back. V1 pools are created by Robinhood Chain's **chain-wide Uniswap V3 pool factory**, which serves every V3 protocol on the network — a `PoolCreated` event from it is **not** on its own a Pons signal.
:::
---
@@ -163,6 +165,8 @@ On `archive` either one fails with `no candidate table can serve: [Log_Signature
## Contract addresses
+Pons V2 runs from a fixed set of contracts. The launch factory `0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e` emits every `TokenLaunched`, `LaunchSwept`, and `PoolGraduated`; the launch router `0xe33e9e479df8802cb0866d5d05258bec4cf62948` wraps launch-and-first-buy into one transaction; and the meme hook `0xe5e702641ea86f4ae6cc3cdaed2b886f976be044` sits on every graduated Uniswap v4 pool and is the field that tells a Pons pool apart from any other v4 pool on the network. Each launched token also gets **its own bonding-curve contract**, so curve trades are matched by event signature rather than by a single address.
+
| Role | Address | Notes |
| --- | --- | --- |
| **Launch factory** (`PonsV2LaunchFactory`) | `0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e` | Emits `TokenLaunched`, `LaunchSwept`, `PoolGraduated` |
@@ -241,6 +245,8 @@ Emitter: `0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e`
| `PoolGraduated(address,uint256,uint256,uint256)` | 1 | `0a44ef75df69c534f43cd6c1aa3ef8983065fe5fe79ef9e79f6494e6f258c259` |
| `GraduationTokensPermanentlyLocked(address,uint256)` | 1 | `a0a18f5bf205becee8b268d7cf69addab8548ae8ef361791464cf0e0e17c1361` |
| `CreatorFeeRecipientUpdated(address,address,address)` | 3 | `308c390ed1ab5873392818e036cabdf408bc8ad042fbaead3108954ff75ba980` |
+| `CreatorFeeRecipientChangeProposed(address,address,address,uint256,uint256)` | 3 | `7f119e44c84a715429bee60d30ad2e14afdef6c60bb1a7eaa01290ecf6d1b2e5` |
+| `BuybackEnabledUpdated(address,bool,address)` | 2 | `bd886f85b7731f66269f57707414d435bf8df930d3357a10becc48a69377f6d5` |
| `LaunchForceSwept(address)` *(rare)* | 1 | `52c1a28345695afc7f6b7629133124dec5d61ee745affd65e4fd2a776bc05840` |
| `LaunchGraduationRescued(address,address,uint256,uint256)` *(rare)* | 2 | `7017304fdd491394686dce984eac721f0be1a22228346210f16694772bde44ca` |
diff --git a/docs/blockchain/robinhood/pools-trade-api.md b/docs/blockchain/robinhood/pools-trade-api.md
index 8911c368..de3bc509 100644
--- a/docs/blockchain/robinhood/pools-trade-api.md
+++ b/docs/blockchain/robinhood/pools-trade-api.md
@@ -53,6 +53,7 @@ Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorizat
:::tip Related docs
- [Robinhood Trades API](/docs/blockchain/robinhood/robinhood-trades)
- [Robinhood Meme Coin Launches API](/docs/blockchain/robinhood/robinhood-meme-coin-launches)
+- [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) — bonding-curve launchpad, graduations, Uniswap v4 pools
- [Flap.sh API on Robinhood](/docs/blockchain/robinhood/flap-sh-api)
- [Bags.fm API on Robinhood](/docs/blockchain/robinhood/bags-fm-api)
- [Robinhood Token Holders API](/docs/blockchain/robinhood/robinhood-token-holders-api)
diff --git a/docs/blockchain/robinhood/robinhood-meme-coin-launches.md b/docs/blockchain/robinhood/robinhood-meme-coin-launches.md
index 45132676..f23bc0c8 100644
--- a/docs/blockchain/robinhood/robinhood-meme-coin-launches.md
+++ b/docs/blockchain/robinhood/robinhood-meme-coin-launches.md
@@ -40,6 +40,10 @@ Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorizat
:::tip Related docs
- [Robinhood Trades API](/docs/blockchain/robinhood/robinhood-trades)
- [Robinhood Transfers](/docs/blockchain/robinhood/robinhood-transfers)
+- [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) — bonding-curve launchpad, graduations, Uniswap v4 pools
+- [Pools.trade API on Robinhood](/docs/blockchain/robinhood/pools-trade-api)
+- [Flap.sh API on Robinhood](/docs/blockchain/robinhood/flap-sh-api)
+- [Bags.fm API on Robinhood](/docs/blockchain/robinhood/bags-fm-api)
- [WebSocket subscriptions](/docs/subscriptions/websockets/)
:::
diff --git a/docs/blockchain/robinhood/robinhood-token-holders-api.md b/docs/blockchain/robinhood/robinhood-token-holders-api.md
index 3776bac3..ba2df977 100644
--- a/docs/blockchain/robinhood/robinhood-token-holders-api.md
+++ b/docs/blockchain/robinhood/robinhood-token-holders-api.md
@@ -31,6 +31,7 @@ Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorizat
- [Robinhood Token Supply API](/docs/blockchain/robinhood/robinhood-token-supply/)
- [Robinhood Transfers](/docs/blockchain/robinhood/robinhood-transfers/) (live movement between holders)
- [Robinhood Trades](/docs/blockchain/robinhood/robinhood-trades/) (prices to value holdings)
+- [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) (holder distribution on a bonding-curve launchpad)
:::
**On this page:** [Concepts](#cube-concepts) · [Top holders](#top-holders-of-a-token) · [Holder count](#holder-count-of-a-token) · [Whale floors](#holders-above-a-balance-floor) · [Distribution](#holder-distribution-statistics) · [Dormant holders](#dormant-holders-diamond-hands) · [Stock tokens](#tokenized-stock-holders-nvda) · [ETH rich list](#native-eth-rich-list) · [Pagination](#paginating-full-holder-snapshots) · [FAQ](#faq)
diff --git a/docs/blockchain/robinhood/robinhood-trades.md b/docs/blockchain/robinhood/robinhood-trades.md
index 164ec732..ca7090a3 100644
--- a/docs/blockchain/robinhood/robinhood-trades.md
+++ b/docs/blockchain/robinhood/robinhood-trades.md
@@ -34,6 +34,8 @@ Follow the steps here: [How to generate Bitquery API token ➤](/docs/authorizat
- [Robinhood Liquidity & Slippage API](/docs/blockchain/robinhood/robinhood-liquidity/)
- [Robinhood Token Supply API](/docs/blockchain/robinhood/robinhood-token-supply/)
- [Robinhood Meme Coin Launches API](/docs/blockchain/robinhood/robinhood-meme-coin-launches/)
+- [Pons API on Robinhood](/docs/blockchain/robinhood/pons-api) — bonding-curve launchpad, graduations, Uniswap v4 pools
+- [Pools.trade API on Robinhood](/docs/blockchain/robinhood/pools-trade-api)
- [Trading data overview](/docs/trading/trading-data-overview/)
- [Crypto Trades API](/docs/trading/crypto-trades-api/trades-api/)
- [Crypto Price API](/docs/trading/crypto-price-api/introduction/)
diff --git a/sidebars.js b/sidebars.js
index 1f5c479f..8044880d 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -897,11 +897,8 @@ const sidebars = {
type: "category",
label: "Robinhood",
link: {
- type: "generated-index",
- slug: "/blockchain/robinhood",
- title: "Robinhood APIs",
- description:
- "APIs for accessing Robinhood trades, transfers, liquidity, slippage, events, balances, and meme coin token launches via Bitquery Trading and EVM APIs.",
+ type: "doc",
+ id: "blockchain/robinhood/index",
},
items: [
"blockchain/robinhood/robinhood-trades",