# Ascend swaps stream · API reference · Femtos

> Every swap of every Ascend pool, one message per block. WebSocket channel ascend.swaps on Elysium: parameters, response fields and a live call per layer.

- Base URL: `https://api.femtos.xyz/v1` (REST) · `wss://api.femtos.xyz/v1/ws` (WebSocket) · MCP: `https://api.femtos.xyz/mcp`
- Auth: `Authorization: Bearer $FEMTOS_KEY`. Free key: https://femtos.xyz/account/new (browser), or with
  no browser: `GET https://femtos.xyz/accounts/agent/challenge`, solve its proof of work, then `POST https://femtos.xyz/accounts/agent/signup`
  (https://femtos.xyz/agents.md#agent-onboarding)
- Decimals are exact strings, times Unix milliseconds, addresses lowercase `0x`
- Whole API in one file: https://femtos.xyz/agents.md · OpenAPI: https://api.femtos.xyz/v1/openapi.json · Index: https://femtos.xyz/llms.txt
- Page with live calls: https://femtos.xyz/reference/ws/ascend-swaps

WebSocket: get a ticket (`POST https://api.femtos.xyz/v1/ws-ticket` with your key), connect to `wss://api.femtos.xyz/v1/ws?ticket=$TICKET`, send the frame below; the first message has `"snapshot": true`. Details: https://femtos.xyz/agents.md#websocket

## Ascend swaps stream — WS `ascend.swaps`

Every swap of every Ascend pool, one message per block.

Layers: Elysium. Not on HyperCore: a channel of Elysium only. Not on HyperEVM: Ascend is an Elysium launchpad; HyperEVM launches (LiquidLaunch): hyperevm.launches.
Page with live calls: https://femtos.xyz/reference/ws/ascend-swaps?layer=elysium

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `token` | filter | (optional) | Launched token: 0x address |
| `launchpad` | filter | (optional) | Launchpad name, e.g. ascend |
| `side` | filter | `(empty)`, `buy`, `sell` | buy \| sell (of the launched token) |
| `trader` | filter | (optional) | Trader (tx.from): 0x address or a named wallet's handle |
| `min_usd` | filter | (optional) | Minimum USD value |

```json
{"op":"subscribe","channel":"ascend.swaps","filter":{}}
```

| Field | Type | Meaning |
|---|---|---|
| `snapshot: true` | AscendSwap[] | last 50 matching swaps, chronological |
| `data` | AscendSwap[] | the matching swaps of every Ascend pool in one block, pushed when the indexer commits the block: {token, symbol, pair, launchpad, side, tokens, quoteAmount, usd, priceUsd, mcapUsd, trader, t, …} |
| `data[].side` | buy \| sell | Side of the launched token |
| `data[].priceUsd` | decimal \| null | Token price after the swap, USD |
| `data[].mcapUsd` | decimal \| null | Market cap after the swap, USD |
| `data[].id` | string | <tx>:<log index>, same id as /api/trades and elysium.trades |
| `data[].block` | int | Block |
| `data[].tx` | string | Transaction hash (provenance) |
| `data[].logIndex` | int | Log index of the Swap event (provenance) |

## Related (Launches)

- [Launches](https://femtos.xyz/reference/launches.md) `GET /v1/launches`: Latest LiquidLaunch bonding-curve launches, newest first. (Elysium, HyperEVM)
- [Launches stream](https://femtos.xyz/reference/ws/launches.md) `WS elysium.launches · hyperevm.launches`: One message per new LiquidLaunch launch, the moment its block is indexed. (Elysium, HyperEVM)
- [Launch detail & signals](https://femtos.xyz/reference/signals.md) `GET /v1/launches/{token}`: Metrics, dev wallet, early buyers and risk signals of one launch. (Elysium, HyperEVM)
- [Launch holders](https://femtos.xyz/reference/launch-holders.md) `GET /v1/launches/{token}/holders`: Every holder of a launched token, tagged dev or early buyer, with concentration. (Elysium, HyperEVM)
- [Launch timeline](https://femtos.xyz/reference/timeline.md) `GET /v1/launches/{token}/timeline`: The whole life of a launch as ordered events with running state. (Elysium, HyperEVM)
- [New tokens](https://femtos.xyz/reference/new-tokens.md) `GET /v1/tokens/new`: Every ERC-20 created on HyperEVM, newest first, with its first pool and market figures. (Elysium, HyperEVM)
- [New tokens stream](https://femtos.xyz/reference/ws/new-tokens.md) `WS elysium.tokens.new · hyperevm.tokens.new`: One message per new token as its block is indexed, and another when its first pool opens. (Elysium, HyperEVM)
- [New pools](https://femtos.xyz/reference/new-pools.md) `GET /v1/pools/new`: Every new pair or pool on HyperEVM, from every discovered factory and PoolManager, newest first. (Elysium, HyperEVM)
- [New pools stream](https://femtos.xyz/reference/ws/new-pools.md) `WS elysium.pools.new · hyperevm.pools.new`: One message per new pool, the moment its block is indexed. (Elysium, HyperEVM)
- [Ascended transitions](https://femtos.xyz/reference/ws/ascend-status.md) `WS ascend.status`: A message when a launch crosses your thresholds, in the block where it happens. (Elysium)
- [Lifecycle stage changes](https://femtos.xyz/reference/ws/ascend-lifecycle.md) `WS ascend.lifecycle`: A message when a launched token reaches its next stage: listing desk, HyperEVM mirror, HyperCore spot, perp. (Elysium)

Every page: https://femtos.xyz/reference.md
