Skip to content

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

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.

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>
Terminal window
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
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"])
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.

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 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.

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

Section titled “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?

Section titled “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). This check measures slot inclusion from on-chain data instead.

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

Section titled “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.

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

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.