La Wallet API está en fase beta. Los endpoints y formatos de respuesta pueden cambiar.
Descripción general
El endpoint Historical Balance responde: ¿cuál era el saldo de un token específico (o SOL nativo) de esta billetera en un momento específico del pasado? Mientras que el endpoint Balances informa las tenencias actuales,balance-at informa las tenencias correspondientes a cualquier marca de tiempo, fecha y hora o slot.
Busca la transacción más reciente, en el momento solicitado o antes de este, que involucró a la billetera y al token. Luego, obtiene de esa transacción el saldo de la billetera posterior a la transacción. El saldo posterior de una transacción es el que se mantuvo desde esa transacción hasta la siguiente. Por lo tanto, el «saldo en el momento T» es el saldo posterior de la última transacción relevante cuya hora de bloque (o slot) sea igual o anterior a T. Para una billetera típica, este es un valor exacto, no una estimación.
- Tokens (SPL / Token-2022): se obtiene de los saldos de tokens posteriores a la transacción, sumados entre las cuentas de tokens de la billetera para ese mint.
- SOL nativo: se obtiene de los saldos de lamports posteriores a la transacción. Especifica SOL nativo con el pseudomint
So11111111111111111111111111111111111111111.
Cuándo usarlo
Usa la API Historical Balance para lo siguiente:- Cálculo de PnL: determina las tenencias al inicio y al final de un período.
- Base de costo y lotes fiscales: reconstruye los saldos en eventos de adquisición o disposición.
- Resolución de disputas: demuestra qué tenía una billetera en un momento específico.
- Verificación de snapshots: comprueba el saldo de una billetera durante un airdrop o snapshot de gobernanza.
- Contabilidad y auditorías: reconstruye el estado de una billetera en los límites de un período.
Inicio rápido
Saldo de un token en una marca de tiempo
Obtén el saldo de USDC de una billetera en una marca de tiempo Unix:- JavaScript
- Python
- cURL
Saldo de un token en una fecha y hora
Envía una fecha y hora legible en lugar de una marca de tiempo. Recuerda codificar el espacio en la URL como%20:
Saldo de SOL nativo en un slot
Para SOL nativo, usa el pseudomintSo11111111111111111111111111111111111111111. Las consultas basadas en slots son exactas y deterministas:
Parámetros de consulta
Debes proporcionar exactamente uno de los siguientes:
time, datetime o slot. Si no proporcionas ninguno o proporcionas más de uno, se devuelve un error 400.
Formatos de fecha y hora
Formatos aceptados:- Solo fecha:
2025-01-10→ medianoche UTC - Fecha y hora:
2025-01-10 19:20:00o2025-01-10T19:20:00(los segundos son opcionales) → UTC - Con zona horaria explícita:
2025-01-10T19:20:00Z,2025-01-10T19:20:00+02:00,2025-01-10T19:20:00-05:00→ se respeta tal como se indica
01/10/2025, 2025-13-10, 2025-02-30) devuelven un error 400.
Formato de respuesta
Notas sobre los campos
wallet: copia de la dirección de billetera consultada.mint: copia del mint consultado (el pseudomint de SOL cuando es nativo).isNative:truecuando el resultado es SOL nativo.balance: cantidad legible como cadena decimal; es una cadena, no un número, para que los saldos grandes no pierdan precisión. Se eliminan los ceros finales ("1.5", no"1.500000").balanceRaw: cantidad exacta en la unidad más pequeña (lamports para SOL), como cadena.decimals: decimales del token (9 para SOL).requested: copia de la consulta. Cuando se usadatetime,timetambién se completa con los segundos de época calculados, lo que hace visible la interpretación UTC.asOf: la transacción de la que se obtuvo el saldo (slot,blockTime,signature).
asOf: null significa cero, no un error. Cuando la billetera no tenía ninguna transacción coincidente en el momento solicitado o antes, el endpoint devuelve 200 con balance: "0" e asOf: null. Esto simplemente significa que la billetera aún no tenía el token en ese momento.
Casos de uso
Cambio de saldo durante un período
Compara las tenencias en dos momentos:Verificación de elegibilidad para un snapshot
Verifica que una billetera tenía un token en el slot del snapshot:Prácticas recomendadas
- Usa
slotpara obtener resultados deterministas.timeedatetimese resuelven mediante las horas de bloque informadas por los validadores, que pueden desviarse unos segundos. Cuando sea importante poder reproducir los resultados de forma exacta (snapshots, auditorías), consulta medianteslot. - Analiza los saldos como cadenas.
balanceebalanceRawson cadenas para conservar la precisión. UsaBigInt(balanceRaw)(o los enteros de precisión arbitraria de tu lenguaje) para las operaciones aritméticas; no los conviertas a números de punto flotante. - Interpreta
asOf: nullcomo cero. UnnullasOfes una respuesta correcta que indica que la billetera no tenía actividad para ese token en el momento solicitado. No lo trates como un error. - Almacena en caché los resultados históricos. Un saldo en un momento del pasado nunca cambia. Almacena los resultados en caché de forma permanente para evitar llamadas repetidas a la API.
Errores comunes
Limitaciones
- Las billeteras con varias cuentas de tokens pueden mostrar un saldo inferior al real. El saldo se obtiene de la transacción coincidente más reciente. El caso habitual, una cuenta de token asociada por mint, es exacto. Si una billetera tiene el mismo mint en varias cuentas de tokens y la transacción más reciente solo afectó a algunas, el saldo puede ser inferior al real.
- Precisión de SOL nativo para saldos muy grandes. En los saldos de SOL superiores a ~9,007,199 SOL (2⁵³ lamports), podría perderse precisión en los servicios ascendentes. Esto no afecta a las cantidades de tokens.
- La precisión de
time/datetimedepende de las horas de bloque informadas por los validadores, que pueden desviarse unos segundos. Usaslotpara obtener resultados exactos y deterministas. - Un solo token por solicitud. No existe una forma por lotes para varios mints ni para «todos los saldos en el momento T».
Próximos pasos
Wallet Balances
Obtén las tenencias actuales de tokens y NFT de una billetera con sus valores en USD.
Wallet API Overview
Todos los endpoints de Wallet API y sus convenciones compartidas.
API Reference
Esquemas de solicitud y respuesta para el saldo histórico.