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

> Listen Sie die decodierten Anweisungsnamen, Ereignisse und Kontorollen eines Programms auf, damit Sie Parsed Streams-Filter erstellen können, die tatsächlich übereinstimmen.

Der häufigste Fehler bei einer API mit Filtern ist ein Filter, der gültig ist, aber nichts übereinstimmt, normalerweise ein vermuteter Anweisungs- oder Rollenname. `describeProgram` verhindert dies, indem es die genauen Namen zurückgibt, mit denen der Matcher vergleicht — die decodierten Anweisungsnamen, Ereignisnamen und Kontorollen für eines der über 3.600 Programme im Katalog.

`describeProgram` ist eine JSON-RPC-Methode, die über Ihre Parsed Streams-WebSocket-Verbindung bei `wss://fs-beta.helius-rpc.com/?api-key=<API_KEY>` gesendet wird, die gleiche Verbindung, bei der Sie sich anmelden.

Empfohlener Ablauf: `describeProgram`, um die genauen Anweisungs- und Rollennamen zu erhalten, den Filter mit diesen Namen zu erstellen und dann [abonnieren](/docs/de/api-reference/parsed-streams/parsedtransactionsubscribe). Der Leitfaden [Track Jupiter Swaps](/docs/de/parsed-streams/guides/track-jupiter-swaps) führt Sie von Anfang bis Ende durch.

## Body

<ParamField body="params" type="array" required>
  <Expandable title="Query" defaultOpen>
    <ParamField body="program" type="string" required>
      Eine Programmadresse (base58) oder ein Katalogname. **Bevorzugen Sie die Adresse**: Namen können in verschiedenen Programmversionen mehrdeutig sein (mehr als ein Katalogeintrag ist mit dem Namen `jupiter` gekennzeichnet, und eine Namenssuche kann auf den älteren verweisen). Wenn Sie nach Namen suchen, überprüfen Sie, ob `result.id` das Programm ist, das Sie abonnieren möchten.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="id" type="string">
  Die Adresse des Programms (base58).
</ResponseField>

<ResponseField name="name" type="string">
  Der Katalogname des Programms.
</ResponseField>

<ResponseField name="instructions" type="string[]">
  Decodierte Anweisungsnamen, genau wie der Matcher sie vergleicht. Verwenden Sie diese im `instructionNames` Filterfeld.
</ResponseField>

<ResponseField name="events" type="string[]">
  Ereignisnamen, die der Parser für dieses Programm erkennt.
</ResponseField>

<ResponseField name="roles" type="string[]">
  Decodierte Kontorollennamen. Verwenden Sie diese als Schlüssel im `accounts.roles` Filterfeld — sie stimmen genau überein, ohne Groß-/Kleinschreibung zu beachten.
</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>
