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

# Interroger avec GraphQL

> Interrogez les événements analysés avec GraphQL, y compris les champs de transfert typé, de résumé et d'instruction.

## Aperçu

L'interface GraphQL expose les deux méthodes d'événements analysés : analyser les transactions via `transactions` et l'historique des transactions analysées via `transactionsByAddress`. Envoyez des opérations GraphQL à `POST /v1/parsed-events/graphql`. Il renvoie le même modèle de transaction analysée que les [points de terminaison REST](/docs/fr/parsed-events/quickstart#référence-rest), tout en permettant aux clients de sélectionner uniquement les champs dont ils ont besoin.

GraphQL inclut `rawTransaction` uniquement lorsque le champ est sélectionné. Les charges utiles des analyseurs dynamiques restent des scalaires JSON, y compris l'instruction décodée `args`, l'exécution de la transaction `error`, le résumé `parsedData`, et `rawTransaction`.

## Point de terminaison

Envoyez des opérations GraphQL à `POST /v1/parsed-events/graphql`. Authentifiez-vous avec le paramètre de requête `api-key`.

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={"system"}
    const url = "https://mainnet.helius-rpc.com/v1/parsed-events/graphql?api-key=YOUR_API_KEY";

    const response = await fetch(url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        query: `query ParseTransactions($signatures: [String!]!) {
          transactions(signatures: $signatures, commitment: CONFIRMED) {
            signature
            parserStatus
          }
        }`,
        variables: {
          signatures: [
            "5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH",
          ],
        },
      }),
    });

    const data = await response.json();
    console.log(data);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={"system"}
    curl -X POST "https://mainnet.helius-rpc.com/v1/parsed-events/graphql?api-key=YOUR_API_KEY" \
      -H "content-type: application/json" \
      -d '{
        "query": "query ParseTransactions($signatures: [String!]!) { transactions(signatures: $signatures, commitment: CONFIRMED) { signature parserStatus } }",
        "variables": {
          "signatures": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]
        }
      }'
    ```
  </Tab>
</Tabs>

## Analyser les transactions

```graphql theme={"system"}
query ParseTransactions($signatures: [String!]!) {
  transactions(signatures: $signatures, commitment: CONFIRMED) {
    signature
    parserStatus
    parsed {
      slot
      blockTime
      fee
      feePayer
      transactionStatus
      nativeTransfers {
        fromUserAccount
        toUserAccount
        amount
      }
      tokenTransfers {
        fromUserAccount
        toUserAccount
        fromTokenAccount
        toTokenAccount
        rawTokenAmount
        decimals
        tokenStandard
        mint
      }
      summary {
        type
        description
        parsedData
      }
      instructions {
        instructionIndex
        innerInstructionIndex
        programId
        programName
        instructionName
        summary {
          type
          description
          parsedData
        }
        decoded {
          args
          accounts {
            name
            pubkey
            isSigner
            isWritable
          }
        }
      }
    }
    parserError {
      code
      message
    }
  }
}
```

Variables:

```json theme={"system"}
{
  "signatures": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]
}
```

## Historique des transactions analysées

```graphql theme={"system"}
query AddressHistory($address: String!) {
  transactionsByAddress(
    address: $address
    limit: 100
    sortOrder: DESC
    commitment: CONFIRMED
    filters: {
      slot: { gte: 300000000 }
    }
  ) {
    data {
      signature
      parserStatus
      parsed {
        slot
        blockTime
        nativeTransfers {
          fromUserAccount
          toUserAccount
          amount
        }
        tokenTransfers {
          fromUserAccount
          toUserAccount
          rawTokenAmount
          decimals
          mint
        }
      }
    }
    paginationToken
  }
}
```

Variables:

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52"
}
```

## Arguments de requête

### `transactions`

| Argument     | Type         | Par défaut  | Description                            |
| ------------ | ------------ | ----------- | -------------------------------------- |
| `signatures` | `[String!]!` | -           | Signatures de transactions à analyser. |
| `commitment` | `Commitment` | `CONFIRMED` | `CONFIRMED` ou `FINALIZED`.            |

### `transactionsByAddress`

| Argument          | Type                             | Par défaut  | Description                                                       |
| ----------------- | -------------------------------- | ----------- | ----------------------------------------------------------------- |
| `address`         | `String!`                        | -           | Adresse dont l'historique des transactions doit être récupéré.    |
| `limit`           | `Int`                            | `100`       | Nombre de transactions à retourner. Doit être entre `1` et `100`. |
| `beforeSignature` | `String`                         | -           | Retourner les transactions avant cette signature.                 |
| `afterSignature`  | `String`                         | -           | Retourner les transactions après cette signature.                 |
| `paginationToken` | `String`                         | -           | Curseur avec la forme `slot:transactionIndex`.                    |
| `sortOrder`       | `SortOrder`                      | `DESC`      | `ASC` ou `DESC`.                                                  |
| `commitment`      | `Commitment`                     | `CONFIRMED` | `CONFIRMED` ou `FINALIZED`.                                       |
| `filters`         | `AddressTransactionFiltersInput` | -           | Limites optionnelles `slot` et `time`.                            |

## Transactions brutes

Sélectionnez `rawTransaction` pour inclure le JSON de transaction d'origine :

```graphql theme={"system"}
query ParseWithRaw($signatures: [String!]!) {
  transactions(signatures: $signatures) {
    signature
    rawTransaction
    parsed {
      slot
    }
  }
}
```

Si `rawTransaction` n'est pas sélectionné, le service ne l'inclut pas dans la réponse.
