How to Pull a Wallet's Complete Trade History via API — Solana, EVM & Tron
A step-by-step walkthrough of the Veltra Trade History API: get a key, call the endpoint, read the response, and paginate through wallets with thousands of trades.
1. Get your free key
Sign up at /dashboard — 100,000 trades free, no card required.
2. Call the endpoint
One request, authenticated with a bearer key. -N keeps curl from buffering so you see each batch as it streams in:
curl -N https://veltrabot.com/v1/wallets/{address}/history \
-H "Authorization: Bearer YOUR_API_KEY"3. Read the response
The default endpoint streams NDJSON: one line per batch of trades as they're fetched, so a large wallet arrives gradually in a single call — no follow-up requests. The final line carries complete: true and cursor: null, meaning every trade the wallet has ever made came back:
# streaming NDJSON — one line per batch as trades are fetched
{ "trades": [
{
"signature": "43C68awy5pN3ze...aY1Ve2X",
"side": "sell",
"token": "Benny",
"tokenMint": "9xY2...pump",
"amountSol": 0.044850796,
"amount": 152340.12,
"dex": "Pump.fun",
"blockTime": "2026-07-19T07:37:17+00:00"
}
],
"cursor": "8kQ2mZ...f0X" }
# ...more batch lines...
# terminal line — no cursor means the whole history came back
{ "complete": true, "tradeCount": 354, "wallet": "BtDy...AAu9", "firstTrade": "2026-07-12T07:39:02+00:00" }4. Resume or paginate large wallets
Every stream line includes a cursor. If a stream stops early (a very large wallet ends with complete: false), reconnect with ?cursor= to pick up where you left off. Prefer discrete pages instead of a stream? Add ?limit= to get single-JSON pages with the same cursor:
curl "https://veltrabot.com/v1/wallets/{address}/history?limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
# an opaque cursor is included while there's more to fetch
{ "tradeCount": 354, "trades": [ /* 100 trades */ ], "cursor": "8kQ2mZ...f0X" }
# fetch the next page; the final page has "complete":true and no cursor
curl "https://veltrabot.com/v1/wallets/{address}/history?limit=100&cursor=8kQ2mZ...f0X" \
-H "Authorization: Bearer YOUR_API_KEY"Full reference (auth, errors, rate limits, pricing) is in the docs. Try it on your own wallet at the dashboard.