Obtener el historial de la billetera
Recupera el historial completo de transacciones de una billetera de Solana con paginación.
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": "Dirección de billetera no válida",
"code": 400,
"details": "'invalid-address' no es una dirección de Solana válida"
}{
"error": "Se requiere una clave de API. Envíala mediante ?api-key=xxx o el encabezado X-Api-Key",
"code": 401
}{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Demasiadas solicitudes. Vuelve a intentarlo después de 2 segundos."
}{
"error": "INTERNAL_ERROR",
"code": 500,
"details": "Ocurrió un error inesperado. Vuelve a intentarlo."
}Parámetros de la solicitud
pagination.nextCursor de la respuesta anterior)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(recomendado): Incluye las transacciones que cambiaron los saldos de tokens y filtra el spamnone: Solo transacciones que hacen referencia directa a la billeteraall: Todas las transacciones, incluidas las cuentas de tokens (puede incluir spam)nonebalanceChangedall
Autorizaciones
Clave de API enviada como parámetro de consulta
Parámetros de ruta
Dirección de billetera de Solana (codificada en base58)
^[1-9A-HJ-NP-Za-km-z]{32,44}$Parámetros de consulta
Cantidad máxima de transacciones por solicitud
1 <= x <= 100Obtén transacciones anteriores a esta firma (usa pagination.nextCursor de la respuesta anterior)
Obtén transacciones posteriores a esta firma (para la paginación en orden ascendente)
Filtra por tipo de transacción. Tipos disponibles: 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 Filtra las transacciones que involucran cuentas de tokens propiedad de la billetera.
balanceChanged(recomendado): incluye transacciones que cambiaron los saldos de tokens y filtra el spamnone: solo transacciones que hacen referencia directa a la billeteraall: todas las transacciones, incluidas las cuentas de tokens (puede incluir spam)
none, balanceChanged, all ¿Esta página le ayudó?
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": "Dirección de billetera no válida",
"code": 400,
"details": "'invalid-address' no es una dirección de Solana válida"
}{
"error": "Se requiere una clave de API. Envíala mediante ?api-key=xxx o el encabezado X-Api-Key",
"code": 401
}{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Demasiadas solicitudes. Vuelve a intentarlo después de 2 segundos."
}{
"error": "INTERNAL_ERROR",
"code": 500,
"details": "Ocurrió un error inesperado. Vuelve a intentarlo."
}