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

# IDL abrufen

> Rufe die IDL ab, die für ein Solana-Programm an einem beliebigen slot gültig war. Sie stammt aus dem Katalog, den Parsed Events zum Dekodieren von Anweisungen verwendet.

Die Pfadparameter, das response-Schema und die Beispiele auf dieser Seite werden aus der OpenAPI-Definition generiert.

Get IDL gibt die IDL eines Programms zum Stand eines slots zurück: die neueste Version, die bei oder vor `slot` aktiv wurde. `slot` muss keiner Version exakt entsprechen. Du kannst also einen beliebigen Zeitpunkt in der Vergangenheit angeben. Um eine bestimmte Version abzurufen, übergib ihren `slot` aus [IDL-Versionen auflisten](https://www.helius.dev/docs/de/api-reference/parsed-events/idl-versions.md).

Die IDL stammt aus demselben Katalog, den Parsed Events und [Parsed Streams](https://www.helius.dev/docs/de/parsed-streams.md) zum Dekodieren von Anweisungen verwenden. Der [Orb Explorer](https://www.helius.dev/docs/de/orb/explore-programs.md) verwendet diese endpoints, um Programm-IDLs anzuzeigen.

## Anwendungsfälle

* **Verlauf mit der richtigen Schnittstelle dekodieren.** Übergib den slot einer Transaktion, um die IDL abzurufen, die bei ihrer Ausführung aktiv war. Programme ändern im Lauf der Zeit ihre Anweisungen und Konten. Daher kann die aktuelle IDL ältere Transaktionen falsch interpretieren.
* **Exakte Namen für Filter ermitteln.** [Transaktionsverlauf durchsuchen](https://www.helius.dev/docs/de/api-reference/parsed-events/scan.md) `match.programs[].instructions` akzeptiert Anweisungsnamen in der Schreibweise der IDL.
* **Änderungen an der Schnittstelle prüfen.** Rufe zwei Versionen ab und vergleiche ihre `instructions`, um zu sehen, was bei einem Upgrade hinzugefügt oder entfernt wurde. Sieh dir das Beispiel unter [IDL-Versionen auflisten](https://www.helius.dev/docs/de/api-reference/parsed-events/idl-versions.md#beispiel-eine-neue-idl-version-erkennen) an.

## IDL-Formate

Die response enthält das IDL-Dokument so, wie es gespeichert ist. Programme im Katalog verwenden eines von zwei Anchor-Formaten. Die Versionen eines Programms können beide verwenden. Prüfe vor dem Lesen, welches Format du erhalten hast:

| | Legacy Anchor (vor 0.30) | Anchor 0.30+ |
| - | - | - |
| Programmname und -version | `name` und `version` auf oberster Ebene | `metadata.name` und `metadata.version` |
| Programmadresse | Kein `address` auf oberster Ebene | `address` auf oberster Ebene |
| Anweisungsdiskriminator | Nicht enthalten | `instructions[].discriminator` |
| Flags für Anweisungskonten | `isMut`, `isSigner` | `writable`, `signer` |

Beide Formate enthalten `instructions`. Die meisten IDLs enthalten außerdem `accounts`, `types` und `errors`. Viele enthalten auch `events`.

## Credits

Jeder request kostet **10 Credits** und ist in allen Tarifen verfügbar. Weitere Informationen findest du unter [Credits](https://www.helius.dev/docs/de/billing/credits.md#geparste-events).

## Fehler

| Status | Bedingung |
| - | - |
| `400` | `programId` ist keine gültige Base58-Adresse oder `slot` ist keine vorzeichenlose 64-Bit-Ganzzahl. |
| `401` | Der API key fehlt oder ist ungültig. Der Inhalt besteht aus Klartext: `Unauthorized`. |
| `404` | Der Katalog enthält keine IDL für das Programm oder bei beziehungsweise vor `slot` war keine Version aktiv. |

Andere Fehler geben einen JSON-Inhalt mit einer `error`-Meldung zurück, zum Beispiel `{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}`.

## Request-Parameter

**programId** `string` *required*

Programmadresse, Base58-kodiert.

**slot** `number` *required*

Nachzuschlagender slot. Er muss nicht dem Aktivierungs-slot einer Version entsprechen. Übergib einen `slot` aus „IDL-Versionen auflisten“, um genau diese Version abzurufen. Übergib alternativ den slot einer Transaktion, um die IDL abzurufen, die bei ihrer Ausführung gültig war.


## OpenAPI

````yaml de/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}/{slot}
openapi: 3.0.3
info:
  title: Geparste Events
  version: 0.1.0
  description: >-
    Parse Solana-Transaktionen und den geparsten Transaktionsverlauf mit
    geparsten Events.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}/{slot}:
    get:
      tags:
        - Parsed Events
      summary: IDL abrufen
      description: >-
        Ruft die IDL ab, die für ein Programm bei einem slot gültig war. Das ist
        die neueste Version, die bei oder vor `slot` aktiviert wurde.
      operationId: getIdlParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - name: slot
          in: path
          required: true
          description: >-
            Der nachzuschlagende slot. Er muss nicht dem Aktivierungs-slot einer
            Version entsprechen. Übergib einen `slot` aus „IDL-Versionen
            auflisten“, um genau diese Version abzurufen, oder den slot einer
            Transaktion, um die IDL abzurufen, die bei ihrer Ausführung gültig
            war.
          schema:
            type: integer
            format: uint64
            minimum: 0
            example: 205509752
      responses:
        '200':
          description: >-
            Das IDL-Dokument in der gespeicherten Form. Es kommen sowohl das
            alte Anchor-Format als auch das Format von Anchor 0.30+ vor. Prüfe
            daher vor dem Lesen, welches Format du erhalten hast.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idl'
              examples:
                Legacy Anchor IDL:
                  summary: >-
                    Kamino Lend bei slot 182747476 (auf eine Anweisung und einen
                    Fehler gekürzt)
                  value:
                    name: kamino_lending
                    version: 0.1.0
                    instructions:
                      - name: refreshObligation
                        accounts:
                          - name: lendingMarket
                            isMut: false
                            isSigner: false
                          - name: obligation
                            isMut: true
                            isSigner: false
                        args: []
                    errors:
                      - code: 6000
                        name: InvalidMarketAuthority
                        msg: Market authority is invalid
                Anchor 0.30+ IDL:
                  summary: >-
                    Pump AMM bei slot 454326107 (auf eine Anweisung und einen
                    Fehler gekürzt)
                  value:
                    address: pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
                    metadata:
                      name: pump_amm
                      version: 0.1.0
                      spec: 0.1.0
                      description: Created with Anchor
                    instructions:
                      - name: toggle_boost
                        discriminator:
                          - 117
                          - 161
                          - 160
                          - 74
                          - 223
                          - 137
                          - 118
                          - 99
                        accounts:
                          - name: admin
                            signer: true
                            relations:
                              - global_config
                          - name: global_config
                            writable: true
                        args:
                          - name: enabled
                            type: bool
                    errors:
                      - code: 6000
                        name: FeeBasisPointsExceedsMaximum
        '400':
          $ref: '#/components/responses/IdlBadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            Der Katalog enthält keine IDL für das Programm oder bei
            beziehungsweise vor `slot` war keine Version aktiv.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      no IDL found for program
                      KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before
                      slot 1
components:
  parameters:
    ProgramId:
      name: programId
      in: path
      required: true
      description: Programm-Adresse, Base58-codiert.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    Idl:
      type: object
      additionalProperties: true
      description: >-
        Ein IDL-Dokument, das in der gespeicherten Form zurückgegeben wird. Es
        kommen zwei Formate vor:


        - **Altes Anchor-Format** (vor 0.30): `name` und `version` auf der
        obersten Ebene. Anweisungskonten verwenden `isMut` und `isSigner`.

        - **Anchor 0.30+**: `address` und `metadata` (`name`, `version`, `spec`,
        `description`) auf der obersten Ebene. Anweisungen enthalten einen
        `discriminator`, und Anweisungskonten verwenden `writable` und `signer`.


        Beide Formate enthalten `instructions`. Die meisten IDLs enthalten
        außerdem `accounts`, `types` und `errors`, viele auch `events`. Die
        Versionen eines Programms können unterschiedliche Formate verwenden.
    ErrorResponse:
      type: object
      description: Response mit einem Fehler auf request-Ebene.
      properties:
        error:
          type: string
          description: Fehlermeldung.
  responses:
    IdlBadRequest:
      description: >-
        `programId` ist keine gültige Adresse oder `slot` ist keine
        vorzeichenlose 64-Bit-Ganzzahl.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            Invalid program ID:
              value:
                error: 'invalid program id: notanaddress: String is the wrong size'
            Invalid slot:
              value:
                error: 'invalid activation slot: abc: invalid digit found in string'
    Unauthorized:
      description: Der API key fehlt oder ist ungültig. Der Body enthält Klartext.
      content:
        text/plain:
          schema:
            type: string
          examples:
            default:
              value: Unauthorized
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.