> ## 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

> Listez les noms d'instructions décodés, les événements, et les rôles de compte d'un programme pour créer des filtres Parsed Streams qui correspondent réellement.

L'échec le plus courant avec une API basée sur des filtres est un filtre valide mais qui ne correspond à rien, généralement un nom d'instruction ou de rôle deviné. `describeProgram` prévient cela en renvoyant les noms exacts auxquels le comparateur se réfère — les noms d'instructions décodés, les noms d'événements, et les rôles de compte pour n'importe lequel des 3 600+ programmes du catalogue.

`describeProgram` est une méthode JSON-RPC envoyée via votre connexion WebSocket Parsed Streams à `wss://fs-beta.helius-rpc.com/?api-key=<API_KEY>`, la même connexion à laquelle vous vous abonnez.

Flux recommandé : `describeProgram` pour obtenir les noms exacts d'instructions et de rôles, construire le filtre avec ces noms, puis [abonnez-vous](/docs/fr/api-reference/parsed-streams/parsedtransactionsubscribe). Le guide [Suivi des échanges Jupiter](/docs/fr/parsed-streams/guides/track-jupiter-swaps) explique cela de bout en bout.

## Corps

<ParamField body="params" type="array" required>
  <Expandable title="Requête" defaultOpen>
    <ParamField body="program" type="string" required>
      Une adresse de programme (base58) ou un nom de catalogue. **Préférez l'adresse** : les noms peuvent être ambigus entre différentes versions de programme (plus d'une entrée de catalogue est nommée `jupiter`, et une recherche de nom peut aboutir à la version plus ancienne). Si vous effectuez une recherche par nom, assurez-vous que `result.id` est bien le programme auquel vous souhaitez vous abonner.
    </ParamField>
  </Expandable>
</ParamField>

## Réponse

<ResponseField name="id" type="string">
  L'adresse du programme (base58).
</ResponseField>

<ResponseField name="name" type="string">
  Le nom de catalogue du programme.
</ResponseField>

<ResponseField name="instructions" type="string[]">
  Noms d'instructions décodés, exactement comme le comparateur les confronte. Utilisez-les dans le champ de filtre `instructionNames`.
</ResponseField>

<ResponseField name="events" type="string[]">
  Noms d'événements que l'analyseur reconnaît pour ce programme.
</ResponseField>

<ResponseField name="roles" type="string[]">
  Noms de rôles de compte décodés. Utilisez-les comme clés dans le champ de filtre `accounts.roles` — ils correspondent exactement, sans conversion de casse.
</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>
