Skip to main content

¿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 solicitudes POST 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:
  • limit tiene un valor predeterminado de 100 en lugar de 10.
  • commitment tiene como valor predeterminado confirmed en lugar de finalized; processed no es compatible.
  • sortOrder conserva los mismos valores asc/desc, con desc como valor predeterminado.
Para la paginación, usa preferentemente 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 before-signature por paginationToken:
El bucle termina cuando falta 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 confirmed de forma predeterminada, mientras que el endpoint anterior usaba finalized. Pasa commitment: "finalized" explícitamente si tu canalización depende de la finalidad. processed no 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 un parserError. Maneja el error por elemento en lugar de hacerlo por solicitud.
  • Cobertura del resumen. summary es null para las transacciones sin una acción reconocida a nivel de transacción. La API anterior devolvía type: "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.
El prompt es autosuficiente: el agente no necesita acceder a esta página. Para consultar documentación preparada para agentes, búsquedas MCP y habilidades, consulta Helius para agentes de IA.

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.