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

# Obtener IDL

> Obtén el IDL que estaba vigente para un programa de Solana en cualquier slot desde el catálogo que Parsed Events usa para decodificar instrucciones.

Los parámetros de ruta, el esquema de respuesta y los ejemplos de esta página se generan a partir de la definición de OpenAPI.

Obtener IDL devuelve el IDL de un programa correspondiente a un slot: la versión más reciente que se activó en `slot` o antes. `slot` no necesita coincidir exactamente con una versión, por lo que puedes pasar cualquier punto del historial. Para obtener una versión específica, pasa su `slot` desde [Listar versiones de IDL](https://www.helius.dev/docs/es/api-reference/parsed-events/idl-versions.md).

El IDL proviene del mismo catálogo que Parsed Events y [Parsed Streams](https://www.helius.dev/docs/es/parsed-streams.md) usan para decodificar instrucciones. El [explorador Orb](https://www.helius.dev/docs/es/orb/explore-programs.md) usa estos endpoints para mostrar los IDL de los programas.

## Casos de uso

* **Decodifica el historial con la interfaz correcta.** Pasa el slot de una transacción para obtener el IDL que estaba vigente cuando se ejecutó. Los programas cambian sus instrucciones y cuentas con el tiempo, por lo que el IDL actual puede interpretar incorrectamente las transacciones anteriores.
* **Encuentra los nombres exactos para los filtros.** [Escanear el historial de transacciones](https://www.helius.dev/docs/es/api-reference/parsed-events/scan.md) `match.programs[].instructions` acepta los nombres de las instrucciones tal como aparecen en el IDL.
* **Revisa los cambios de la interfaz.** Obtén dos versiones y compara sus `instructions` para ver qué añadió o eliminó una actualización. Consulta el ejemplo en [Listar versiones de IDL](https://www.helius.dev/docs/es/api-reference/parsed-events/idl-versions.md#ejemplo-detectar-una-nueva-versión-de-idl).

## Formatos de IDL

La respuesta es el documento IDL tal como está almacenado. Los programas del catálogo usan uno de dos formatos de Anchor, y las versiones de un mismo programa pueden usar ambos. Comprueba qué formato recibiste antes de leerlo:

| | Anchor heredado (anterior a 0.30) | Anchor 0.30+ |
| - | - | - |
| Nombre y versión del programa | `name` e `version` de nivel superior | `metadata.name` e `metadata.version` |
| Dirección del programa | Sin `address` de nivel superior | `address` de nivel superior |
| Discriminador de instrucción | No incluido | `instructions[].discriminator` |
| Indicadores de cuentas de instrucciones | `isMut`, `isSigner` | `writable`, `signer` |

Ambos formatos tienen `instructions`. La mayoría de los IDL también tienen `accounts`, `types` e `errors`, y muchos tienen `events`.

## Créditos

Cada solicitud cuesta **10 créditos** y está disponible en todos los planes. Consulta [Créditos](https://www.helius.dev/docs/es/billing/credits.md#eventos-analizados).

## Errores

| Estado | Cuándo ocurre |
| - | - |
| `400` | `programId` no es una dirección base58 válida o `slot` no es un entero de 64 bits sin signo. |
| `401` | Falta la clave de API o no es válida. El cuerpo es texto sin formato: `Unauthorized`. |
| `404` | El catálogo no tiene ningún IDL para el programa o ninguna versión estaba activa en `slot` o antes. |

Otros errores devuelven un cuerpo JSON con un mensaje `error`, como `{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}`.

## Parámetros de la solicitud

**programId** `string` *required*

Dirección del programa codificada en base58.

**slot** `number` *required*

Slot que se buscará. No necesita coincidir con el slot de activación de una versión. Pasa un `slot` de Listar versiones de IDL para obtener esa versión exacta, o el slot de una transacción para obtener el IDL que estaba vigente cuando se ejecutó.


## OpenAPI

````yaml es/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}/{slot}
openapi: 3.0.3
info:
  title: Eventos analizados
  version: 0.1.0
  description: >-
    Analiza transacciones de Solana y el historial de transacciones analizadas
    con Eventos analizados.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}/{slot}:
    get:
      tags:
        - Eventos analizados
      summary: Obtener IDL
      description: >-
        Obtén la IDL vigente para un programa en un slot, es decir, la versión
        más reciente activada en `slot` o antes.
      operationId: getIdlParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - name: slot
          in: path
          required: true
          description: >-
            Slot que quieres consultar. No tiene que coincidir con el slot de
            activación de una versión. Pasa un `slot` de Listar versiones de IDL
            para obtener esa versión exacta o el slot de una transacción para
            obtener la IDL vigente cuando se ejecutó.
          schema:
            type: integer
            format: uint64
            minimum: 0
            example: 205509752
      responses:
        '200':
          description: >-
            El documento IDL tal como está almacenado. Se usan tanto el formato
            heredado de Anchor como el formato de Anchor 0.30+, así que
            comprueba cuál recibiste antes de leerlo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idl'
              examples:
                Legacy Anchor IDL:
                  summary: >-
                    Kamino Lend en el slot 182747476 (reducido a una instrucción
                    y un error)
                  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 en el slot 454326107 (reducido a una instrucción y
                    un error)
                  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: >-
            El catálogo no tiene una IDL para el programa o no había ninguna
            versión activa en `slot` o antes.
          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: Dirección del programa, codificada en base58.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    Idl:
      type: object
      additionalProperties: true
      description: >-
        Un documento IDL devuelto tal como está almacenado. Se usan dos
        formatos:


        - **Anchor heredado** (anterior a 0.30): `name` y `version` en el nivel
        superior. Las cuentas de las instrucciones usan `isMut` e `isSigner`.

        - **Anchor 0.30+**: `address` y `metadata` (`name`, `version`, `spec`,
        `description`) en el nivel superior. Las instrucciones incluyen un
        `discriminator` y las cuentas de las instrucciones usan `writable` y
        `signer`.


        Ambos formatos tienen `instructions`. La mayoría de las IDL también
        tienen `accounts`, `types` y `errors`, y muchas tienen `events`. Las
        versiones de un programa pueden usar formatos diferentes.
    ErrorResponse:
      type: object
      description: Respuesta de error de la solicitud.
      properties:
        error:
          type: string
          description: Mensaje de error.
  responses:
    IdlBadRequest:
      description: >-
        `programId` no es una dirección válida o `slot` no es un entero sin
        signo 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: >-
        Falta la clave de API o no es válida. El cuerpo está en texto sin
        formato.
      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.