# Launch lifecycle

> From a launcher creating a pool to a token with holders and liquidity — following a launch on Arc through the API.

Source: https://getchord.xyz/docs/recipes/launchpad-lifecycle/

**Goal**: a launch feed and the forensics behind it. On Arc most tokens are born through a launcher contract that creates a Uniswap V4 pool (often with a hook that runs a bonding curve) or a V3 / V2 pool with seeded liquidity. Chord indexes every one.

## 1. Who is launching

`GET /arc/launchers?hours=24` — every launcher seen in the window: name and site where the registry knows it (Uniswap Liquidity Launcher, aka.fun, Argus, Minara.fun, Rapid Launch, Sharc.fun, Bozo, …), the pool shapes it creates (hook, fee, tick spacing), pools per hour and day, distinct creators, and the 24-hour tape over its pools (swaps, volume, wallets, active pools). The [Launchpads](/docs/launchpads/) page lists the named ones.

## 2. What launched

`GET /arc/graduated?hours=48` — tokens whose first pool was created in the window, routable today and screened. Each row has `launchedAt`, `launcher`, `launcherName`, `creator`, `ageSec` and the full 24-hour token row. `screened` counts what the filters removed:

| Screen | Removes |
| --- | --- |
| `serial_creator` | one creator, eight or more pools in the window — a launch farm |
| `impostor` | a symbol copying a listed token |
| `no_sells` | buys only — a token that cannot be sold |
| `few_traders` | too few distinct wallets |
| `not_routable` | no pool the engine can quote |
| `no_trades` · `no_symbol` | nothing happened, or no name on-chain |

Show the counts. On a busy day the farm screen alone removes over a thousand pools.

## 3. Is it real

For one launch, three calls tell you most of what matters:

- `GET /arc/token/{address}/holders` — holder count, `heldByWalletsPct` (supply outside pools), `concentration.top10`, and the top rows tagged wallet / pool / burn. A launch where two wallets hold 90 % outside the pool is a different thing from one with 500 holders.
- `GET /lp/token/{address}/pools?chain=5042` — the pools with `score`, `reasons` and `launch`: how much of the liquidity the launcher supplied and whether it has started pulling (`launcherRemovedUsd`, `launcherLastRemoveTs`).
- `GET /tokens/stats/{address}` — buyers versus sellers per window, makers, and whether volume is many wallets or a few.

`flags` on the token row (`wash`, `impostor`) and `suspect` on its pools are the same checks, precomputed.

## 4. Trade it

A launch that is `routable` quotes like any token: `GET /quote?chain=5042&inputMint=0x3600…0000&outputMint={address}&amount=…`. Hooked V4 pools route only through hooks the engine has verified end to end; a pool on an unknown hook is `NO_POOLS` until it is. Expect high `priceImpactPct` on a fresh curve, and simulate before signing.

## 5. Watch it

- Prices: WebSocket `prices` (chain 5042) for the board, `trades` for the token.
- Liquidity: `GET /lp/events?chain=5042&token={address}` for adds and removes; `POST /lp/watch/pool` to get an alert when a pool drains.
- Attention: `GET /arc/attention` shows what people on Chord are watching.

## Ask instead

The analyst answers "is this launch a rug" in one call with the same data: `POST /v1/ask { "question": "launch forensics on 0x…", "stream": false }` with an API key. See [Ask agent API](/docs/agents/ask-api/).
