# Measure X-Trader copy-trade latency, slot inclusion and fees for your config

URL: https://docs.blizz.id/xtrader/copy-check/
Updated: 2026-10-17

The copy-trade check measures how your X-Trader copies landed against the wallet you copy. Send the X-Trader copy-trade JSON you already use plus your wallet address; the response shows, for every target buy in the last 72 hours, the target's slot and block position, your copy's slot, delay and rank, the price you paid relative to the target, and every buy that landed between the two with its priority fee, tip and trading bot. X-Trader Public API v1.0.0 exposes no latency or landing data, so this is measured from on-chain swaps.

The check is free, needs no key and no X-Trader token, and reads public Solana data only.

## Request

```
POST https://docs.blizz.id/api/v1/xtrader/copy-trade/check?wallet=<your wallet>[&hours=72][&detail=full]
Content-Type: application/json

<the same body you send to X-Trader POST /copy-trade/configs>
```

| Parameter | Where | Required | Meaning |
|---|---|---|---|
| `wallet` | query | yes | The wallet your X-Trader copy-trade buys from. Your copies are matched by this address. |
| body | JSON | yes | X-Trader `CopyTradeCreate` body. `target_wallet` and `linked_wallets` select the target; `config` fee, tip, slippage and filter fields are echoed back next to the measured values. |
| `hours` | query | no | Look-back window, 1 to 72. Default 72. |
| `detail` | query | no | `full` returns every trade. Default is compact: newest 30 copies with 5 buyers ahead each and newest 20 misses. |

Quick variant without a config:

```
GET https://docs.blizz.id/api/v1/xtrader/copy-trade/check?wallet=<your wallet>&target=<target wallet>
```

### curl

```bash
curl -s -X POST \
  "https://docs.blizz.id/api/v1/xtrader/copy-trade/check?wallet=YOUR_WALLET" \
  -H "Content-Type: application/json" \
  --data @copy-trade-config.json
```

### Python

```python
import json
import requests

config = json.load(open("copy-trade-config.json"))  # the body you send to X-Trader
r = requests.post(
    "https://docs.blizz.id/api/v1/xtrader/copy-trade/check",
    params={"wallet": "YOUR_WALLET", "hours": 72},
    json=config,
    timeout=90,
)
report = r.json()
s = report["summary"]
print(s["copied"], "of", s["target_buys"], "target buys copied")
print("slot delay median:", s["slot_delta"]["median"], "rank median:", s["rank"]["median"])
print("fees of buyers ahead:", s["fees_of_buyers_ahead"])
```

## Response

| Field | Meaning |
|---|---|
| `summary.target_buys`, `copied`, `missed` | Target buys in the window (newest 300), how many your wallet copied within 50 slots, how many it did not |
| `summary.slot_delta` | Slots between the target buy and your copy: median and p90 |
| `summary.rank` | Your position among all buys of the coin after the target: median and p90 |
| `summary.same_slot_as_target_pct` | Share of copies that landed in the target's slot |
| `summary.price_delta_pct` | Your price versus the target's price. Positive: you bought cheaper. Negative: you paid more |
| `summary.overpaid_vs_target_sol_total` | SOL spent above what the same tokens cost at the target's price, summed |
| `summary.your_fees` | Median priority fee and tip of your copies, SOL |
| `summary.fees_of_buyers_ahead` | Median and p90 priority fee and tip of every buy that landed between the target and you, plus the trading bots they used |
| `configured_fees` | Fee, tip and slippage settings read from your X-Trader config (`buy_config_universal` or `buy_config_tiers`, `min_trade_amount`, `max_trade_amount`, filters) |
| `trades[]` | Per target buy: `target` and `you` transactions (`slot`, `tx_index`, `dex`, `sol`, `priority_fee`, `tip`, `bot`, `signature`), `slot_delta`, `rank`, `price_delta_pct`, `overpaid_vs_target_sol`, and `ahead[]` with the same fields for every earlier buyer |
| `missed[]` | Target buys without a copy, with a reason from your config when one applies, and `bought_within_5_slots[]` |

`priority_fee` is the transaction fee (base plus priority) in SOL. `tip` is the tip paid to a landing service (Jito or another relay) in SOL. `bot` is the trading bot whose fee account the swap paid (axiom, photon, padre and others), empty when none. Compare `configured_fees` with `your_fees` and `fees_of_buyers_ahead` to see whether your `priority_fee`, `priority_tip`, `jito_tip` and `jito_priority_fee` settings are enough to land before other copiers of the same target.

## Errors and limits

| Status | `error` | Cause |
|---|---|---|
| 400 | `invalid_request` | Missing `wallet` or `target_wallet`, invalid address, body is not JSON |
| 413 | `body_too_large` | Body over 64 KiB |
| 429 | `rate_limit` | One check per 10 seconds per IP. Wait `Retry-After` seconds |
| 500 | `internal_error` | Indexer query failed; retry later |

A 72-hour check usually takes 2 to 10 seconds. Set the client timeout to at least 60 seconds.

## Data and privacy

Data comes from on-chain swaps indexed per slot and transaction index, the same data Blizz shows in its trade Check. Requests are stored with their configs and headers to improve the analysis; values of credential headers such as `Authorization` and `Cookie` are discarded and never stored. Do not send API tokens.

## FAQ

### How can I measure my X-Trader copy-trade latency?

POST the same JSON you send to X-Trader `POST /copy-trade/configs` to `https://docs.blizz.id/api/v1/xtrader/copy-trade/check?wallet=<your wallet>`. Each trade in the response shows the slot and block position of the target and of your copy, the slot delta and your rank among copies.

### Does X-Trader publish latency or landing rate?

X-Trader Public API v1.0.0 has no latency, landing-rate or execution-history endpoints (see the [overview](/xtrader/overview/)). This check measures slot inclusion from on-chain data instead.

### Who copied the target before me and what fees did they pay?

Each trade has an `ahead` list: every buy of the same coin between the target buy and your copy, with wallet, trading bot, priority fee, tip and price delta.

### Do I need an X-Trader API token?

No. The check uses only public on-chain data. Do not send your X-Trader token; credential headers are discarded.

### Which DEXes are covered?

All Solana venues in the swap index, including pump.fun, PumpSwap, Raydium LaunchLab, Raydium CPMM and Meteora. The `dex` field names the venue of each swap.
