Lấy lịch sử ví
Truy xuất toàn bộ lịch sử giao dịch của ví Solana với tính năng phân trang.
curl --request GET \
--url 'https://api.helius.xyz/v1/wallet/{wallet}/history?api-key='import requests
url = "https://api.helius.xyz/v1/wallet/{wallet}/history?api-key="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.helius.xyz/v1/wallet/{wallet}/history?api-key="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"signature": "5wHu1qwD7Jsj3xqWjdSEJmYr3Q5f5RjXqjqQJ7jqEj7jqEj7jqEj7jqEj7jqEj7jqE",
"slot": 250000000,
"fee": 0.000005,
"feePayer": "GQUtvPx89ZNCwmvQqFmH59bJcU8fW8siETpaxod7Aydz",
"balanceChanges": [
{
"mint": "So11111111111111111111111111111111111111112",
"amount": -0.05,
"decimals": 9
}
],
"timestamp": 1704067200,
"error": null
}
],
"pagination": {
"hasMore": true,
"nextCursor": "5wHu1qwD7Jsj3xqWjdSEJmYr3Q5f5RjXqjqQJ7jqEj7jqEj7jqEj7jqEj7jqEj7jqE"
}
}{
"error": "Địa chỉ ví không hợp lệ",
"code": 400,
"details": "'invalid-address' không phải là địa chỉ Solana hợp lệ"
}{
"error": "Cần có khóa API. Truyền qua ?api-key=xxx hoặc tiêu đề X-Api-Key",
"code": 401
}{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Quá nhiều yêu cầu. Hãy thử lại sau 2 giây."
}{
"error": "INTERNAL_ERROR",
"code": 500,
"details": "Đã xảy ra lỗi không mong muốn. Vui lòng thử lại."
}Tham số yêu cầu
pagination.nextCursor từ phản hồi trước)SWAPTRANSFERNFT_SALENFT_BIDNFT_LISTINGNFT_MINTNFT_CANCEL_LISTINGTOKEN_MINTBURNCOMPRESSED_NFT_MINTCOMPRESSED_NFT_TRANSFERCOMPRESSED_NFT_BURNCREATE_STOREWHITELIST_CREATORADD_TO_WHITELISTREMOVE_FROM_WHITELISTAUCTION_MANAGER_CLAIM_BIDEMPTY_PAYMENT_ACCOUNTUPDATE_PRIMARY_SALE_METADATAADD_TOKEN_TO_VAULTACTIVATE_VAULTINIT_VAULTINIT_BANKINIT_STAKEMERGE_STAKESPLIT_STAKECREATE_AUCTION_MANAGERSTART_AUCTIONCREATE_AUCTION_MANAGER_V2UPDATE_EXTERNAL_PRICE_ACCOUNTEXECUTE_TRANSACTION
balanceChanged(khuyến nghị): Bao gồm các giao dịch đã thay đổi số dư token, đồng thời lọc thư rácnone: Chỉ các giao dịch tham chiếu trực tiếp đến víall: Tất cả giao dịch, bao gồm cả tài khoản token (có thể chứa thư rác)nonebalanceChangedall
Ủy quyền
Khóa API được truyền dưới dạng tham số truy vấn
Tham số đường dẫn
Địa chỉ ví Solana (được mã hóa base58)
^[1-9A-HJ-NP-Za-km-z]{32,44}$Tham số truy vấn
Số giao dịch tối đa trên mỗi yêu cầu
1 <= x <= 100Tải các giao dịch trước chữ ký này (dùng pagination.nextCursor từ phản hồi trước)
Tải các giao dịch sau chữ ký này (để phân trang theo thứ tự tăng dần)
Lọc theo loại giao dịch. Các loại khả dụng: SWAP, TRANSFER, NFT_SALE, NFT_BID, NFT_LISTING, NFT_MINT, NFT_CANCEL_LISTING, TOKEN_MINT, BURN, COMPRESSED_NFT_MINT, COMPRESSED_NFT_TRANSFER, COMPRESSED_NFT_BURN, CREATE_STORE, WHITELIST_CREATOR, ADD_TO_WHITELIST, REMOVE_FROM_WHITELIST, AUCTION_MANAGER_CLAIM_BID, EMPTY_PAYMENT_ACCOUNT, UPDATE_PRIMARY_SALE_METADATA, ADD_TOKEN_TO_VAULT, ACTIVATE_VAULT, INIT_VAULT, INIT_BANK, INIT_STAKE, MERGE_STAKE, SPLIT_STAKE, CREATE_AUCTION_MANAGER, START_AUCTION, CREATE_AUCTION_MANAGER_V2, UPDATE_EXTERNAL_PRICE_ACCOUNT, EXECUTE_TRANSACTION
SWAP, TRANSFER, NFT_SALE, NFT_BID, NFT_LISTING, NFT_MINT, NFT_CANCEL_LISTING, TOKEN_MINT, BURN, COMPRESSED_NFT_MINT, COMPRESSED_NFT_TRANSFER, COMPRESSED_NFT_BURN, CREATE_STORE, WHITELIST_CREATOR, ADD_TO_WHITELIST, REMOVE_FROM_WHITELIST, AUCTION_MANAGER_CLAIM_BID, EMPTY_PAYMENT_ACCOUNT, UPDATE_PRIMARY_SALE_METADATA, ADD_TOKEN_TO_VAULT, ACTIVATE_VAULT, INIT_VAULT, INIT_BANK, INIT_STAKE, MERGE_STAKE, SPLIT_STAKE, CREATE_AUCTION_MANAGER, START_AUCTION, CREATE_AUCTION_MANAGER_V2, UPDATE_EXTERNAL_PRICE_ACCOUNT, EXECUTE_TRANSACTION Lọc các giao dịch liên quan đến tài khoản token thuộc sở hữu của ví.
balanceChanged(khuyến nghị): Bao gồm giao dịch làm thay đổi số dư token và lọc thư rácnone: Chỉ các giao dịch tham chiếu trực tiếp đến víall: Tất cả giao dịch, bao gồm tài khoản token (có thể chứa thư rác)
none, balanceChanged, all Trang này có hữu ích không?
curl --request GET \
--url 'https://api.helius.xyz/v1/wallet/{wallet}/history?api-key='import requests
url = "https://api.helius.xyz/v1/wallet/{wallet}/history?api-key="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.helius.xyz/v1/wallet/{wallet}/history?api-key="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helius.xyz/v1/wallet/{wallet}/history?api-key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"signature": "5wHu1qwD7Jsj3xqWjdSEJmYr3Q5f5RjXqjqQJ7jqEj7jqEj7jqEj7jqEj7jqEj7jqE",
"slot": 250000000,
"fee": 0.000005,
"feePayer": "GQUtvPx89ZNCwmvQqFmH59bJcU8fW8siETpaxod7Aydz",
"balanceChanges": [
{
"mint": "So11111111111111111111111111111111111111112",
"amount": -0.05,
"decimals": 9
}
],
"timestamp": 1704067200,
"error": null
}
],
"pagination": {
"hasMore": true,
"nextCursor": "5wHu1qwD7Jsj3xqWjdSEJmYr3Q5f5RjXqjqQJ7jqEj7jqEj7jqEj7jqEj7jqEj7jqE"
}
}{
"error": "Địa chỉ ví không hợp lệ",
"code": 400,
"details": "'invalid-address' không phải là địa chỉ Solana hợp lệ"
}{
"error": "Cần có khóa API. Truyền qua ?api-key=xxx hoặc tiêu đề X-Api-Key",
"code": 401
}{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Quá nhiều yêu cầu. Hãy thử lại sau 2 giây."
}{
"error": "INTERNAL_ERROR",
"code": 500,
"details": "Đã xảy ra lỗi không mong muốn. Vui lòng thử lại."
}