Справочник
Эндпоинт
GET /v1/wallets/{address}/history
Возвращает каждую сделку покупки и продажи для кошелька.
Запрос
curl -N "https://veltrabot.com/v1/wallets/{address}/history" \
-H "Authorization: Bearer YOUR_API_KEY"Ответ
Вызов по умолчанию передаёт историю в формате NDJSON, по одному JSON-объекту на строку. Пакеты сделок приходят как { "trades": [...] } в момент получения, поэтому крупный кошелёк постепенно заполняется по одному открытому соединению без дополнительных вызовов. Финальная строка { "complete": true, "tradeCount": ..., "wallet": ..., "firstTrade": ... } завершает поток.
{"trades":[{"signature":"43C6...aY1Ve2X","side":"sell","token":"Benny","tokenMint":"9xY2...pump","amountSol":0.0448,"amount":152340.12,"dex":"Pump.fun","blockTime":"2026-07-19T07:37:17+00:00"}, ...],"cursor":"8kQ2mZ...f0X"}
{"trades":[ ...ещё сделки по мере получения... ],"cursor":"pW3nZ2...Kd9"}
{"complete":true,"tradeCount":354,"wallet":"BtDyZ4EF...AAu9","firstTrade":"2026-07-12T07:39:02+00:00"}Каждая сделка содержит amountSol (стоимость сделки в SOL) и amount (перемещённое количество токена), а также tokenMint — адрес mint токена, стабильный ключ на токен, поскольку символы могут совпадать. Вместе они позволяют вычислить себестоимость и реализованный PnL. Любое из числовых полей может быть null, если его нельзя определить для конкретной сделки.
Читайте ответ построчно: накапливайте trades из каждой строки и остановитесь, дойдя до строки с complete. Большинство кошельков передаются полностью за один такой вызов. Кошелёк, слишком большой, чтобы завершиться примерно за 55 секунд, заканчивается с complete: false и cursor, а остальное продолжает загружаться в фоне.
Остановка и возобновление: закройте соединение в любой момент, чтобы прервать поток (например, через AbortController или Ctrl-C). Каждая пакетная строка содержит cursor, поэтому чтобы продолжить с того же места, просто начните новый запрос с ?cursor=, равным последнему полученному cursor (без limit), и поток возобновится ровно с этой точки.
Постраничная выдача
Предпочитаете отдельные страницы в едином JSON вместо потока? Передайте limit, и каждый вызов вернёт обычную JSON-страницу (не NDJSON): trades ограничен limit строками (без максимума) плюс cursor для следующей страницы. Отправьте cursor обратно ровно в том виде, в каком получили, чтобы получить следующую страницу; не пытайтесь его прочитать или изменить. Следуйте за ним, пока ответ не перестанет содержать cursor, что происходит только когда complete равно true.
Именно limit выбирает этот режим. Запрос с cursor, но без limit, вместо этого возобновляет поток NDJSON, поэтому включайте limit на каждой странице постраничного обхода.
limit ограничивает то, за что вы платите. Он ограничивает живую загрузку: ?limit=100 получает 100 сделок и засчитывает 100 в ваше потребление, вместо того чтобы заранее индексировать всю историю кошелька.
totalPages опускается, пока complete равно false. Поскольку limit останавливает загрузку раньше времени, истинный размер кошелька неизвестен до конца обхода, а tradeCount в середине означает «сделок получено на данный момент», а не общее число у кошелька. Вместо того чтобы сообщать неверное количество страниц, мы опускаем поле: следуйте за cursor, пока он не исчезнет. Как только complete станет true, и tradeCount, и totalPages описывают полную историю.
Каждая сделка засчитывается в потребление один раз. Если при постраничном обходе с cursor заново читаются уже полученные сделки, они не тарифицируются повторно.
curl "https://veltrabot.com/v1/wallets/{address}/history?limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
curl "https://veltrabot.com/v1/wallets/{address}/history?limit=100&cursor=8kQ2mZ3rV9...tLf0X" \
-H "Authorization: Bearer YOUR_API_KEY"Сети
Эндпоинт охватывает Solana, все основные EVM-сети и Tron. Добавьте ?chain=<slug>, чтобы выбрать одну из них; по умолчанию используется sol, поэтому существующие вызовы для Solana не меняются. Адрес кошелька проверяется на соответствие семейству адресов сети: base58 для Solana, 0x… для EVM-сетей и T… для Tron. В сетях, отличных от Solana, amountSol содержит количество нативного токена (ETH/BNB/TRX и других), а не SOL.
| Сеть | ?chain= | Адрес | Статус |
|---|---|---|---|
| Solana | sol | base58 | Доступна |
| Ethereum | eth | 0x… (EVM) | Доступна |
| Base | base | 0x… (EVM) | Доступна |
| BSC | bsc | 0x… (EVM) | Доступна |
| Tron | tron | T… (Tron) | Доступна |
| Hyperliquid | hyperevm | 0x… (EVM) | Доступна |
| Monad | monad | 0x… (EVM) | Доступна |
| Robinhood | robinhood | 0x… (EVM) | Доступна |