More products
Public data and statistics
These routes need no key and no session. They are what you need for dashboards, aggregators, research and status pages.
#Protocol statistics
GET /v2/stats/daily returns totals, the last 24 hours, and one row per day:
| Metric | Value |
|---|---|
| Orders, all time | 44,207 |
| Completed orders, all time | 35,874 |
| Volume, all time (USD) | $1,329,602,700 |
| Orders, last 24 hours | 747 |
| Volume, last 24 hours (USD) | $34,700,689 |
Live from GET /v2/stats/daily, read when this page was built (4 Nov 2026, 08:24 UTC).
| Parameter | Use |
|---|---|
days |
1–365 trailing days, ending today (default 14). |
includeMetadata |
true adds metadata: asOf, the day basis (created_at_utc), which products are counted, and whether legacy orders are included. |
curl 'https://api-beta.wagyu.xyz/v2/stats/daily?days=2&includeMetadata=true'const res = await fetch('https://api-beta.wagyu.xyz/v2/stats/daily?days=2&includeMetadata=true'
);
const data = await res.json();import requests
res = requests.get('https://api-beta.wagyu.xyz/v2/stats/daily?days=2&includeMetadata=true', timeout=30)
data = res.json(){
"metadata": {
"asOf": "2026-11-04T08:24:47.251Z",
"dayBasis": "created_at_utc",
"currentProducts": [
"swap",
"bridge",
"coinflip"
],
"volumeIncludesLegacy": true,
"orderCountsIncludeLegacy": false,
"legacyAsOf": "2026-10-19T15:40:51.844Z",
"unvaluedLegacyCompletedOrders": 2044
},
"stats24h": {
"orders": 747,
"completed": 580,
"failed": 4,
"swaps": 565,
"bridge": 157,
"volumeUsd": 34700689.326225616
},
"totals": {
"orders": 44207,
"completed": 35874,
"failed": 221,
"swaps": 38423,
"bridge": 4496,
"volumeUsd": 1329602700.2141101
},
"daily": [
{
"orders": 216,
"completed": 165,
"failed": 2,
"swaps": 171,
"bridge": 44,
"volumeUsd": 8524549.7325113,
"date": "2026-11-04"
},
{
"orders": 749,
"completed": 574,
"failed": 2,
"swaps": 565,
"bridge": 148,
"volumeUsd": 30252326.080876924,
"date": "2026-11-03"
},
{
"orders": 553,
"completed": 359,
"failed": 5,
"swaps": 459,
"bridge": 61,
"volumeUsd": 9631538.066724319,
"date": "2026-11-02"
}
]
}Volume totals include legacy orders; order counts do not (metadata.volumeIncludesLegacy, metadata.orderCountsIncludeLegacy).
#How long a swap takes
GET /v2/swaps/route-stats gives the median time of completed swaps per route over the last 30 days. Use it to tell users how long a route usually takes, instead of guessing from elapsed time. The busiest routes right now:
| Route | Completed swaps (30 days) | Median time |
|---|---|---|
| ETH (Arbitrum) → ETH (Ethereum) | 1,423 | 70 s |
| XMR (Monero) → ETH (Ethereum) | 1,154 | 14 min |
| ETH (Ethereum) → XMR (Monero) | 1,065 | 2.3 min |
| XMR (Monero) → SOL (Solana) | 944 | 13 min |
| XMR (Monero) → USDT (Ethereum) | 492 | 13 min |
| SOL (Solana) → XMR (Monero) | 467 | 79 s |
| BTC (Bitcoin) → XMR (Monero) | 424 | 32 min |
| XMR (Monero) → USDC (Ethereum) | 326 | 14 min |
| USDC (Ethereum) → XMR (Monero) | 323 | 2.7 min |
| USDT (Ethereum) → XMR (Monero) | 302 | 2.3 min |
| ETH (Ethereum) → USDT (Ethereum) | 289 | 76 s |
| XMR (Monero) → BTC (Bitcoin) | 256 | 26 min |
| XMR (Monero) → DAI (Ethereum) | 215 | 16 min |
| ETH (Ethereum) → SOL (Solana) | 215 | 85 s |
Live from GET /v2/swaps/route-stats, read when this page was built (4 Nov 2026, 08:24 UTC).
- Routes are keyed by
fromChainId,fromToken,toChainIdandtoToken, with the same token values as quotes. medianSecondsisnullwhen a route has fewer thanminimumSamplesswaps in the window.- The window and its basis are in the response:
windowDays,windowStart,cohort,basis.
#Recent activity
| Route | Returns |
|---|---|
GET /v2/recent-swaps |
The latest completed swaps: assets, chains, atomic amounts with their decimals, timestamps. |
GET /v2/bridges/recent |
The latest completed bridge orders. |
curl 'https://api-beta.wagyu.xyz/v2/recent-swaps'const res = await fetch('https://api-beta.wagyu.xyz/v2/recent-swaps'
);
const data = await res.json();import requests
res = requests.get('https://api-beta.wagyu.xyz/v2/recent-swaps', timeout=30)
data = res.json()[
{
"orderId": "e04d5edad1e06c69",
"status": "completed",
"from": "XMR",
"fromChainId": 0,
"fromAmount": "19230000000000",
"fromTokenDecimals": 12,
"to": "USDT",
"toChainId": 728126428,
"toAmount": "12186867722",
"toTokenDecimals": 6,
"createdAt": "2026-11-04T08:17:53.988Z",
"completedAt": "2026-11-04T08:24:01.286Z"
},
{
"orderId": "727efc9c37970943",
"status": "completed",
"from": "SOL",
"fromChainId": 1151111081099710,
"fromAmount": "1000000000",
"fromTokenDecimals": 9,
"to": "XMR",
"toChainId": 0,
"toAmount": "137103960000",
"toTokenDecimals": 12,
"createdAt": "2026-11-04T08:14:17.835Z",
"completedAt": "2026-11-04T08:16:36.261Z"
}
]orderId in these lists is an opaque row key, stable across polls. It is not the order's id and opens nothing. Both lists also stream over WebSockets.
#Monero nodes
GET /v2/nodes lists recommended monerod endpoints for a self-custody wallet:
node.wagyu.xyz:18089
Live from GET /v2/nodes, read when this page was built (4 Nov 2026, 08:24 UTC).
#Points
| Route | Returns |
|---|---|
GET /v2/points/{address} |
One address's volume, points (wagyu), rank, trade count and the points formula. |
GET /v2/points/leaderboard |
The ranked leaderboard. limit is 1–200 (default 25). |