Skip to main content
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:

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 pseudomint So11111111111111111111111111111111111111111. 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:00 o 2025-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
Los formatos no válidos o no compatibles (01/10/2025, 2025-13-10, 2025-02-30) devuelven un error 400.
De forma predeterminada, las fechas y horas se interpretan como UTC. Una fecha y hora sin zona horaria, como 2025-01-10 19:20:00, se considera UTC, no tu hora local. Incluye un desfase de zona horaria explícito si quieres indicar otra cosa. El campo requested.time de la respuesta muestra los segundos de época calculados para que puedas verificar la interpretación.

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: true cuando 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 usa datetime, time tambié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 slot para obtener resultados deterministas. time e datetime se 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 mediante slot.
  • Analiza los saldos como cadenas. balance e balanceRaw son cadenas para conservar la precisión. Usa BigInt(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: null como cero. Un null asOf es 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/datetime depende de las horas de bloque informadas por los validadores, que pueden desviarse unos segundos. Usa slot para 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.