REST
Token Trades
Trade history for a single mint (either swap leg — from or to), newest first. Includes token↔token swaps when present. Retention-clamped; no backfill of pre-persistence gaps. Optional source and solOnly filters. Same SwapV1 shape as the trades stream.
GET
/v1/tokens/:mint/tradesSee also: Stream equivalent
Request
curl "https://api.anaxer.com/v1/tokens/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm/trades?source=pump_fun&solOnly=true&limit=50&from=1751000000000&to=1751008869000" \
-H "Authorization: Bearer YOUR_KEY"Path parameters
| Name | Type | Description |
|---|---|---|
| mint | string | Subject token mint address. Quote assets (SOL, USDC, USDT) are rejected with 400 invalid_request — use metadata or price for those mints; use solOnly=true for SOL-paired history of a non-quote token. Example: EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm |
Query parameters
Full venue catalog: Sources. REST list filters use the singular source query param (one venue). Streams use the sources array.
| Name | Type | Description |
|---|---|---|
| source | string | Filter by a single venue slug. Supported: pump_fun, pump_amm, raydium_launchlab, raydium_cpmm, raydium_clmm, raydium_v4, meteora_dbc, meteora_damm_v2, meteora_dlmm, meteora_pools, orca_whirlpool, pancakeswap, bonkfun. Unknown values return 400. Example: pump_fun |
| solOnly | boolean | When true, keep only swaps where wrapped SOL is the other leg. Omit or false = no constraint (includes token↔token history). Load-bearing once non-SOL pairs are persisted. Example: true |
| limit | number | Maximum number of results (default 50, max 200). Example: 50 |
| cursor | string | Opaque keyset cursor from the previous response's next field. Endpoint-scoped — do not reuse across endpoints. |
| from | string | Start of the time window (ISO-8601 or unix ms). Clamped to the endpoint's retention window. Example: 1751000000000 |
| to | string | End of the time window (ISO-8601 or unix ms). Example: 1751008869000 |
Response
Example response body:
{
"data": [
{
"type": "swap",
"signature": "5xY8kR3nQmZ2vLdE9fWqT1sN4pC7hUoB6yA8jK2mVxRt3wDzS9pQeH4LcM7nJb1FgKtR5zXvY2mNc8h",
"slot": 309812501,
"timestamp": 1751008869000,
"wallet": "5FHwkW5742VKq9W8pN3mL7jR2sT6cX4bY1zD8gH9K2pQnM",
"source": "pump_fun",
"volumeUsd": 187.5,
"swap": {
"from": {
"mint": "So11111111111111111111111111111111111111112",
"amount": "1250000000",
"uiAmount": 1.25,
"decimals": 9
},
"to": {
"mint": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm",
"amount": "842110000000",
"uiAmount": 842110,
"decimals": 6
}
}
}
],
"next": null,
"window": { "from": 1751000000000, "to": 1751008869000 }
}Fields
Fields of each item in the data array (list responses wrap items with next and window).
| Name | Type | Description |
|---|---|---|
| type | string | Always "swap". |
| signature | string | Swap transaction signature. |
| slot | number | Solana slot the event landed in. Use for ordering and gap recovery. |
| timestamp | number | Event time as a Unix epoch millisecond value. |
| wallet | string | Wallet that made the swap. |
| source | string | DEX/venue. See Sources. |
| volumeUsd | number | Trade size in USD. |
| swap | object | { from, to }, each with mint, amount (raw string), uiAmount (number), decimals. |