> ## 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 を取得

> 命令のデコードに Parsed Events が使用するカタログから、任意のスロット時点で Solana プログラムに適用されていた IDL を取得します。

このページのパスパラメータ、レスポンススキーマ、例は、OpenAPI 定義から生成されています。

「IDL を取得」は、指定したスロット時点のプログラムの IDL、つまり `slot` 以前に有効になった最新バージョンを返します。`slot` はバージョンと完全に一致する必要はないため、履歴上の任意の時点を指定できます。特定のバージョンを取得するには、[IDL バージョン一覧](https://www.helius.dev/docs/ja/api-reference/parsed-events/idl-versions.md)にあるそのバージョンの `slot` を指定します。

IDL は、Parsed Events と [Parsed Streams](https://www.helius.dev/docs/ja/parsed-streams.md) が命令のデコードに使用するものと同じカタログから取得されます。[Orb エクスプローラー](https://www.helius.dev/docs/ja/orb/explore-programs.md)は、これらのエンドポイントを使用してプログラムの IDL を表示します。

## ユースケース

* **適切なインターフェースで履歴をデコードします。** トランザクションのスロットを指定すると、その実行時に有効だった IDL を取得できます。プログラムの命令やアカウントは時間の経過とともに変わるため、現在の IDL では古いトランザクションを誤って解釈する可能性があります。
* **フィルター用の正確な名前を確認します。** [トランザクション履歴をスキャン](https://www.helius.dev/docs/ja/api-reference/parsed-events/scan.md)の `match.programs[].instructions` は、IDL に記載されている命令名を受け付けます。
* **インターフェースの変更を確認します。** 2 つのバージョンを取得して `instructions` を比較すると、アップグレードで追加または削除された内容を確認できます。[IDL バージョン一覧](https://www.helius.dev/docs/ja/api-reference/parsed-events/idl-versions.md#例：新しい-idl-バージョンを検出する)の例を参照してください。

## IDL 形式

レスポンスは、保存されている IDL ドキュメントそのものです。カタログ内のプログラムは 2 種類の Anchor 形式のいずれかを使用しており、1 つのプログラムの各バージョンで両方の形式が使われる場合もあります。内容を読み取る前に、受け取った形式を確認してください。

| | 従来の Anchor（0.30 より前） | Anchor 0.30+ |
| - | - | - |
| プログラム名とバージョン | トップレベルの `name` と `version` | `metadata.name` と `metadata.version` |
| プログラムアドレス | トップレベルの `address` なし | トップレベルの `address` |
| 命令ディスクリミネーター | 含まれません | `instructions[].discriminator` |
| 命令アカウントフラグ | `isMut`、`isSigner` | `writable`、`signer` |

どちらの形式にも `instructions` があります。ほとんどの IDL には `accounts`、`types`、`errors` もあり、多くの IDL には `events` もあります。

## クレジット

各リクエストには **10 クレジット**が必要で、すべてのプランで利用できます。[クレジット](https://www.helius.dev/docs/ja/billing/credits.md#parsed-events)を参照してください。

## エラー

| ステータス | 発生条件 |
| - | - |
| `400` | `programId` が有効な base58 アドレスではないか、`slot` が符号なし 64 ビット整数ではありません。 |
| `401` | API キーがないか、無効です。本文はプレーンテキストです：`Unauthorized`。 |
| `404` | カタログにそのプログラムの IDL がないか、`slot` 以前に有効だったバージョンがありません。 |

その他のエラーは、`{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}` などの `error` メッセージを含む JSON 本文を返します。

## リクエストパラメータ

**programId** `string` *required*

base58 でエンコードされたプログラムアドレスです。

**slot** `number` *required*

検索するスロットです。バージョンの有効化スロットと一致する必要はありません。特定のバージョンを取得するには「IDL バージョン一覧」の `slot` を指定し、トランザクションの実行時に有効だった IDL を取得するにはそのトランザクションのスロットを指定します。


## OpenAPI

````yaml ja/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}/{slot}
openapi: 3.0.3
info:
  title: 解析されたイベント
  version: 0.1.0
  description: Solanaトランザクションと解析されたトランザクション履歴を、解析されたイベントで解析します。
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}/{slot}:
    get:
      tags:
        - 解析済みイベント
      summary: IDL の取得
      description: 指定したスロットでプログラムに適用されていた IDL を取得します。これは、`slot` 以前に有効化された最新バージョンです。
      operationId: getIdlParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - name: slot
          in: path
          required: true
          description: >-
            検索するスロットです。バージョンの有効化スロットと一致する必要はありません。IDL バージョンの一覧表示で得られた `slot`
            を渡すとそのバージョンを取得でき、トランザクションのスロットを渡すと実行時に適用されていた IDL を取得できます。
          schema:
            type: integer
            format: uint64
            minimum: 0
            example: 205509752
      responses:
        '200':
          description: >-
            保存された形式のままの IDL ドキュメントです。従来の Anchor 形式と Anchor 0.30+
            形式の両方が存在するため、読み取る前にどちらを受け取ったか確認してください。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idl'
              examples:
                Legacy Anchor IDL:
                  summary: スロット 182747476 の Kamino Lend（命令 1 件とエラー 1 件に省略）
                  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: スロット 454326107 の Pump AMM（命令 1 件とエラー 1 件に省略）
                  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: カタログにこのプログラムの IDL がないか、`slot` 以前に有効なバージョンがありません。
          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: base58 でエンコードされたプログラムアドレスです。
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    Idl:
      type: object
      additionalProperties: true
      description: >-
        保存された形式のまま返される IDL ドキュメントです。次の 2 つの形式があります。


        - **従来の Anchor**（0.30 より前）：トップレベルに `name` と `version` があります。命令アカウントでは
        `isMut` と `isSigner` を使用します。

        - **Anchor 0.30+**：トップレベルに `address` と
        `metadata`（`name`、`version`、`spec`、`description`）があります。命令には
        `discriminator` が含まれ、命令アカウントでは `writable` と `signer` を使用します。


        どちらの形式にも `instructions` があります。ほとんどの IDL には `accounts`、`types`、`errors`
        もあり、多くには `events` があります。同じプログラムでも、バージョンごとに異なる形式が使用される場合があります。
    ErrorResponse:
      type: object
      description: リクエストレベルのエラーレスポンス。
      properties:
        error:
          type: string
          description: エラーメッセージ。
  responses:
    IdlBadRequest:
      description: '`programId` が有効なアドレスでないか、`slot` が符号なし 64 ビット整数ではありません。'
      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: API キーがないか、無効です。本文はプレーンテキストです。
      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.