¿Por qué migrar?
La API Enhanced Transactions es un producto heredado en modo de mantenimiento: sigue funcionando, pero no recibe nuevos tipos de analizadores ni funcionalidades. Su sucesor es Parsed Events, que decodifica instrucciones mediante el catálogo de IDL que también impulsa Parsed Streams. La diferencia está en cómo se decodifican las transacciones. Enhanced Transactions clasifica una transacción en uno de una lista fija de tipos de eventos (TRANSFER, SWAP, NFT_SALE, …) y devuelve un resumen predefinido para los tipos que conoce. Parsed Events decodifica cada instrucción con la IDL propia del programa —más de 3,600 programas— en argumentos y cuentas con nombre, y crea el resumen a partir de estos datos:
Parsed Events está en beta abierta en los planes de pago. La API aún puede cambiar antes de alcanzar la disponibilidad general. Mientras tanto, Enhanced Transactions seguirá funcionando, por lo que puedes migrar a tu propio ritmo.
Correspondencia de endpoints
Ambos métodos de Parsed Events son solicitudesPOST a https://mainnet.helius-rpc.com y se autentican con el mismo parámetro de consulta api-key que ya usas:
El endpoint del historial mueve todas las entradas de los parámetros de la cadena de consulta a un cuerpo JSON. Los cuerpos de las solicitudes rechazan los campos desconocidos, por lo que los errores tipográficos producen un error visible en lugar de ignorarse silenciosamente.
Antes y después
La misma tarea —obtener el historial analizado de una billetera— en ambas API:Correspondencia de parámetros
Analizar transacciones
POST /v0/transactions → POST /v1/parsed-events/transactions
Nuevas opciones sin equivalente anterior:
includeRawTransaction devuelve la carga útil original de la transacción de Solana junto con el resultado analizado.
Historial de transacciones
GET /v0/addresses/{address}/transactions → POST /v1/parsed-events/transaction-history. Cada parámetro de consulta se convierte en un campo del cuerpo JSON:
Durante el proceso cambian tres valores predeterminados:
limittiene un valor predeterminado de 100 en lugar de 10.commitmenttiene como valor predeterminadoconfirmeden lugar definalized;processedno es compatible.sortOrderconserva los mismos valoresasc/desc, condesccomo valor predeterminado.
paginationToken de la respuesta anterior en lugar de beforeSignature. Consulta Simplifica la paginación más adelante.
El parámetro anterior type no tiene un equivalente en Parsed Events: no hay un filtro de tipo de transacción en el servidor. Filtra en el cliente por parsed.summary.type (swap, transfer, add_liquidity, …) o por las propias instrucciones decodificadas, lo que ofrece más precisión que los tipos fijos anteriores. Para feeds en tiempo real específicos por tipo, Parsed Streams filtra en el servidor a nivel de instrucción.
Correspondencia de campos de respuesta
Enhanced Transactions devuelve un arreglo plano de transacciones enriquecidas. Parsed Events envuelve cada resultado en una estructura —{ signature, parserStatus, parsed }— y las respuestas del historial envuelven el arreglo en un objeto de página con paginationToken. Los campos analizados se corresponden de la siguiente manera:
Y el cambio más importante es un campo nuevo sin equivalente anterior:
parsed.instructions[] contiene todas las instrucciones de nivel superior e internas en orden de ejecución, con decoded.args y decoded.accounts nombrados a partir de la IDL del programa. Mientras que Enhanced Transactions te proporcionaba un resumen de evento por transacción, Parsed Events te proporciona el resumen y la lista completa de instrucciones decodificadas. Consulta Respuesta analizada para conocer todos los campos.
Pasos de migración
1
Swap the endpoints
Dirige las llamadas de Parse Transactions a
POST /v1/parsed-events/transactions y las llamadas del historial a POST /v1/parsed-events/transaction-history. Usa el mismo host y el mismo parámetro de consulta api-key. Las solicitudes del historial cambian de GET con parámetros de consulta a POST con un cuerpo JSON. Mueve cada parámetro según la correspondencia anterior.2
Update the response handling
Desenvuelve la nueva estructura: comprueba
parserStatus === "OK" y luego lee los campos de parsed en lugar del nivel superior. Cambia el nombre de timestamp a blockTime, lee description y type desde summary (comprobando que no sea null) y divide rawTokenAmount entre 10^decimals donde el código anterior leía tokenAmount.3
Replace type filtering
Donde el código anterior pasaba
type=..., filtra los elementos devueltos en el cliente por parsed.summary.type o por parsed.instructions[]. Por ejemplo, “instrucciones donde programId es Jupiter y instructionName es route” reemplaza type=SWAP con algo que realmente puedes verificar. Si el filtro de tipo servía para impulsar un feed en tiempo real, mueve ese consumidor a Parsed Streams, que filtra en el servidor a nivel de instrucción.4
Simplify pagination
Reemplaza el bucle del cursor El bucle termina cuando falta
before-signature por paginationToken:paginationToken. Los errores anteriores de búsqueda en tiempo de ejecución (“No se pudieron encontrar eventos dentro del período de búsqueda”) y su manejo de firmas de continuación desaparecen por completo. Elimina ese código.5
Verify against the old output
Para una dirección de muestra, obtén la misma página de ambas API y compara los conjuntos de firmas, las comisiones y los importes de las transferencias. Luego, implementa los cambios y elimina la ruta de código anterior. Enhanced Transactions seguirá funcionando durante la migración: no hay una fecha límite obligatoria.
Diferencias de comportamiento que debes revisar
- Valores predeterminados del nivel de compromiso. El historial usa
confirmedde forma predeterminada, mientras que el endpoint anterior usabafinalized. Pasacommitment: "finalized"explícitamente si tu canalización depende de la finalidad.processedno es compatible. - Errores por elemento. Una firma que no puede analizarse ya no hace que falle la solicitud. Se devuelve como un elemento con
parserStatus: "ERROR"y unparserError. Maneja el error por elemento en lugar de hacerlo por solicitud. - Cobertura del resumen.
summaryesnullpara las transacciones sin una acción reconocida a nivel de transacción. La API anterior devolvíatype: "UNKNOWN"en ese caso. La nueva API sigue proporcionándote todas las instrucciones decodificadas para que puedas trabajar con ellas. - Acceso. Parsed Events está en beta abierta en los planes de pago y la API aún puede cambiar antes de alcanzar la disponibilidad general.
Deja que un agente de IA realice la migración
Si usas Claude Code, Cursor u otro agente de programación, pega el siguiente prompt en la sesión del agente de tu repositorio. Este busca los lugares donde se llama a Enhanced Transactions y los reescribe.Próximos pasos
Parsed Events Quickstart
Analiza tu primera transacción, obtén el historial de una dirección y pagina los resultados.
Parsed Response
Referencia de campos para transacciones, transferencias e instrucciones analizadas.
Parsed Streams
La misma decodificación en tiempo real mediante WebSocket, con filtrado en el servidor.
getTransactionsForAddress
Historial de transacciones sin procesar con compatibilidad con cuentas de tokens y filtros en el servidor.