> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# describeProgram

> Enumera los nombres de instrucciones decodificadas, los eventos y los roles de cuenta de un programa para que puedas crear filtros de Parsed Streams que realmente coincidan.

El error más común con una API basada en filtros es usar un filtro válido que no coincide con nada, generalmente por haber adivinado el nombre de una instrucción o un rol. `describeProgram` evita esto al devolver los nombres exactos con los que compara el motor de coincidencias: los nombres de instrucciones decodificadas, los nombres de eventos y los roles de cuenta de cualquiera de los más de 3,600 programas del catálogo.

`describeProgram` es un método JSON-RPC que se envía mediante tu conexión WebSocket de Parsed Streams en `wss://fs-beta.helius-rpc.com/?api-key=<API_KEY>`, la misma conexión que usas para suscribirte.

Flujo recomendado: usa `describeProgram` para obtener los nombres exactos de las instrucciones y los roles, crea el filtro con esos nombres y luego [suscríbete](/docs/es/api-reference/parsed-streams/parsedtransactionsubscribe). La guía [Rastrear intercambios de Jupiter](/docs/es/parsed-streams/guides/track-jupiter-swaps) explica todo el proceso de principio a fin.

## Cuerpo

<ParamField body="params" type="array" required>
  <Expandable title="Query" defaultOpen>
    <ParamField body="program" type="string" required>
      La dirección de un programa (base58) o el nombre de un catálogo. **Prefiere la dirección**: los nombres pueden ser ambiguos entre distintas versiones del programa (más de una entrada del catálogo se llama `jupiter` y una búsqueda por nombre puede devolver la versión más antigua). Si buscas por nombre, verifica que `result.id` sea el programa al que quieres suscribirte.
    </ParamField>
  </Expandable>
</ParamField>

## Respuesta

<ResponseField name="id" type="string">
  La dirección del programa (base58).
</ResponseField>

<ResponseField name="name" type="string">
  El nombre del programa en el catálogo.
</ResponseField>

<ResponseField name="instructions" type="string[]">
  Los nombres de instrucciones decodificadas, exactamente como los compara el motor de coincidencias. Úsalos en el campo de filtro `instructionNames`.
</ResponseField>

<ResponseField name="events" type="string[]">
  Los nombres de eventos que el analizador reconoce para este programa.
</ResponseField>

<ResponseField name="roles" type="string[]">
  Los nombres de roles de cuenta decodificados. Úsalos como claves en el campo de filtro `accounts.roles`. Deben coincidir exactamente, sin normalización de mayúsculas y minúsculas.
</ResponseField>

<RequestExample>
  ```json Request theme={"system"}
  { "jsonrpc": "2.0", "id": 1, "method": "describeProgram", "params": [{ "program": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" }] }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={"system"}
  {
    "jsonrpc": "2.0", "id": 1,
    "result": {
      "id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
      "name": "jupiter",
      "instructions": ["route", "shared_accounts_route", "exact_out_route"],
      "events": ["SwapEvent"],
      "roles": ["user_transfer_authority", "destination_token_account"]
    }
  }
  ```
</ResponseExample>
