A Wallet API está em Beta. Os endpoints e formatos de resposta podem mudar.
Visão Geral
O endpoint de Saldo Histórico responde: qual era o saldo desta carteira de um token específico (ou SOL nativo) em um ponto específico no passado? Enquanto o endpoint Balances reporta as posições atuais,balance-at reporta as posições de acordo com qualquer timestamp, data ou slot.
Ele encontra a única transação mais recente no ou antes do ponto no tempo solicitado que envolveu a carteira e o token, em seguida, lê o saldo pós-transação da carteira a partir dessa transação. O saldo pós-transação de uma transação é o saldo mantido a partir dessa transação até a próxima, então “saldo a partir do tempo T” é o saldo pós-transação da última transação relevante com um tempo de bloco (ou slot) no ou antes de T. Para a carteira típica, isso é um valor exato, não uma estimativa.
- Tokens (SPL / Token-2022): lido dos saldos de tokens pós-transação, somados nas contas de token da carteira para essa emissão.
- SOL nativo: lido dos saldos pós-transação de lamports. Enderece o SOL nativo com o pseudo-mint
So11111111111111111111111111111111111111111.
Quando usar isso
Use a API de Saldo Histórico para:- Cálculo de PnL: determine as posições no início e no final de um período.
- Base de custo e lotes fiscais: reconstrua saldos em eventos de aquisição ou disposição.
- Resolução de disputas: comprove o que uma carteira possuía em um momento específico.
- Verificação de instantâneos: verifique o saldo de uma carteira em um lançamento aéreo ou instantâneo de governança.
- Contabilidade e auditorias: reconstrua o estado da carteira em limites de período.
Início Rápido
Saldo de token em um timestamp
Obtenha o saldo de USDC de uma carteira em um timestamp Unix:- JavaScript
- Python
- cURL
Saldo de token em uma data e hora
Passe uma data e hora legíveis em vez de um timestamp. Lembre-se de codificar o espaço em URL como%20:
Saldo de SOL nativo em um slot
Para o SOL nativo, use o pseudo-mintSo11111111111111111111111111111111111111111. Consultas baseadas em slots são exatas e determinísticas:
Parâmetros de consulta
Exatamente um de INLINE_CODE_PLACEHOLDER_bac8af8ba1420fb1_END,
datetime, ou slot deve ser fornecido. Fornecer zero ou mais de um retorna um erro 400.
Formatos de data e hora
Formatos aceitos:- Apenas data:
2025-01-10→ meia-noite UTC - Data + hora:
2025-01-10 19:20:00ou2025-01-10T19:20:00(segundos opcionais) → UTC - Com fuso horário explícito:
2025-01-10T19:20:00Z,2025-01-10T19:20:00+02:00,2025-01-10T19:20:00-05:00→ respeitado como fornecido
01/10/2025, 2025-13-10, 2025-02-30) retornam um erro 400.
Formato de resposta
Anotações de campo
wallet: eco do endereço da carteira consultada.mint: eco da emissão consultada (o pseudo-mint SOL quando nativo).isNative:truequando o resultado é SOL nativo.balance: quantidade legível em formato decimal string — uma string, não um número, para que saldos grandes não percam precisão. Zeros à direita são aparados ("1.5", não"1.500000").balanceRaw: quantidade exata na menor unidade (lamports para SOL), como uma string.decimals: decimais do token (9 para SOL).requested: eco da consulta. Quandodatetimeé usado, INLINE_CODE_PLACEHOLDER_bac8af8ba1420fb1_END também é populado com os segundos de época resolvidos, tornando a interpretação UTC visível.asOf: a transação da qual o saldo foi lido (slot,blockTime,signature).
asOf: null significa zero, não um erro. Quando a carteira não teve transações correspondentes no ou antes do ponto no tempo solicitado, o endpoint retorna 200 com balance: "0" e asOf: null — a carteira simplesmente não detinha o token até então.
Casos de uso
Mudança de saldo ao longo de um período
Compare as posições em dois pontos no tempo:Verificação de elegibilidade para instantâneo
Verifique se uma carteira possuía um token em um slot de instantâneo:Melhores práticas
- Use
slotpara resultados determinísticos. INLINE_CODE_PLACEHOLDER_bac8af8ba1420fb1_END edatetimesão resolvidos via tempos de bloco relatados por validadores, que podem ter um desvio de alguns segundos. Quando a reprodutibilidade exata é importante (instantâneos, auditorias), consulte porslot. - Analise saldos como strings.
balanceebalanceRawsão strings para preservar a precisão. UseBigInt(balanceRaw)(ou os inteiros de precisão arbitrária da sua linguagem) para aritmética — não converta para float. - Trate
asOf: nullcomo zero. UmnullasOfé uma resposta bem-sucedida, significando que a carteira não teve atividade para aquele token no ponto solicitado. Não trate isso como um erro. - Armazene em cache os resultados históricos. Um saldo em um ponto passado no tempo nunca muda. Armazene os resultados permanentemente para evitar chamadas de API repetidas.
Erros comuns
| Código de Erro | Descrição | Solução | |----------------||-------------|----------| | 400 | Faltandomint, emissão inválida, zero ou múltiplos de INLINE_CODE_PLACEHOLDER_bac8af8ba1420fb1_END/datetime/slot, ou datetime não analisável | Forneça uma emissão válida e exatamente um parâmetro ponto-no-tempo |
| 401 | Chave de API ausente ou inválida | Verifique se sua chave de API está incluída na solicitação |
| 404 | Endereço de carteira inválido no caminho | Verifique se o endereço é um endereço base58 Solana válido |
| 429 | Limite de taxa excedido | Reduza a frequência de solicitações ou atualize seu plano |
| 502 | Erro de RPC a montante ou tempo limite | Tente novamente com backoff exponencial |
Limitações
- Carteiras com várias contas de token podem subcontar. O saldo é lido da transação única mais recente correspondente. O caso comum — uma conta de token associada por emissão — é exato. Uma carteira que possui a mesma emissão em várias contas de token, onde a última transação tocou apenas algumas delas, pode ser subcontada.
- Precisão de SOL nativo para saldos muito grandes. Para saldos de SOL além de ~ 9.007.199 SOL (2⁵³ lamports), a precisão pode ser perdida a montante. Quantidades de token não são afetadas.
- Precisão de INLINE_CODE_PLACEHOLDER_bac8af8ba1420fb1_END/
datetimedepende dos tempos de bloco relatados pelos validadores, que podem ter um desvio de alguns segundos. Useslotpara resultados exatos e determinísticos. - Um token por solicitação. Não há forma de múltiplas emissões ou “todos os saldos no tempo T” em lote.
Próximos passos
Saldos de Carteira
Obtenha as atuais posses de token e NFT de uma carteira com valores em USD.
Visão Geral da Wallet API
Todos os endpoints da Wallet API e convenções compartilhadas.
Referência de API
Esquemas de solicitação e resposta para saldo histórico.