Получение баланса токена за прошлый период
Получите баланс кошелька для определенного токена или нативного SOL на момент указанной метки времени, даты и времени либо слота.
curl --request GET \
--url 'https://api.helius.xyz/v1/wallet/{wallet}/balance-at?api-key='import requests
url = "https://api.helius.xyz/v1/wallet/{wallet}/balance-at?api-key="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.helius.xyz/v1/wallet/{wallet}/balance-at?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}/balance-at?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}/balance-at?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}/balance-at?api-key=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helius.xyz/v1/wallet/{wallet}/balance-at?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{
"wallet": "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"isNative": false,
"balance": "284961463.392936",
"balanceRaw": "284961463392936",
"decimals": 6,
"requested": {
"time": 1736536800,
"slot": null,
"datetime": null
},
"asOf": {
"slot": 313000000,
"signature": "5Cyy7Mh9nVgFq3T8wJp2sKxR4dE6bA1uZoNcLrXmYqUpon",
"blockTime": 1736536794
}
}{
"error": "Необходимо указать ровно один из параметров: time, datetime или slot",
"code": 400
}{
"error": "Требуется ключ API. Передайте его через ?api-key=xxx или заголовок X-Api-Key",
"code": 401
}{
"error": "Недопустимый адрес кошелька",
"code": 400,
"details": "'invalid-address' не является допустимым адресом Solana"
}{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Слишком много запросов. Повторите попытку через 2 секунды."
}{
"error": "INTERNAL_ERROR",
"code": 500,
"details": "Произошла непредвиденная ошибка. Повторите попытку."
}{
"error": "UPSTREAM_ERROR",
"code": 502,
"details": "Сбой запроса к вышестоящему RPC. Повторите попытку."
}Параметры запроса
So11111111111111111111111111111111111111111.time, datetime или slot.2025-01-10 (полночь по UTC), 2025-01-10 19:20:00,
2025-01-10T19:20:00 (секунды необязательны) или формат с явным указанием часового пояса
(2025-01-10T19:20:00Z, ...+02:00). Интерпретируется как UTC, если явно не указан
часовой пояс. Укажите ровно один из параметров: time, datetime или slot.time, datetime или slot.Авторизации
Ключ API, передаваемый как параметр запроса
Параметры пути
Адрес кошелька Solana (в кодировке base58)
^[1-9A-HJ-NP-Za-km-z]{32,44}$Параметры запроса
Адрес минтинга токена. Для нативного SOL используйте So11111111111111111111111111111111111111111.
Временная метка Unix в секундах. Возвращает баланс на этот момент. Укажите ровно один из параметров: time, datetime или slot.
x >= 0Строка даты и времени. Допустимые форматы: 2025-01-10 (полночь по UTC), 2025-01-10 19:20:00,
2025-01-10T19:20:00 (секунды необязательны) или формат с явно указанным часовым поясом
(2025-01-10T19:20:00Z, ...+02:00). Если часовой пояс не указан явно, значение
интерпретируется как UTC. Укажите ровно один из параметров: time, datetime или slot.
Номер слота. Возвращает баланс на момент этого слота. Точный и детерминированный результат. Укажите ровно один из параметров: time, datetime или slot.
x >= 0Ответ
Исторический баланс успешно получен
Повтор запрошенного адреса кошелька
"5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9"
Повтор запрошенного минта (псевдо-минт SOL для нативного токена)
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
Является ли результат нативным SOL
false
Удобочитаемая сумма в виде десятичной строки (не числа, поэтому большие балансы не теряют точность). Завершающие нули удаляются.
"284961463.392936"
Точная сумма в наименьшей единице (лампортах для SOL) в виде строки
"284961463392936"
Количество десятичных разрядов токена (9 для SOL)
6
Повтор запроса. При использовании datetime поле time также заполняется разрешенным значением эпохи в секундах, чтобы была видна интерпретация UTC.
Show child attributes
Show child attributes
Транзакция, из которой был считан баланс. Имеет значение null, если у кошелька не было соответствующей транзакции в запрошенный момент или до него. Это означает, что баланс действительно равен 0 (к тому моменту кошелек еще не владел токеном), а не что произошла ошибка.
Show child attributes
Show child attributes
Была ли эта страница полезной?
curl --request GET \
--url 'https://api.helius.xyz/v1/wallet/{wallet}/balance-at?api-key='import requests
url = "https://api.helius.xyz/v1/wallet/{wallet}/balance-at?api-key="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.helius.xyz/v1/wallet/{wallet}/balance-at?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}/balance-at?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}/balance-at?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}/balance-at?api-key=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.helius.xyz/v1/wallet/{wallet}/balance-at?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{
"wallet": "5tzFkiKscXHK5ZXCGbXZxdw7gTjjD1mBwuoFbhUvuAi9",
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"isNative": false,
"balance": "284961463.392936",
"balanceRaw": "284961463392936",
"decimals": 6,
"requested": {
"time": 1736536800,
"slot": null,
"datetime": null
},
"asOf": {
"slot": 313000000,
"signature": "5Cyy7Mh9nVgFq3T8wJp2sKxR4dE6bA1uZoNcLrXmYqUpon",
"blockTime": 1736536794
}
}{
"error": "Необходимо указать ровно один из параметров: time, datetime или slot",
"code": 400
}{
"error": "Требуется ключ API. Передайте его через ?api-key=xxx или заголовок X-Api-Key",
"code": 401
}{
"error": "Недопустимый адрес кошелька",
"code": 400,
"details": "'invalid-address' не является допустимым адресом Solana"
}{
"error": "RATE_LIMIT_EXCEEDED",
"code": 429,
"details": "Слишком много запросов. Повторите попытку через 2 секунды."
}{
"error": "INTERNAL_ERROR",
"code": 500,
"details": "Произошла непредвиденная ошибка. Повторите попытку."
}{
"error": "UPSTREAM_ERROR",
"code": 502,
"details": "Сбой запроса к вышестоящему RPC. Повторите попытку."
}