# Get route execution times

> Read 30-day measured execution medians by token and network

`GET /v2/swaps/route-stats`

Read 30-day measured execution medians by token and network.

**Authentication:** None. This route is public.

## Response

`200` returns an object with:

- `asOf` · string (date-time) · **required**
- `windowStart` · string (date-time) · **required**
- `windowDays` · `30` · **required**
- `cohort` · `"completed_at"` · **required**
- `basis` · `"projection_system_seconds"` · **required** — Same systemSeconds as dashboard performance: detected deposit to last recorded workflow step (workflow update when no step end exists). Excludes customer wait before detection; not wallet spendability.
- `minimumSamples` · `5` · **required**
- `routes` · array of object · **required**
  - `fromChainId` · integer · **required**
  - `fromToken` · string · **required**
  - `toChainId` · integer · **required**
  - `toToken` · string · **required**
  - `sampleCount` · integer · **required**
  - `medianSeconds` · number or null · **required**

Errors use the [standard error envelope](https://docs.wagyu.xyz/actions-and-retries.md#the-error-envelope): branch on `code`, never on the message.

## Example

<!-- curl -->
```bash
curl 'https://api-beta.wagyu.xyz/v2/swaps/route-stats'
```

<!-- JavaScript -->
```javascript
const res = await fetch('https://api-beta.wagyu.xyz/v2/swaps/route-stats'
);
const data = await res.json();
```

<!-- Python -->
```python
import requests

res = requests.get('https://api-beta.wagyu.xyz/v2/swaps/route-stats', timeout=30)
data = res.json()
```

<!-- Response · 200 · captured 4 Nov 2026, 08:24 UTC -->
```json
{
  "asOf": "2026-11-04T08:22:28.664Z",
  "windowStart": "2026-10-05T08:22:28.664Z",
  "windowDays": 30,
  "cohort": "completed_at",
  "basis": "projection_system_seconds",
  "minimumSamples": 5,
  "routes": [
    {
      "fromChainId": 0,
      "fromToken": "XMR",
      "toChainId": 1,
      "toToken": "0x0000000000000000000000000000000000000000",
      "sampleCount": 1154,
      "medianSeconds": 828.5999999999999
    },
    {
      "fromChainId": 0,
      "fromToken": "XMR",
      "toChainId": 1,
      "toToken": "0x6b175474e89094c44da98b954eedeac495271d0f",
      "sampleCount": 215,
      "medianSeconds": 935.5
    },
    {
      "fromChainId": 0,
      "fromToken": "XMR",
      "toChainId": 1,
      "toToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "sampleCount": 326,
      "medianSeconds": 863.45
    }
  ]
}
```

---
Source: https://docs.wagyu.xyz/api-reference/get-swap-route-stats · Built from the live Wagyu API on 2026-11-04.
