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

# Obter IDL

> Obtenha a IDL que estava em vigor para um programa da Solana em qualquer slot, usando o catálogo que o Parsed Events utiliza para decodificar instruções.

Os parâmetros de caminho, o esquema de resposta e os exemplos desta página são gerados a partir da definição OpenAPI.

Obter IDL retorna a IDL de um programa referente a um slot: a versão mais recente que entrou em vigor em ou antes de `slot`. `slot` não precisa corresponder exatamente a uma versão, portanto você pode passar qualquer ponto no histórico. Para buscar uma versão específica, passe o `slot` dela em [Listar versões da IDL](https://www.helius.dev/docs/pt-BR/api-reference/parsed-events/idl-versions.md).

A IDL vem do mesmo catálogo que o Parsed Events e o [Parsed Streams](https://www.helius.dev/docs/pt-BR/parsed-streams.md) usam para decodificar instruções. O [explorador Orb](https://www.helius.dev/docs/pt-BR/orb/explore-programs.md) usa esses endpoints para exibir as IDLs dos programas.

## Casos de uso

* **Decodifique o histórico com a interface correta.** Passe o slot de uma transação para obter a IDL que estava em vigor quando ela foi executada. Os programas alteram suas instruções e contas ao longo do tempo, portanto a IDL atual pode interpretar incorretamente transações mais antigas.
* **Encontre os nomes exatos para os filtros.** [Examinar o histórico de transações](https://www.helius.dev/docs/pt-BR/api-reference/parsed-events/scan.md) `match.programs[].instructions` aceita nomes de instruções exatamente como aparecem na IDL.
* **Analise alterações na interface.** Busque duas versões e compare os respectivos `instructions` para ver o que uma atualização adicionou ou removeu. Consulte o exemplo em [Listar versões da IDL](https://www.helius.dev/docs/pt-BR/api-reference/parsed-events/idl-versions.md#exemplo-detectar-uma-nova-versão-de-idl).

## Formatos de IDL

A resposta é o documento da IDL conforme armazenado. Os programas no catálogo usam um de dois formatos do Anchor, e as versões de um mesmo programa podem usar ambos. Verifique qual formato você recebeu antes de interpretá-lo:

| | Anchor legado (anterior à versão 0.30) | Anchor 0.30+ |
| - | - | - |
| Nome e versão do programa | `name` e `version` no nível superior | `metadata.name` e `metadata.version` |
| Endereço do programa | Sem `address` no nível superior | `address` no nível superior |
| Discriminador da instrução | Não incluído | `instructions[].discriminator` |
| Sinalizadores de conta da instrução | `isMut`, `isSigner` | `writable`, `signer` |

Ambos os formatos têm `instructions`. A maioria das IDLs também tem `accounts`, `types` e `errors`, e muitas têm `events`.

## Créditos

Cada solicitação custa **10 créditos** e está disponível em todos os planos. Consulte [Créditos](https://www.helius.dev/docs/pt-BR/billing/credits.md#eventos-analisados).

## Erros

| Status | Quando |
| - | - |
| `400` | `programId` não é um endereço base58 válido, ou `slot` não é um inteiro de 64 bits sem sinal. |
| `401` | A chave de API está ausente ou é inválida. O corpo está em texto simples: `Unauthorized`. |
| `404` | O catálogo não tem uma IDL para o programa, ou nenhuma versão estava ativa em ou antes de `slot`. |

Outros erros retornam um corpo JSON com uma mensagem `error`, como `{"error": "no IDL found for program KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD at or before slot 1"}`.

## Parâmetros da solicitação

**programId** `string` *required*

Endereço do programa, codificado em base58.

**slot** `number` *required*

Slot a ser consultado. Ele não precisa corresponder ao slot de ativação de uma versão. Passe um `slot` de Listar versões da IDL para obter essa versão exata, ou o slot de uma transação para obter a IDL que estava em vigor quando ela foi executada.


## OpenAPI

````yaml pt-BR/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}/{slot}
openapi: 3.0.3
info:
  title: Eventos Analisados
  version: 0.1.0
  description: >-
    Analise transações Solana e histórico de transações analisadas com Eventos
    Analisados.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}/{slot}:
    get:
      tags:
        - Eventos analisados
      summary: Obter IDL
      description: >-
        Obtém a IDL que estava em vigor para um programa em um slot, ou seja, a
        versão mais recente ativada no `slot` ou antes dele.
      operationId: getIdlParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
        - name: slot
          in: path
          required: true
          description: >-
            Slot a ser consultado. Ele não precisa corresponder ao slot de
            ativação de uma versão. Passe um `slot` de Listar versões de IDL
            para obter essa versão exata ou o slot de uma transação para obter a
            IDL que estava em vigor quando ela foi executada.
          schema:
            type: integer
            format: uint64
            minimum: 0
            example: 205509752
      responses:
        '200':
          description: >-
            O documento IDL conforme armazenado. Tanto o formato legado do
            Anchor quanto o formato do Anchor 0.30+ podem ocorrer, então
            verifique qual deles você recebeu antes de lê-lo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idl'
              examples:
                Legacy Anchor IDL:
                  summary: >-
                    Kamino Lend no slot 182747476 (reduzido a uma instrução e um
                    erro)
                  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 no slot 454326107 (reduzido a uma instrução e um
                    erro)
                  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: >-
            O catálogo não tem uma IDL para o programa ou nenhuma versão estava
            ativa no `slot` ou antes dele.
          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: Endereço do programa, codificado em base58.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    Idl:
      type: object
      additionalProperties: true
      description: >-
        Um documento IDL, retornado conforme armazenado. Há dois formatos:


        - **Anchor legado** (antes da versão 0.30): `name` e `version` no nível
        superior. As contas das instruções usam `isMut` e `isSigner`.

        - **Anchor 0.30+**: `address` e `metadata` (`name`, `version`, `spec`,
        `description`) no nível superior. As instruções têm um `discriminator`,
        e as contas das instruções usam `writable` e `signer`.


        Ambos os formatos têm `instructions`. A maioria das IDLs também tem
        `accounts`, `types` e `errors`, e muitas têm `events`. As versões de um
        mesmo programa podem usar formatos diferentes.
    ErrorResponse:
      type: object
      description: Request-level error response.
      properties:
        error:
          type: string
          description: Error message.
  responses:
    IdlBadRequest:
      description: >-
        `programId` não é um endereço válido ou `slot` não é um inteiro sem
        sinal 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: >-
        A chave de API está ausente ou é inválida. O corpo está em texto
        simples.
      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.