# New tokens · Elysium API · Femtos

> Every ERC-20 created on Elysium, newest first, with its first pool and market figures.

- 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/accounts/ (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/elysium/new-tokens

## New tokens — GET `/v1/tokens/new`

Every ERC-20 created on Elysium, newest first, with its first pool and market figures.

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `layer` | query | `elysium` | EVM layer |
| `limit` | query | `20` | Rows |
| `hasPool` | query | `(empty)`, `true`, `false` | true: tokens with a pool; false: without |
| `minLiquidityUsd` | query | (optional) | Minimum liquidityUsd |
| `minHolders` | query | (optional) | Minimum holders |
| `launchpad` | query | `(empty)`, `any`, `none`, `ascend` | ascend, liquidlaunch (a launchpad name), none (no launchpad), any (a launchpad), or a launchpad 0x address |
| `creator` | query | (optional) | Created by this wallet (0x) |
| `includeSpam` | query | `(empty)`, `true` | Show spam tokens (tokens.spam: homoglyph, impostor, phishing name, fake transfers…) flagged spam / spamReason; left out of the list by default |
| `security` | query | `(empty)`, `summary` | summary: each row gets `security` = {verdict, reasons (3), asOf, height} of GET /api/tokens/{address}/security when a report is cached (< 10 min), else null (then computed in the background: ask again) |
| `cursor` | query | (optional) | Next page: `next_cursor` of the previous answer |

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/tokens/new?layer=elysium&limit=20"
```

| Field | Type | Meaning |
|---|---|---|
| `layer` | string | Layer |
| `tokens[]` | object | Newest first: {seq, address, symbol, name, decimals, totalSupply, createdAt, block, tx, logIndex, creationBasis, creator, …} |
| `next_cursor` | string \| null | Opaque cursor of the next page: pass it as `cursor`, unchanged. null on the last page |
| `scanned` | int | Tokens examined for this page |
| `asOf` | ms | Time of `height` |
| `height` | int | Head block of the layer the answer is cut at: every event up to it is counted |
| `syncing` | true | Present while the layer syncs: data only up to dataUntil |
| `dataUntil` | ms | Indexed head time while the layer syncs |

Next page: `cursor` = the `next_cursor` of the previous answer (https://femtos.xyz/agents.md#pagination).

## Related (Launches)

- [New launches](https://femtos.xyz/elysium/launches.md): Latest Ascend launches, newest first, with live market figures.
- [Launches stream](https://femtos.xyz/elysium/ws-launches.md): One message per new launch, the moment its block is indexed.
- [New pools](https://femtos.xyz/elysium/new-pools.md): Every new pair or pool on Elysium, from every discovered factory and PoolManager, newest first.
- [New tokens stream](https://femtos.xyz/elysium/ws-new-tokens.md): One message per new token as its block is indexed, and another when its first pool opens.
- [New pools stream](https://femtos.xyz/elysium/ws-new-pools.md): One message per new pool, the moment its block is indexed.
- [Ascend swaps stream](https://femtos.xyz/elysium/ws-ascend-swaps.md): Every swap of every Ascend pool, one message per block.
- [Ascended transitions](https://femtos.xyz/elysium/ws-ascend-status.md): A message when a launch crosses your thresholds, in the block where it happens.

All Elysium endpoints: https://femtos.xyz/elysium.md
