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

# Obtenir l’IDL

> Obtenez l’IDL qui était en vigueur pour un programme Solana à n’importe quel slot, à partir du catalogue utilisé par Parsed Events pour décoder les instructions.

Les paramètres de chemin, le schéma de réponse et les exemples de cette page sont générés à partir de la définition OpenAPI.

Get IDL renvoie l’IDL d’un programme à un slot donné : la dernière version devenue active au niveau de `slot` ou avant. `slot` ne doit pas nécessairement correspondre exactement à une version ; vous pouvez donc indiquer n’importe quel point de l’historique. Pour récupérer une version précise, transmettez son `slot` depuis [Lister les versions d’IDL](https://www.helius.dev/docs/fr/api-reference/parsed-events/idl-versions.md).

L’IDL provient du même catalogue que celui utilisé par Parsed Events et [Parsed Streams](https://www.helius.dev/docs/fr/parsed-streams.md) pour décoder les instructions. L’[explorateur Orb](https://www.helius.dev/docs/fr/orb/explore-programs.md) utilise ces endpoints pour afficher les IDL des programmes.

## Cas d’utilisation

* **Décodez l’historique avec la bonne interface.** Transmettez le slot d’une transaction pour obtenir l’IDL qui était actif lors de son exécution. Les instructions et les comptes des programmes évoluent au fil du temps. L’IDL actuel peut donc interpréter incorrectement les anciennes transactions.
* **Trouvez les noms exacts à utiliser dans les filtres.** [Analyser l’historique des transactions](https://www.helius.dev/docs/fr/api-reference/parsed-events/scan.md) `match.programs[].instructions` accepte les noms d’instructions tels qu’ils figurent dans l’IDL.
* **Examinez les modifications apportées à l’interface.** Récupérez deux versions et comparez leurs `instructions` pour voir ce qu’une mise à niveau a ajouté ou supprimé. Consultez l’exemple dans [Lister les versions d’IDL](https://www.helius.dev/docs/fr/api-reference/parsed-events/idl-versions.md#exemple--détecter-une-nouvelle-version-didl).

## Formats d’IDL

La réponse correspond au document IDL tel qu’il est stocké. Les programmes du catalogue utilisent l’un des deux formats Anchor, et les versions d’un même programme peuvent utiliser les deux. Vérifiez le format reçu avant de le lire :

| | Ancien format Anchor (avant la version 0.30) | Anchor 0.30+ |
| - | - | - |
| Nom et version du programme | `name` et `version` au niveau racine | `metadata.name` et `metadata.version` |
| Adresse du programme | Aucun `address` au niveau racine | `address` au niveau racine |
| Discriminateur d’instruction | Non inclus | `instructions[].discriminator` |
| Indicateurs de compte de l’instruction | `isMut`, `isSigner` | `writable`, `signer` |

Les deux formats comportent `instructions`. La plupart des IDL comportent également `accounts`, `types` et `errors`, et beaucoup comportent `events`.

## Crédits

Chaque requête coûte **10 crédits** et est disponible avec toutes les offres. Consultez la page [Crédits](https://www.helius.dev/docs/fr/billing/credits.md#événements-analysés).

## Erreurs

| Statut | Quand |
| - | - |
| `400` | `programId` n’est pas une adresse base58 valide, ou `slot` n’est pas un entier non signé de 64 bits. |
| `401` | La clé API est absente ou non valide. Le corps est en texte brut : `Unauthorized`. |
| `404` | Le catalogue ne contient aucun IDL pour le programme, ou aucune version n’était active au niveau de `slot` ou avant. |

Les autres erreurs renvoient un corps JSON contenant un message `error`, tel que `{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}`.

## Paramètres de la requête

**programId** `string` *required*

Adresse du programme, encodée en base58.

**slot** `number` *required*

Slot à rechercher. Il ne doit pas nécessairement correspondre au slot d’activation d’une version. Transmettez un `slot` depuis Lister les versions d’IDL pour obtenir cette version précise, ou le slot d’une transaction pour obtenir l’IDL en vigueur lors de son exécution.


## OpenAPI

````yaml fr/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}/{slot}
openapi: 3.0.3
info:
  title: Événements Analysés
  version: 0.1.0
  description: >-
    Analysez les transactions Solana et l'historique des transactions analysées
    avec les Événements Analysés.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}/{slot}:
    get:
      tags:
        - Événements analysés
      summary: Obtenir l’IDL
      description: >-
        Obtient l’IDL qui était en vigueur pour un programme à un slot donné,
        c’est-à-dire la dernière version activée au niveau de `slot` ou avant
        celui-ci.
      operationId: getIdlParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - name: slot
          in: path
          required: true
          description: >-
            Slot à rechercher. Il ne doit pas nécessairement correspondre au
            slot d’activation d’une version. Transmettez un `slot` provenant de
            Répertorier les versions de l’IDL pour obtenir cette version
            précise, ou le slot d’une transaction pour obtenir l’IDL en vigueur
            lors de son exécution.
          schema:
            type: integer
            format: uint64
            minimum: 0
            example: 205509752
      responses:
        '200':
          description: >-
            Document IDL tel qu’il est stocké. Le format Anchor historique et le
            format Anchor 0.30+ sont tous deux utilisés. Vérifiez donc le format
            reçu avant de lire le document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idl'
              examples:
                Legacy Anchor IDL:
                  summary: >-
                    Kamino Lend au slot 182747476 (limité à une instruction et
                    une erreur)
                  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 au slot 454326107 (limité à une instruction et une
                    erreur)
                  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: >-
            Le catalogue ne contient aucune IDL pour le programme, ou aucune
            version n’était active au niveau de `slot` ou avant celui-ci.
          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: Adresse du programme, encodée en base58.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    Idl:
      type: object
      additionalProperties: true
      description: >-
        Un document IDL, renvoyé tel qu’il est stocké. Deux formats sont
        utilisés :


        - **Anchor historique** (avant la version 0.30) : `name` et `version` au
        niveau supérieur. Les comptes d’instruction utilisent `isMut` et
        `isSigner`.

        - **Anchor 0.30+** : `address` et `metadata` (`name`, `version`, `spec`,
        `description`) au niveau supérieur. Les instructions contiennent un
        `discriminator`, et les comptes d’instruction utilisent `writable` et
        `signer`.


        Les deux formats comportent `instructions`. La plupart des IDL
        comportent également `accounts`, `types` et `errors`, et beaucoup
        comportent `events`. Les versions d’un même programme peuvent utiliser
        des formats différents.
    ErrorResponse:
      type: object
      description: Réponse d'erreur au niveau de la demande.
      properties:
        error:
          type: string
          description: Message d'erreur.
  responses:
    IdlBadRequest:
      description: >-
        `programId` n’est pas une adresse valide, ou `slot` n’est pas un entier
        non signé de 64 bits.
      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: La clé API est absente ou non valide. Le corps est en texte brut.
      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.